0

Can Any body help with this script. I am not an expert in PHP

I am displaying images 4 each in a page and the last image is repeating. unset is not working.

<?php
$ar=scandir("hairupdo");
$n=0;
$h="hairupdo";
$cnt=0;
$numofimages=count($ar)-3;
$imagesperpage=4;
$numberofimages=0;
$pages=ceil ($numofimages/$imagesperpage );
$gid=$_GET["id"];
	
 echo "<table width=100 border=0 cellspacing=5 cellpadding=5>";
   echo "<tr>";
	
		  
for($i=1; $i<=$pages ;$i++)
{
 
	echo "<a href=viewhairupdo.php?id=$i a>$i   ";

}

while(list($key,$ars)=each($ar))

{


	echo "dollar n : $n";		
	
	if (file_extension($ar[$key])=="jpg"||file_extension($ar[$key])=="jpeg") 
	{
		
		if ($cnt==2 )
		{
			echo "</tr><tr>";
			echo "<td>";
		}
		else
		
		{
			echo "<td>";
		}

		echo "<img src=hairupdo/$ar[$n]>";
		echo "</td>";
		$cnt=$cnt+1;
				
	}
	

	if ($n<count($ar)-1)
	{
		$n=$n+1;
	}
	if ($cnt==4 )
		{
			break;
			
		}
		
}

function file_extension($filename)
{
    return end(explode(".", $filename));
}
?>
3
Contributors
12
Replies
13
Views
7 Years
Discussion Span
Last Post by meempat
0

TRY THIS:

<?php
//DEFAULT VARS AND IMAGE ARRAY
$images_page = 4; 
$start_directory = "";
$files = glob("$start_directory*.{jpg,jpeg,JPG,JPEG}",GLOB_BRACE);
$no_images = count($files);
$no_pages = ceil($no_images/$images_page);

//GET ID FOR PAGE NUM
if(isset($_GET['id']) && intval($_GET['id']) > 0 && intval($_GET['id'] <= $no_pages)){ 
	$id =  intval($_GET['id']);
}else{
	$id = '1';
} 

//STARTS AND ENDS
$start_num = ($id - 1) * $images_page;
$end_num = $start_num + $images_page - 1;
if($end_num > $no_images - 1)$end_num = $no_images - 1;

//TEST OUTPUT - DELETE THIS BIT
echo "No images: " . $no_images . "<br />" . "Page number: " . $id . "<br />" . "No pages: " . $no_pages . "<br />" . "Images per Page: " . $images_page . "<br />" ."Start image: " . $start_num . "<br />" ."End image: " . $end_num;

//OUTPUT
$output = "\n<table>\n\t<tr>\n\t\t<td>";
for($i = 1;$i <= $no_pages; $i++){
	$output .= "<a href=\"?id=$i\">$i</a> ";
}
$output .= "\n\t\t</td>\n\t</tr>";
for($i=$start_num;$i<=$end_num;$i++){
	$output .="\n\t<tr>\n\t\t<td><img src=\"" . $files[$i] . "\" />\n\t\t</td>\n\t</tr>";
}
$output .= "\n</table>";
echo $output;
?>

Edited by diafol: n/a

0

Thank you for your reply. But its not working for me. Can you pls check it again

Test Out put is as shows
No images: 0
Page number: 1
No pages: 0
Images per Page: 4
Start image: 0
End image: -1

Actually it is
No images: 9
Page number: 1
No pages: 3
Images per Page: 4
Start image: 0

End image: -1 -- Is this correct ?

TRY THIS:

<?php
//DEFAULT VARS AND IMAGE ARRAY
$images_page = 4; 
$start_directory = "";
$files = glob("$start_directory*.{jpg,jpeg,JPG,JPEG}",GLOB_BRACE);
$no_images = count($files);
$no_pages = ceil($no_images/$images_page);

//GET ID FOR PAGE NUM
if(isset($_GET['id']) && intval($_GET['id']) > 0 && intval($_GET['id'] <= $no_pages)){ 
	$id =  intval($_GET['id']);
}else{
	$id = '1';
} 

//STARTS AND ENDS
$start_num = ($id - 1) * $images_page;
$end_num = $start_num + $images_page - 1;
if($end_num > $no_images - 1)$end_num = $no_images - 1;

//TEST OUTPUT - DELETE THIS BIT
echo "No images: " . $no_images . "<br />" . "Page number: " . $id . "<br />" . "No pages: " . $no_pages . "<br />" . "Images per Page: " . $images_page . "<br />" ."Start image: " . $start_num . "<br />" ."End image: " . $end_num;

//OUTPUT
$output = "\n<table>\n\t<tr>\n\t\t<td>";
for($i = 1;$i <= $no_pages; $i++){
	$output .= "<a href=\"?id=$i\">$i</a> ";
}
$output .= "\n\t\t</td>\n\t</tr>";
for($i=$start_num;$i<=$end_num;$i++){
	$output .="\n\t<tr>\n\t\t<td><img src=\"" . $files[$i] . "\" />\n\t\t</td>\n\t</tr>";
}
$output .= "\n</table>";
echo $output;
?>
0

It looks like your start directory is not the one you're looking for. Try this:

$start_directory = "hairupdo/";

If it's not that make sure it's a relative reference from your file, e.g. "../images/hairupdo/".
the glob() function is beautiful, but takes a little experimentation to get the path. If you go to root "/", you'll go to webroot - which is not what you want, so using relative refenceing should be easier.

