read images from directory  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| |
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 -
-
<center>
-
<table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
-
<tr>
-
<?php
-
$r = 0;
-
$pn=1;
-
$pto=1;
-
-
for($n=0; $n<$total_items; $n++) {
-
if($n !=0 && fmod($n, 5) == 0) {
-
echo "</tr><tr>";
-
}
-
$imageL= $path.$item[$n];
-
if (substr($imageL,-5) != 'b.jpg')
-
{
-
$img_path="http://theauctionwinners.com/resources/$imageL";
-
$editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
-
$iframeName= 'if1';
-
$iframeHeight= '955px';
-
$click= 'onClick';
-
// display the item
-
echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
-
echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
-
echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
-
echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
-
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>';
-
}
-
}
-
-
if($r>0) {
-
for($m=$r; $m<5; $m++) {
-
echo "<td> </td>";
-
}
-
}
-
-
?>
-
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory
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.
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
i had to go through 3 tutorials to get this far with the code....where can i go for the array sorting functions tutorial?
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory
start here. from there on it should not be too difficult.
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
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]); ? -
<?php
-
-
$path = "upload/$random_digit/images/"; // path to the directory to read ( ./ reads the dir this file is in)
-
if ($handle = opendir($path)) {
-
while (false !== ($file = readdir($handle))) {
-
if ($file != "." && $file != "..") {
-
if(!is_dir($file)){
-
$item[] = $file;
-
}
-
}
-
}
-
closedir($handle);
-
}
-
-
$total_items = count($item);
-
$max_items = ceil($total_items / 5); // items per <td>
-
$start = 0;
-
$end = $max_items
-
-
//generate the table
-
?>
-
-
-
<center>
-
<table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
-
<tr>
-
<?php
-
$r = 0;
-
$pn=1;
-
$pto=1;
-
-
for($n=0; $n<$total_items; $n++) {
-
if($n !=0 && fmod($n, 5) == 0) {
-
echo "</tr><tr>";
-
}
-
$imageL= $path.$item[$n];
-
if (substr($imageL,-5) != 'b.jpg')
-
{
-
$img_path="http://theauctionwinners.com/resources/$imageL";
-
$editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
-
$iframeName= 'if1';
-
$iframeHeight= '955px';
-
$click= 'onClick';
-
// display the item
-
echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
-
echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
-
echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
-
echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
-
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>';
-
}
-
}
-
-
if($r>0) {
-
for($m=$r; $m<5; $m++) {
-
echo "<td> </td>";
-
}
-
}
-
-
?>
-
</tr>
-
<td><tr><center><input name="create" type="submit" value="Submit" /></center></tr></td>
-
</form>
-
</table>
-
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory Quote:
Originally Posted by anfetienne ok asort() & ksort() seems to be a good and simple choice...from my coding which do i add asort() to? as described in the manual entry, asort() expects an array as input. thus |  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
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
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory Quote:
Originally Posted by anfetienne i understand that but which is best for mine? well, ksort() will sort your array keys, which are already ordered, so it should not have any effect. Quote:
Originally Posted by anfetienne i just got an error from asort see post above
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
its just strange how it wont show the images in the correct order
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory
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.
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
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?
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory
where did you sort the array?
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
it's sorted in the only place where the array exists and thats when it's displayed....within the same coding i've posted
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
hi can anyone help me? i have tried sorting and i still can't get them to order correctly???
|  | Moderator | | Join Date: Aug 2008 Location: Leipzig, Germany
Posts: 3,652
| | | re: read images from directory
how are they ordered currently, and how would you like them to be?
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
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
|  | Needs Regular Fix | | Join Date: Feb 2009 Location: UK
Posts: 356
| | | re: read images from directory
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 -
<?php
-
-
$path = "upload/$random_digit/images/"; // path to the directory to read ( ./ reads the dir this file is in)
-
if ($handle = opendir($path)) {
-
while (false !== ($file = readdir($handle))) {
-
if ($file != "." && $file != "..") {
-
if(!is_dir($file)){
-
$item[] = $file;
-
}
-
}
-
}
-
closedir($handle);
-
}
-
-
$total_items = count($item);
-
$max_items = ceil($total_items / 5); // items per <td>
-
$start = 0;
-
$end = $max_items
-
-
//generate the table
-
?>
-
-
-
<center>
-
<table width="675px" border="0" cellspacing="5" cellpadding="5" align="center">
-
<tr>
-
<?php
-
$r = 0;
-
$pn=1;
-
$pto=1;
-
-
for($n=0; $n<$total_items; $n++) {
-
if($n !=0 && fmod($n, 5) == 0) {
-
echo "</tr><tr>";
-
}
-
$imageL= $path.$item[$n];
-
if (substr($imageL,-5) != 'b.jpg')
-
{
-
$img_path="http://theauctionwinners.com/resources/$imageL";
-
$editLink = "http://theauctionwinners.com/resources/imgEdit.php?img=$img_path";
-
$iframeName= 'if1';
-
$iframeHeight= '955px';
-
$click= 'onClick';
-
// display the item
-
echo '<td><center><p><a href="'.$img_path .'"><img src= "'.$path.$item[$n] .'" height="100" width="100"></a></p></center>';
-
echo '<center><p><input type="hidden" name="picT[]" value="pic'.$pn++.'"/></p></center>';
-
echo '<center><p><input type="hidden" name="photoT[]" value="PHOTO '.$pto++.'"/></p></center>';
-
echo '<center><p><input type="text" name="captionT[]" value=""/></p></center>';
-
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>';
-
}
-
}
-
-
if($r>0) {
-
for($m=$r; $m<5; $m++) {
-
echo "<td> </td>";
-
}
-
}
-
-
?>
-
|  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,449 network members.
|