Foros del Web » Programando para Internet » PHP »

llamar funcion javascript con info recuperada de una base de datos

Estas en el tema de llamar funcion javascript con info recuperada de una base de datos en el foro de PHP en Foros del Web. Que tal amigos del foro, estoy trabajando en un sitio web, más concretamente estoy haciendo el cambio de html a un sitio dinamico con php ...
  #1 (permalink)  
Antiguo 29/01/2007, 01:03
 
Fecha de Ingreso: enero-2007
Mensajes: 18
Antigüedad: 17 años, 3 meses
Puntos: 0
llamar funcion javascript con info recuperada de una base de datos

Que tal amigos del foro, estoy trabajando en un sitio web, más concretamente estoy haciendo el cambio de html a un sitio dinamico con php y mysql todo iba bien hasta ahora que me surgio este problema que talvez sea una tonteria pero que no he podido resolver.
Para mostrar una serie de imagenes de un producto cualquiera en la version de la pagina en html usaba el siguiente codigo javascript
Código:
<script language="javascript">
/*****************************************************************************
Pop-up ajustada a foto. ******************************************************************************/

var titulopordefecto = "IMAGEN"; //Si no se especifica un título al llamar a la función colocará el que se especifique aquí
var ventana;
var cont=0;

function afoto(cual,titulo)
{
if(cont==1){ventana.close();ventana=null}
if(titulo==null){titulo=titulopordefecto}
ventana=window.open('','ventana','resizable=yes,scrollbars=no')
ventana.document.write('<html><head><title>' + titulo + '</title></head><body style="overflow:hidden" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" scroll="no" onUnload="opener.cont=0"><img src="' + cual + '" onLoad="opener.redimensionar(this.width, this.height)">');
ventana.document.close();
cont++;
}
function redimensionar(ancho, alto)
{
ventana.resizeTo(ancho+12,alto+28);
ventana.moveTo((screen.width-ancho)/2,(screen.height-alto)/2); //centra la ventana. Eliminar si no se quiere centrar el popup
}
</script>
Lo que hace este script es que al clickear sobre el thumbnail se abra la imagen original en una ventana popup que se ajusta al tamaño de la imagen.
El codigo de las tablas que contienen los thumbnails desde los cuales se llama al script es el siguiente:
Código:
<table width="120" height="90" border="1"  align="center" bordercolor="#99B1D1" bgcolor="#FFFFFF">
  <tr> 
    <td> 
      <div align="center"><a href="#" onClick="afoto('../fotos/imagen1.jpg','');return false"><img src="thumbnails/thumb_imagen1.jpg" width="120" height="90" border="0"></a></div>
    </td>
    <td> 
      <div align="center"><a href="#" onClick="afoto('../fotos/imagen2.jpg');return false"><img src="thumbnails/thumb_imagen2.jpg" width="120" height="90" border="0"></a></div>
    </td>
    <td> 
      <div align="center"><a href="#" onClick="afoto('../fotos/imagen3.jpg');return false"><img src="thumbnails/thumb_imagen3.jpg" width="120" height="90" border="0"></a></div>
    </td>
    <td > 
      <div align="center"><a href="#" onClick="afoto('../fotos/imagen4.jpg');return false"><img src="thumbnails/thumb_imagen4.jpg" width="120" height="90" border="0"></a></div>
    </td>
  </tr>
</table>
Pero tenia que colocar el nombre de cada imagen y de su thumbnail manualmente y ya se imaginaran lo complicado y tedioso que se vuelve si hay muchos productos
Ahora almaceno los nombres de las imagenes en la base de datos en un campo de tipo texto, les pongo los codigos que utilice para que se entienda mejor de donde sale cada variable y asi de paso pueda usarlo quien los necesite
Código:
//parte del codigo del formulario que uso para enviar las imagenes 
//a un directorio y sus nombres a la base y otros datos de el producto,  
//se usa un campo type=file
//para cada imagen o sea que podemos enviar la cantidad de imagenes que 
//necesitemos
<input type=file name="images[]"> <br>
</td>
</tr>
<tr><td>&nbsp;</td>
<td><input type="submit" name="s1" value="Enviar"></td>
Para guardar las imagenes y alamcenar sus nombres se usa el siguiente codigo
Código:
if(isset($_POST[s1]))
{
  if(!empty($_FILES[images][name][0]))
  {
	while(list($key,$value) = each($_FILES[images][name]))
	{
	  if(!empty($value))
	  { //se renombra cada imagen y se envia al directorio: fotos
		$NewImageName = $t."_pic_".$value;
		copy($_FILES[images][tmp_name][$key], "../fotos/".$NewImageName);
		$MyImages[] = $NewImageName;
	  }
	}

	if(!empty($MyImages))
	{ //Se almacenan los nombres de todas las imagenes 
               //relacionadas con un producto especifico en esta variable
	  $ImageStr = implode("|", $MyImages);
	}

  }
}
//y se guarda en la base la variable que contiene los nombres de las imagenes
//junto con algun otro dato enviado por el formulario 
$sql = "insert into TABLA set 
marca = '$_POST[marca]',
modelo = '$_POST[modelo]',
image = '$ImageStr' ";
//el contenido de la variable $ImageStr seria algo como
//nombreprimeraimagen|nombresegundaimagen|nombreterceraimagen
//asi con todos los nombres de las imagenes
Para mostrar las imagenes en una tabla de cinco celdas por fila que se genera conforme se recuperan de la base con el siguiente codigo
Código:
if(!empty($_GET[id]))
{ //id de un producto especifico que se obtiene de una busqueda
  // por marca o modelo
  
$sql1="SELECT * FROM tabla WHERE id='$_GET[id]'";
$sql2=mysql_query($sql1);
$row=mysql_fetch_array($sql2);
$cont=1; //variable que sirve para verificar si abro o cierron un renglon
echo"<table border='0' align='center' >";
if(!empty($row[image]))
{
	$MyImages=explode("|",$row[image]);
	while(list(,$v)=each($MyImages))
	{
	  $thumb="<img src=\"re_images/$v\" width=110 height=83 border='0' >";
	  $normal="<img src=\"re_images/$v\" width=600 height=450 border='0' >";

	  if(($cont%5)==1)
	  { //Abre el renglon de celdas
		echo"<tr>";
	  }
	  echo"<td>";
	  echo"<td ><div align='center'>$thumb</div></td>"; <--AQUI
	  echo"</td>";
	  if(($cont%5)==0)
	  {//cierra el renglon
		echo"</tr>";
	  }
	  $cont++;
	}	
}
echo"</table>";
}
El problema es que solo me muestran los thumbnails de las imagenes y no se como llamar al javascript con las variables $thumb y $normal intente en
lugar de
Código:
echo"<td ><div align='center'>$thumb</div></td>";
por
Código:
<td> 
      <div align="center"><a href="#" onClick="afoto('$normal');return false">$thumb</a></div>
    </td>
