Shashank amin
Shashank amin

Reputation: 151

PHP logic problem

I have a sql table images which has columns id,imagePath,caption``count.

To view those images what i do is, I ask for the page number and query the iamge

$limit=$page-1;
$sel=$mysqli->prepare("SELECT id,imagePath,caption,count from images".
                        " order by id desc limit ".$limit.",1");

This shows images correctly.

But i have another function which shows 4 random thumbnail of that images out of the total images from the database.With those images i also give a href tag so that when a user clicks on that link he is taken to the page of that image.

Now the problem is with those links. Suppose i have images like these in the database

id=1
id=2
id=3
id=4
id=5

To find the page number of the specific id what i do is

$newid=$idOfTheCurrentImage-($idOfTheLastImage-1);

Using this logic i get

id=1  page=5
id=2  page=4
id=3  page=3
id=4  page=2
id=5  page=1

This gives correct results if all the ids are in order. But if anyone of the id is deleted this logic fails.

Is there any other solution?

Upvotes: 1

Views: 323

Answers (2)

nikc.org
nikc.org

Reputation: 16962

I would suggest using something other than a running counter as the page-denominator. As you say, it is subject to change, or fail if a number is missing in between.

Your images have a caption. You could create a "slug" from that and use that as your page-denominator.

No more quirky maths or murky logic when creating links, no more disappearing pages.

Upvotes: 1

Edgar Villegas Alvarado
Edgar Villegas Alvarado

Reputation: 18344

You could do the following:

  • Adding another field, a 'sequential number' , so you have pairs ($id, $seq_number), and do your calculations as you did with $seq_number. Don't forget to update the sequential number field it on delete.

  • Get all the id's on an array, and calculate over there. In this option, the $id value is not used in the calculations, you use only the array indexes.

Hope this helps. Cheers

Upvotes: 1

Related Questions