I've recently developed a CMS from scratch using PHP and MySQL running through Apache/phpmyadmin on a localhost.
Everything has gone very smoothly so far, visitors may view articles and navigate through the page successfully. Admins (created by an Admin on the CMS or in the MySQL schema) can log in, view articles, edit articles, view and edit users and delete articles.
My problem is that when articles are deleted, a next/previous button at the bottom (of any existing articles) with a function of
<?php if ($id != 1) : ?>
<a href="article.php?id=<?php echo $id - 1; ?>">Previous Article</a>
<?php endif; ?>
which looks for a previously existing article with x-id, however since this article was deleted it no longer exists. Is there any way to remove the article id as the article is deleted, thus freeing up that article id again?
I can manually reset the id to 0,1,2,3... etc. in the schema on phpmyadmin, but I'd like to apply some logic in order to make this system work flawlessly.
Many thanks for you help, if I get time I'll upload the CMS to my web server so that it can be viewed freely.
~Myles
EDIT: a video can be viewed here: http://youtu.be/F8LU1jei3E4
You can do this by querying based on id
.
Previous article:
SELECT * FROM articles WHERE id < ? ORDER BY id DESC LIMIT 1
Next article:
SELECT * FROM articles WHERE id > ? ORDER BY id LIMIT 1
So for your pagination it is always better to play with SQL's LIMIT. Instead of using your id for a query like that:
'SELECT * FROM articles WHERE article_id=' . $id
(it is not a safe query, it's just to show you)
So instead of this query, yours should look like this one:
'SELECT * FROM articles LIMIT ' . $id . ', 1;'
This will not return you the article with the id $id, but the $id'th article. Hope it's clear for you.