y obtuve el error:
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in d:\appserv\www\......\info.php on line 170
que es la linea donde hice la sustitucion
Siento haberme extendido pero era necesario creo yo para que sea un poco mas facil de entender
  #2 (permalink)  
Antiguo 29/01/2007, 01:22
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: llamar funcion javascript con info recuperada de una base de datos

Hola! si estas en HTML tienes q indicarle q variables son de PHP
Código PHP:
<td> 
<div align="center"><a href="#" onClick="afoto('<?=$normal?>');return false"><?=$thumb?></a></div>
</td>
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 29/01/2007, 04:12
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 125
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: llamar funcion javascript con info recuperada de una base de datos

A simple vista el unico problema que veo es como te dijo sergi_climent.
El tema de las variables.
deberias reemplazar esta linea

Código PHP:

echo"<td ><div align='center'>$thumb</div></td>"; <--AQUI 
Por esta:

Código PHP:
echo"<td ><div align='center'>".$thumb."</div></td>"; <--AQUI 
sergi_climent te da una forma de insertar un variable php en un codigo html.
en php las variables se imprimen sin comillas.

Código PHP:
echo $variable
si miras el codigo fuente que te entrega tu script te debera poner $thumb en lugar del verdadero valor de la variable.

Saludos
  #4 (permalink)  
Antiguo 29/01/2007, 04:18
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: llamar funcion javascript con info recuperada de una base de datos

hola,
siempre es mejor q el codigo html quede para el cliente(es decir q lo cargue el navegador de nuestro cliente) y lo justo para nuestro servidor PHP (solo consultas,variables....).

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #5 (permalink)  
Antiguo 29/01/2007, 22:32
 
Fecha de Ingreso: enero-2007
Mensajes: 18
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: llamar funcion javascript con info recuperada de una base de datos

Gracias por responder a ambos, efectivamente acknowledge al poner la variable de esa manera puedo ver los thumbnails pero sin ninguna forma de llamar al javascript para ver la imagen en su tamaño original.
Amigo sergi_climent puse las variables como indicaste:
Código:
<td ><div align='center'><a href="#" onClick="afoto('<?=$normal?>');return false"><?=$thumb?></a></div></td>
Y el resultado es como esta imagen, al hacer click sobre las imagenes no se abre la imagen original sino mas bien se abre la misma pagina nuevamente.
Las imagenes que utilice fueron al azar para probar el script
Código:
h ttp://img183.imageshack.us/img183/5383/capturald3.jpg
Alguna sugerencia?
  #6 (permalink)  
Antiguo 30/01/2007, 01:39
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 125
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: llamar funcion javascript con info recuperada de una base de datos

El renglon que te dije que arregles,escribilo asi:
Código PHP:
echo "<td><div align=\"center\"><a href=\"#\" onClick=\"afoto('".$normal."');return false\">".$thumb."</a></div></td>"

Pero mirando tu codigo original deberia ir asi las otras lineas:
Código PHP:

$thumb
="<img src=\"re_images/".$v."\" width=\"110\" height=\"83\" border=\"0\" >";
$normal="re_images/".$v
Y lo que veo es que el thumb y la normal es la misma foto.Cuando en tu script original parece que tenes 2 supuestamente

thumbnails/thumb_imagen3.jpg (supuestamente menor tamaño)
../fotos/imagen3.jpg (supuestamente mayor tamaño)

Por supuesto que el codigo javascript de "afoto" tiene que estar en la cabecera html.

Por otro lado vi que lo haces de la otra forma. con los <? >
Arreglando las ultimas lineas que te dije tiene que funcionar
Saludos

Última edición por acknowledge; 30/01/2007 a las 05:35 Razón: un error
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.