Darse de alta en la web | Recuperar password   
Inicio / Foros / PHP / rollover en bucle while no me sirve :S
2 respuestas recibidas | 58 visitas | Categoría PHP

rollover en bucle while no me sirve :S

Avatar de iaaqov
Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3

(Nivel 3 - 234 posts)

#0 Offline iaaqov Usuario 24 abr 08 (19:25)  
holas, tengo lo siguiente:

Código PHP


<a href="imagen2.html" onmouseout="document.MyImage.src='imagen1.jpg';" onmouseover="document.MyImage.src='imagen2.jpg';">
<img src='imagen1' name='MyImage' id='MyImage' height='181' border='0' /></a><br />


y lo prueba y funciona pero si lo meto dentro de un bucle while para extraer la informacion de la base de datos (las urls de las imagenes) entonces no me funciona, alguien sabe por qué? o cual es la solucion? necesito hacer que cuando se pase el mouse encima, me cambie la imagen (rollover) pero dentro del bucle while:

Código PHP


<?
$consulta
= mysql_query("SELECT * FROM mesas WHERE grupo='royal' AND active=1");
// echo "<tr>";
while($row=mysql_fetch_array($consulta)){
$mini=$row['mini'];
$miniro=str_replace(".jpg","_ro.jpg",$row['mini']);
echo
"<div style='padding-top:5px;padding-left:10px;float:left;' align='center'><div>";
?>
<a href="<?=$row['src']?>" title2="<?=$row['titulo']?>" name="<?=$row['titulo']?>" rel="lytebox" onmouseout="document.MyImage.src='<?=$mini?>';" onmouseover="document.MyImage.src='<?=$miniro?>';">
<img src='<?=$mini?>' name='MyImage' id='MyImage' height='181' border='0' /></a><br />
<?
}
?>



ayuda por fa!

Re: rollover en bucle while no me sirve :S

Avatar de krowork
Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3

(Nivel 3 - 199 posts)

#1 Offline krowork Usuario 25 abr 08 (09:55)  
Hola iaaqov,

Hay un par de errores que cometes, el primero es tener varias etiquetas img con el mismo id='MyImage', el id por definición tiene que ser único, no se puede repertir, lo mejor sería que urilizases id="MyImage<?=$row['id']?>" De todas formas no es necesario complicarse tanto la vida, si pones los eventos en la etiqueta img:

Código PHP


<img src="<?=$mini?>" onmouseover="this.src='<?=$miniro?>'" onmouseout="this.src='<?=$mini?>'"  border="0" />


aunque lo mejor sería que realizaces la consulta en el head donde creases tres arrays uno php para poder dibujar en el body las imagenes (sin necesidad de otra consulta) y dos javascript que nos servirán para hacer caché de las imágenes:

Código PHP


<script type="text/javascript">
var mini=new Array();
var miniro=new Array();
<?php
$consulta
= mysql_query("SELECT * FROM mesas WHERE grupo='royal' AND active=1");
$imagenes=array();
$i=0;
while(
$row=mysql_fetch_assoc($consulta)){
  
$imagenes[]=$row;
  echo
'mini['+$i+']=new Image()\n';
  echo
'mini['+$i+'].src=\''.$row['mini'].'\'\n';
  echo
'miniro['+$i+']=new Image()\n';
  echo
'miniro['+$i+'].src=\''.str_replace(".jpg","_ro.jpg",$row['mini']).'\'\n';
  ++
$i;
}
?>
</script>


luego en el body:

Código PHP


<?php for($i=0,$num=count($imagenes);$i<$num;++$i): ?>
<div style='padding-top:5px;padding-left:10px;float:left;' align='center'><div>
<a href="<?=$imagenes[$i]['src']?>" title2="<?=$imagenes[$i]['titulo']?>" name="<?=$imagenes[$i]['titulo']?>" rel="lytebox">
<img src='<?=$imagenes[$i]['mini']?>' " onmouseover="this.src=miniro[<?=$i?>].src" onmouseout="this.src=mini[<?=$i?>].src" name='MyImage'  height='181' border='0' /></a>
</div></div>
<? endfor; ?>



Un saludo

http://krowork.blogspot.com

Re: rollover en bucle while no me sirve :S

Avatar de iaaqov
Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3 Nivel 3

(Nivel 3 - 234 posts)

#2 Offline iaaqov Usuario 25 abr 08 (18:11)  
gracias krowork asi como en la anterior, tus respuestas siempre tan eficaces :D
gracias de nuevo

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster