Page 1 of 1

Javascript in PHP

Posted: Mon Sep 22, 2003 8:19 pm
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

Posted: Tue Sep 23, 2003 4:49 am
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

Posted: Tue Sep 23, 2003 6:12 am
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

Posted: Tue Sep 23, 2003 12:42 pm
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