funciones.js
Código:
pagina.htmladdEvent(window,'load',inicializarEventos,false); function inicializarEventos() { var vec=document.getElementsByTagName('div'); for(f=0;f<vec.length;f++) { addEvent(vec[f],'mouseover',mostrarToolTip,false); addEvent(vec[f],'mouseout',ocultarToolTip,false); addEvent(vec[f],'mousemove',actualizarToolTip,false); } var ele=document.createElement('div'); ele.setAttribute('id','divmensaje'); vec=document.getElementsByTagName('body'); vec[0].appendChild(ele); } function mostrarToolTip(e) { var d = document.getElementById("divmensaje"); d.style.visibility = "visible"; if (window.event) e=window.event; d.style.left = e.clientX + document.body.scrollLeft - 45; d.style.top = e.clientY + document.body.scrollTop + 15; var ref; if (window.event) ref=window.event.srcElement; else if (e) ref=e.target; recuperarServidorTooltip(ref.getAttribute('id')); } function actualizarToolTip(e) { if (window.event) e=window.event; var d = document.getElementById("divmensaje"); d.style.left = e.clientX + document.body.scrollLeft - 45; d.style.top = e.clientY + document.body.scrollTop + 15; } function ocultarToolTip(e) { var d = document.getElementById("divmensaje"); d.style.visibility = "hidden"; } var conexion1; function recuperarServidorTooltip(codigo) { conexion1=crearXMLHttpRequest(); conexion1.onreadystatechange = procesarEventos; conexion1.open('GET','tooltip.php?id_producto='+codigo, true); conexion1.send(null); } function procesarEventos() { var d = document.getElementById("divmensaje"); d.style.visibility = "visible"; if(conexion1.readyState == 4) { d.innerHTML=conexion1.responseText; } else { d.innerHTML = '<img src="cargando.gif">'; } } //*************************************** //Funciones comunes a todos los problemas //*************************************** function addEvent(elemento,nomevento,funcion,captura) { if (elemento.attachEvent) { elemento.attachEvent('on'+nomevento,funcion); return true; } else if (elemento.addEventListener) { elemento.addEventListener(nomevento,funcion,captura); return true; } else return false; } function crearXMLHttpRequest() { var xmlHttp=null; if (window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); return xmlHttp; }
Código HTML:
<head> <style> #divmensaje { background-color:#3C3C3C; width:266px; height: 350px; text-align:center; position: absolute; visibility: hidden; z-index: 100; } #tooltipcentro { background-color:#3C3C3C; width:234px; padding: 17px 0px 0px 0px; margin:0 auto; } #tooltip-foto { width:234px; height: 174px; background-color:#FFF; text-align:center; } /* TEXTOS TOOLTIP */ .tooltip-tit { font-family: "Arial"; font-size: 11px; color: #B3B3B3; vertical-align:bottom; padding: 6px 0px 4px 0px; } .tooltip-cod { font-family: "Arial"; font-size: 20px; color: #FFF; font-weight: bold; text-align:left; vertical-align:bottom; padding: 10px 0px 4px 0px; } .tooltip-desc { font-family: "Arial"; font-size: 11px; color: #FFF; text-align:left; padding: 10px 0px 10px 0px; } .tooltip-uni { font-family: "Arial"; font-size: 16px; color: #FFF; font-weight: bold; text-align:left; vertical-align:middle; padding: 4px 0px 0px 0px; } .tooltip-precio { font-family: "Arial"; font-size: 20px; color: #FF3300; font-weight: bold; text-align:right; vertical-align:top; padding: 4px 0px 0px 0px; } .cuadradito{ background-color: #f00; height: 50px; width: 50px; margin:3px; z-index: -1; } </style> <script languaje="javascript" src="funciones.js" type="text/javascript"></script> <link rel="StyleSheet" href="estilos.css" type="text/css"> </head> <body> <p>Entre con el mouse al recuadro.</p><table width="73%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div class="cuadradito" id="22"></div></td> <td><div class="cuadradito" id="25"></div></td> <td><div class="cuadradito" id="33"></div></td> <td><div class="cuadradito" id="120"></div></td> <td><div class="cuadradito" id="150"></div></td> </tr> </table> </body>
Código PHP:
<?php
$id_producto = $_GET['id_producto'];
include('conectar.php');
// conexion a la base
$conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");
$result = mysql_query("SELECT * FROM producto WHERE id_producto = '$id_producto'", $conexion) or die (mysql_error());
?>
<?php
// Muestro los registros
while ($registro = @mysql_fetch_array($result))
{
?>
<div id="tooltip">
<div id="tooltipcentro">
<table width="226" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php
$filename = 'imageart/';
$filename .= $registro['id_producto'];
$filename .= '.jpg';
if (file_exists($filename)) {
echo '<td colspan="2"><div id="tooltip-foto"><a href="rpauto-detalle.php?id_producto='.$registro['id_producto'].'&cod_linea='.$registro['cod_linea'].'" target="_top"><img src="'.$filename.'" border="0" /></a></div></td>';
} else {
echo '<td colspan="2"><div id="tooltip-foto"><a href="rpauto-detalle.php?id_producto='.$registro['id_producto'].'&cod_linea='.$registro['cod_linea'].'" target="_top"><img src="../../imageart/noimage.jpg" border="0" /></a></div></td>';
}
?>
</tr>
<tr>
<td class="tooltip-cod"><?php echo $registro['cod_articulo']; ?></td>
<td align="right" class="tooltip-tit">CODIGO ARTICULO</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF"><img src="../../imagesite/trans_1x1.gif" width="1" height="1" /></td>
</tr>
<tr>
<td colspan="2" class="tooltip-desc"><?php echo substr(($registro['descripcion']), 0, 80); ?>...</td>
</tr>
<tr>
<td width="117" align="left" class="tooltip-tit">UNIDAD DE COMPRA</td>
<td width="117" align="right" class="tooltip-tit">PRECIO</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF"><img src="../../imagesite/trans_1x1.gif" width="1" height="1" /></td>
</tr>
<tr>
<td class="tooltip-uni"><?php echo $registro['unidad']; ?></td>
<td class="tooltip-precio">$ <?php echo $registro['precio']; ?></td>
</tr>
</table>
</div>
</div>
<?php
}
?>
Al llevar todo esto a mi web la cual esta llena de divs, el problemón es justamente ese, que me toma TODOS los id de los divs y por supuesto ya no funciona.
Creo que tengo que modificar algo de funciones.js pero acudo a uds. porque no tengo idea de como hacerlo.
Lo que quisiera saber es:
- ¿cómo hago para que aparezcan las tooltips solamente al pasar por encima de la imagen que aparece en el resultado de esta consulta?
- ¿cómo le paso estas 2 variables a tooltip.php mediante javascript? Antes le enviaba mediante el id los nros. (22,25...) pero ahora necesitaria pasarle estas dos:
Código PHP:
$result = mysql_query("SELECT * FROM producto WHERE novedad = '$novedad' ORDER BY cod_linea", $conexion) or die (mysql_error());
if (mysql_num_rows($result) > 0)
{
while ($registro = mysql_fetch_array($result))
{
echo '<div id="cont-foto"><a href="rpauto-detalle.php?id_producto='.$registro['id_producto'].'&cod_linea='.$registro['cod_linea'].'" target="_top"><img src="'.$filename.'" border="0" /></a></div>';
}
}
Mil gracias por todo de antemano y saludos.
Marx.