Javascript in PHP

JavaScript and client side scripting.

Moderator: General Moderators

Post Reply
fernado1283
Forum Newbie
Posts: 22
Joined: Mon Aug 25, 2003 2:00 am

Javascript in PHP

Post by fernado1283 »

HI,

I am a newbie in php here... and alot of things I still do not understand.
Can anyone out there please help me.
I am doing a mouseover image here... The javascript code I tested is fine... but the moment I embedded it inside the function... The swap image just won't work..
Can anyone help me please. Thanks

Code: Select all

<?php
function displayProduct()
{
global $link;
	$result = mysql_query("select distinct(products) from product", $link);
print "<html>";
print "<head>";
print "<script language="JavaScript">";
print"<!--
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->";

print "</script>";
print "</head>";

print "<body onLoad="MM_preloadImages('/images/imagesIcon/openfolder.gif')">";

		for($count=1;$row=mysql_fetch_row($result);++$count)
	{
	print "<a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image2','','/images/imagesIcon/openfolder.gif',1)"><img src="/images/imagesIcon/closedfolder.gif" name="Image2" width="44" height="40" border="0">$row[0]</a><br>";
	$prod=$row[0];
	$result1=mysql_query("select products,shortForm from product where products='$prod'", $link);
	for($countq=1;$row1=mysql_fetch_row($result1);++$countq)
	{
	print"$row1[1]<br>";
	}	
	}
	


print "</body>";
print "</html>";
}

?>
Regards..
Fernado
Nay
Forum Regular
Posts: 951
Joined: Fri Jun 20, 2003 11:03 am
Location: Brisbane, Australia

Post by Nay »

Give this a try:

Code: Select all

echo <<< END

// all the html you want in here don't need to use " for "s

END;
-Nay
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

the problem you are haveing is that you need to uniquely name each image that has a rollover which you are not doing. All the images in the script you are generating are called Image2, so the Javascript doesn't know which image to swap.

this is the problem line

Code: Select all

print "<a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image2','','/images/imagesIcon/openfolder.gif',1)"><img src="/images/imagesIcon/closedfolder.gif" name="Image2" width="44" height="40" border="0">$row[0]</a><br>";
To give them a unique name, perhaps you could just insert the id from the database?

Give it a go.

Mark
User avatar
Vincent Puglia
Forum Commoner
Posts: 67
Joined: Thu Sep 04, 2003 4:20 pm
Location: where the World once stood

Post by Vincent Puglia »

Hi,

As a non-phper:

You should be able to use the loop's count variable to create the name. Something like:

Code: Select all

print "<a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image" + count + "','','/images/imagesIcon/openfolder.gif',1)"><img src="/images/imagesIcon/closedfolder.gif" name="Image" + count + " width="44" height="40" border="0">$row[0]</a><br>";
Also, I would use single quotes within the print's bounding double quotes. Eliminates the need for most, if not all, of the escapes.
Vinny
Post Reply