Jump to content

How to stop array id as variable resetting


db9

Recommended Posts

Hi, I think this is probably a logical error rather than a syntax one

 

I have a function that displays the first image in a photo album in large and all the photos in it as thumbnails. I have a next and previous button that allows you to scroll through them (in large) and by clicking a specific thumbnail you can load that picture in large. My problem is that the pictures are stored in an array and the one to be shown large is selected by $keyid.

 

My problem is that selecting a thumbnail resets the $keyid so that clicking next doesn't load the next image but the second. i.e. if you press the next arrow then click the 4th thumbnail and then click the next arrow again it loads the 2nd picture rather than the 5th as it should.

 

How can I avoid this happening?

 

This is my code:

generateThumbnails();

$act = 0;

$keyid = (isset($_GET['keyid']) ? $_GET['keyid']:'0');

$Picturecount = (count(glob("" . $dir . "*.jpg")))/2;

$thumb_selected = (isset($_GET['thumb']) ? $_GET['thumb']:'');

$picture_array = glob("$dir*");

if ($thumb_selected !==""){
$dirName  = substr($thumb_selected,0,strpos($thumb_selected,basename($thumb_selected)));
$thumbName = basename($thumb_selected);
$thumbFile = $dirName.$thumbName;
$selected = str_replace('_th.jpg','.jpg',$thumbFile);
foreach ($picture_array as $search){
$keyid = array_search($selected,$picture_array);
$large = $picture_array[$keyid];
}}

else{
if($keyid > (2*$Picturecount-1)){
$keyid = ($keyid - (2*$Picturecount));}
if($keyid < 0){
$keyid = (2*$Picturecount+$keyid);}
$large = $picture_array[$keyid];}

echo "

<tr><td><a href='?album=$album&keyid=" . ($_GET['keyid']-2) . "'>Previous</a></td><td></td><td align='right'><a href='?album=$album&keyid=" . ($_GET['keyid']+2) . "'>Next</a></td></tr>

<tr><td colspan='3' height='300' width='400' align='center'><img src='$large' alt=''></td></tr><tr><td height='50'></td></tr>";

 

Any help would be massively appreciated. Thanks very much!

What is the use of foreach loop here. I find it redundant.

 

Try echoing the $keyid in the else part and just before calculating the $large.

 
else
{
echo "key value before |$keyid|";
  if($keyid > (2*$Picturecount-1)){
    $keyid = ($keyid - (2*$Picturecount));}
  if($keyid < 0){
    $keyid = (2*$Picturecount+$keyid);}
echo "key value after |$keyid|";
  $large = $picture_array[$keyid];
}

 

I think you can come to know then. Else paste the output.

Hi thanks for the help. I tried echoing the $keyid like you said but all it does is output the right $keyid if the next arrow has been pressed but nothing if a thumbnail has been selected (as expected?) so I'm not really sure how that helps?

 

The foreach loop is supposed to go through each picture in the array and check if the $keyid matches the one of the thumbnail clicked. Why is that redundant? Thanks again.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.