0

Im developing my own PHP Mysql site.

I used to fetch data by id like this : mysite.com/articles.php?id=12

now i want to change the url with slug:

mysite.com/articles/google-search

or

mysite.com/articles.php?article=google-search

I dont want to use id and numbers.

My table:

+----+---------------+---------+------------------------------------+
| id | title         | article |   urlslug                          |
+----+---------------+---------+------------------------------------+
| 12 | google search | xxxxxxx |   google-search                    |
| 13 | bing yahoo    | xxxxxxx |   bing-yahoo                       |
| 14 | friendly seo  | xxxxxxx |   friendly-seo                     |
+-------------------------------------------------------------------+

I used the below code to get data by id:

$id = $_GET['id'];
$id = mysqli_real_escape_string($conn,$id);
$query = "SELECT * FROM `table` WHERE `id`='" . $id . "'";
$result = mysqli_query($conn,$query);

while($row = mysqli_fetch_array($result)) {
echo ($row['title']);
echo ($row['article']);    }

I tried the above code by substituting urlslug it says Invalid ID specified. I googled and even searched in stack questions i didnt get any help. Please assist me. Thanks in advance.

1
  • can you echo echo $_GET['id']; Commented Dec 2, 2015 at 9:13

2 Answers 2

1

If url is like this mysite.com/articles.php?article=google-search then instead of id get the article from url and change the condition to urlslug instead of id.

$slug = $_GET['article'];
$slug = mysqli_real_escape_string($conn,$slug);
$query = "SELECT * FROM `table` WHERE `urlslug`='" . $slug. "'";
$result = mysqli_query($conn,$query);

 //Since  slug is unique you will get only 1 result so no need to loop

 $row = mysqli_fetch_array($result);
 echo $row['title'];
 echo $row['article'];    
Sign up to request clarification or add additional context in comments.

5 Comments

slug must be unique. so you don't need to bother about number of articles.
bro in christ, im totally new to this. i tried in the way u suggested but it says invalid id specified
@dan Which means you have check the id some where in your application. php doesn't provide such a message invalid id specified so find that in your code.. which was not mentioned in your question. I think its a very small problem.
invalid id specified have you given such a message in any part of your code...??? please check.
0

You can use the following rule in Root/.htaccess

RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^articles/([^/]+)/?$ /articles.php?id=$1 [NC,L] 

This will rewrite

example.com/articles/123

to

example.com/articles.php?id=123

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.