469,359 Members | 1,689 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,359 developers. It's quick & easy.

read images from directory

anfetienne
424 256MB
hi,

I've got this piece of coding which displays the images within a folder and allows me to add captions to the images using xml. the problem im having is once it reads the folder it is mixing the images up....instead of listing them in order like 1,2,3,4,5 it starts with 1 and then any number will follow. how can i stop it from doing this.

here is the code
Expand|Select|Wrap|Line Numbers
  1.  
  2. <center>
  3. <table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
  4. <tr>
  5. <?php
  6. $r = 0;
  7. $pn=1;
  8. $pto=1;
  9.  
  10. for($n=0; $n<$total_items; $n++) {
  11. if($n !=0 && fmod($n, 5) == 0) {
  12. echo "</tr><tr>";
  13. }
  14.       $imageL= $path.$item[$n];
  15.      if (substr($imageL,-5) != 'b.jpg')
  16.      {
  17.       $img_path="http://theauctionwinners.com/resources/$imageL";
  18.       $editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
  19.       $iframeName= 'if1';
  20.       $iframeHeight= '955px';
  21.       $click= 'onClick';
  22.             // display the item
  23.             echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
  24.             echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
  25.             echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
  26.             echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
  27.             echo '<center><p><a href="'.$editLink .'" '.$click.'="document.getElementById('.$iframeName .').height='.$iframeHeight .'; document.getElementById('.$iframeName .').src=this.href; return false;"> > Edit Image < </a></p></center><br></td>';  
  28.     }
  29. }
  30.  
  31. if($r>0) {
  32. for($m=$r; $m<5; $m++) {
  33. echo "<td>&nbsp;</td>";
  34. }
  35. }
  36.  
  37. ?>
  38.  
Jun 8 '09 #1
16 3933
Dormilich
8,652 Expert Mod 8TB
how do you determine $item? as it looks, you're displaying the images in the order of the array. maybe some of the array sorting functions will help you.
Jun 8 '09 #2
anfetienne
424 256MB
i had to go through 3 tutorials to get this far with the code....where can i go for the array sorting functions tutorial?
Jun 8 '09 #3
Dormilich
8,652 Expert Mod 8TB
start here. from there on it should not be too difficult.
Jun 8 '09 #4
anfetienne
424 256MB
ok asort() & ksort() seems to be a good and simple choice...from my coding which do i add asort() to?

asort($path.$item[$n]); or asort($item[$n]); ?
ksort($path.$item[$n]); or ksort($item[$n]); ?


Expand|Select|Wrap|Line Numbers
  1. <?php
  2.  
  3. $path = "upload/$random_digit/images/"; // path to the directory to read ( ./ reads the dir this file is in)
  4. if ($handle = opendir($path)) {
  5.    while (false !== ($file = readdir($handle))) {
  6.     if ($file != "." && $file != "..") {
  7.         if(!is_dir($file)){
  8.             $item[] = $file;
  9.             }
  10.        }
  11.    }
  12.    closedir($handle);
  13. }
  14.  
  15. $total_items = count($item);
  16. $max_items = ceil($total_items / 5); // items per <td>
  17. $start = 0;
  18. $end = $max_items
  19.  
  20. //generate the table
  21. ?>
  22.  
  23.  
  24. <center>
  25. <table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
  26. <tr>
  27. <?php
  28. $r = 0;
  29. $pn=1;
  30. $pto=1;
  31.  
  32. for($n=0; $n<$total_items; $n++) {
  33. if($n !=0 && fmod($n, 5) == 0) {
  34. echo "</tr><tr>";
  35. }
  36.       $imageL= $path.$item[$n];
  37.      if (substr($imageL,-5) != 'b.jpg')
  38.      {
  39.       $img_path="http://theauctionwinners.com/resources/$imageL";
  40.       $editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
  41.       $iframeName= 'if1';
  42.       $iframeHeight= '955px';
  43.       $click= 'onClick';
  44.             // display the item
  45.             echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
  46.             echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
  47.             echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
  48.             echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
  49.             echo '<center><p><a href="'.$editLink .'" '.$click.'="document.getElementById('.$iframeName .').height='.$iframeHeight .'; document.getElementById('.$iframeName .').src=this.href; return false;"> > Edit Image < </a></p></center><br></td>';  
  50.     }
  51. }
  52.  
  53. if($r>0) {
  54. for($m=$r; $m<5; $m++) {
  55. echo "<td>&nbsp;</td>";
  56. }
  57. }
  58.  
  59. ?>
  60. </tr>
  61. <td><tr><center><input name="create" type="submit" value="Submit" /></center></tr></td>
  62. </form>
  63. </table>
  64.  