0

Hi,

Sorry to disturb you again. That script is not working for IE. The link to the pics is not coming. Pls refer to artofmehendi.com/mehandigallery.php. It works with other browsers.

That portion is like this

$output .="\n\t\n\t\t<td><div align=center <a href=viewsubmehandi.php?id1=".$start_directory.$new1."/"."&id=1 a><img src=\"" . $files[$i] . "\" />\n\t\t<br />$new</div></td>\n\t";
}

0
$output .="\n\t\n\t\t<td><div align=center <a href=viewsubmehandi.php?id1=".$start_directory.$new1."/"."&id=1 a><img src=\"" . $files[$i] . "\" />\n\t\t<br />$new</div></td>\n\t";

Good grief, I didn't write that! It's horrible. It's all garbled to hell. Your link tag is like this:

<a .... a>

Gawd knows what you're trying to do with this. If other browsers work with this format, their developers should be shot. 1-0 to IE in that case.

0

why not use forearch() instead of your while(list($key,$ars)=each($ar))??? you like complicated stuff? it think your image folder contains 4 images, coz the end of your loop depends on your $ar=scandir("hairupdo"); which is the location of the images.

0

Sorry i cant understand what is the problem. The link is in <a..a>

for($i=$start_num;$i<=$end_num;$i++){
$new=str_replace($start_directory,"",$files[$i]);

$output .="\n\t\n\t\t<td><div align=center [B]<a [/B]href=viewsubmehandi.php?id1=".$start_directory.$new1."/"."&id=1 [B]a>[/B]<img src=\"" . $files[$i] . "\" />\n\t\t<br />$new</div></td>\n\t";
}

So can you please correct me.

0
$output .="\n\t\n\t\t<td><div align=center <a href=viewsubmehandi.php?id1=".$start_directory.$new1."/"."&id=1 a><img src=\"" . $files[$i] . "\" />\n\t\t<br />$new</div></td>\n\t";

Will give the html output:

<td><div align=center <a href=viewsubmehandi.php?id1=whateverfolder/&id=1 a><img src="myimage.jpg" />
        <br />whateverstring</div></td>

As you can see this is just plain wrong. You probably want something like this:

<td>
            <div align="center">
                <a href="viewsubmehandi.php?id1=whateverfolderandfile/&id=1"><img src="myimage.jpg" /></a><br />whateverstring
            </div>
        </td>

OR

<td>
            <div align="center">
                <a href="viewsubmehandi.php?id1=whateverfolderandfile/&id=1"><img src="myimage.jpg" /><br />whateverstring</a>
            </div>
        </td>

I don't like the folder structure within the querystring. You'd be better off urlencoding the folder/file name before writing to the querystring. You then urldecode at the other end: urldecode($_GET).
In addition, you should be looking to use img alt and a title attributes for accessibility.

Edited by diafol: n/a

0

Sorry to disturb you again.


Please go through this code

if ($new1=="bridal")
{
	$output .="\n\t\n\t\t<td><div align=center <a href=viewsubbridal.php?id=".$start_directory.$new1." ><img src=" . $files[$i] . " /> </a>\n\t\t<br />$new</div></td>\n\t";
}
else
{
	$output .="\n\t\n\t\t<td><div align=center <a href=viewsubmehandi.php?id1=".$start_directory.$new1."> <img src=" . $files[$i] . " /></a>\n\t\t<br />$new</div></td>\n\t";
}

THE VIEW SOURCE IN MOZILLA WHICH WORKS PERFECT

<td><div align=center <a href=viewsubbridal.php?id=mehandi/bridal ><img src=mehandi/bridal.jpg /> </a>
		<br />bridal.jpg</div></td>
	
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/tattoo/> <img src=mehandi/tattoo.jpg /></a>

		<br />tattoo.jpg</div></td>
	</tr><tr>
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/arabic/> <img src=mehandi/arabic.jpeg /></a>
		<br />arabic.jpeg</div></td>
	
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/fusion/> <img src=mehandi/fusion.jpeg /></a>
		<br />fusion.jpeg</div></td>

The view source in I.E - Link not shown

<td><div align=center <a href=viewsubbridal.php?id=mehandi/bridal ><img src=mehandi/bridal.jpg /> </a>
		<br />bridal.jpg</div></td>
	
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/tattoo/> <img src=mehandi/tattoo.jpg /></a>
		<br />tattoo.jpg</div></td>
	</tr><tr>
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/arabic/> <img src=mehandi/arabic.jpeg /></a>
		<br />arabic.jpeg</div></td>
	
	
		<td><div align=center <a href=viewsubmehandi.php?id1=mehandi/fusion/> <img src=mehandi/fusion.jpeg /></a>
		<br />fusion.jpeg</div></td>

Now can you please explain this

0

Yes - it's just extremely badly formed html - in fact, sorry to be rude, but it's horrible.

1) You don't have quotes around tag attributes
2) You have a link (<a...>...</a>) tag inside the open tag of the div.
3) The open div tag doesn't have a '>' at the end of it.

Try running your code in the xhtml validator: http://validator.w3.org/#validate_by_input

You can use the "paste your code" tab (link above) or, on another tab, enter the url of your page if it's hosted remotely. You've got at least 8 validation errors.

Concentrate on getting valid html output - learn the basics. The fact that Firefox and a few other browsers would actually display your page at all is worrying. I suppose they're built to be lenient, but that's ridiculous.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.