Jun 8 '09 #5
Dormilich
8,652 Expert Mod 8TB
@anfetienne
as described in the manual entry, asort() expects an array as input. thus
Expand|Select|Wrap|Line Numbers
  1. asort($item);
Jun 8 '09 #6
anfetienne
424 256MB
i understand that but which is best for mine?

i just got an error from asort

Warning: asort() expects parameter 1 to be array, string given in /var/www/vhosts/theauctionwinners.com/httpdocs/resources/templateEdit.php on line 473

Warning: asort() expects parameter 1 to be array, string given in /var/www/vhosts/theauctionwinners.com/httpdocs/resources/templateEdit.php on line 473

Warning: asort() expects parameter 1 to be array, string given in /var/www/vhosts/theauctionwinners.com/httpdocs/resources/templateEdit.php on line 473
Jun 8 '09 #7
Dormilich
8,652 Expert Mod 8TB
@anfetienne
well, ksort() will sort your array keys, which are already ordered, so it should not have any effect.

@anfetienne
see post above
Jun 8 '09 #8
anfetienne
424 256MB
its just strange how it wont show the images in the correct order
Jun 8 '09 #9
Dormilich
8,652 Expert Mod 8TB
except that "correct order" is very hard to teach a computer. do a var_dump() before and after sorting, so that you see how the sorting function actually sorts.
Jun 8 '09 #10
anfetienne
424 256MB
it sorts incorrectly.....the files are uploaded and renamed correctly but once it gets to reading the directory and putting it in table format it sorts incorrectly....have i done anything wrong in the coding?
Jun 8 '09 #11
Dormilich
8,652 Expert Mod 8TB
where did you sort the array?
Jun 8 '09 #12
anfetienne
424 256MB
it's sorted in the only place where the array exists and thats when it's displayed....within the same coding i've posted
Jun 8 '09 #13
anfetienne
424 256MB
hi can anyone help me? i have tried sorting and i still can't get them to order correctly???
Jun 15 '09 #14
Dormilich
8,652 Expert Mod 8TB
how are they ordered currently, and how would you like them to be?
Jun 15 '09 #15
anfetienne
424 256MB
they are ordering 1,3,2,4,6,5.....etc its all jumbled and i'd like them to be ordered 1,2,3,4,5,6,7,8
Jun 15 '09 #16
anfetienne
424 256MB
i've tried everything i could think of but can't get it to work.

is it possible to order images within a directory by their name rather than letting php just order it how it wants to?

this is my code

Expand|Select|Wrap|Line Numbers
  1. <?php
  2.  
  3. $path = "upload/$random_digit/images/"; // path to the directory to read ( ./ reads the dir this file is in)
  4. if ($handle = opendir($path)) {
  5.    while (false !== ($file = readdir($handle))) {
  6.     if ($file != "." && $file != "..") {
  7.         if(!is_dir($file)){
  8.             $item[] = $file;
  9.             }
  10.        }
  11.    }
  12.    closedir($handle);
  13. }
  14.  
  15. $total_items = count($item);
  16. $max_items = ceil($total_items / 5); // items per <td>
  17. $start = 0;
  18. $end = $max_items
  19.  
  20. //generate the table
  21. ?>
  22.  
  23.  
  24. <center>
  25. <table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
  26. <tr>
  27. <?php
  28. $r = 0;
  29. $pn=1;
  30. $pto=1;
  31.  
  32. for($n=0; $n<$total_items; $n++) {
  33. if($n !=0 && fmod($n, 5) == 0) {
  34. echo "</tr><tr>";
  35. }
  36.       $imageL= $path.$item[$n];
  37.      if (substr($imageL,-5) != 'b.jpg')
  38.      {
  39.       $img_path="http://theauctionwinners.com/resources/$imageL";
  40.       $editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
  41.       $iframeName= 'if1';
  42.       $iframeHeight= '955px';
  43.       $click= 'onClick';
  44.             // display the item
  45.             echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
  46.             echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
  47.             echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
  48.             echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
  49.             echo '<center><p><a href="'.$editLink .'" '.$click.'="document.getElementById('.$iframeName .').height='.$iframeHeight .'; document.getElementById('.$iframeName .').src=this.href; return false;"> > Edit Image < </a></p></center><br></td>';  
  50.     }
  51. }
  52.  
  53. if($r>0) {
  54. for($m=$r; $m<5; $m++) {
  55. echo "<td>&nbsp;</td>";
  56. }
  57. }
  58.  
  59. ?>
  60.  
Jun 18 '09 #17

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

1 post views Thread by Ken Tech | last post: by
3 posts views Thread by gencode | last post: by
2 posts views Thread by wstsoi | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.