Foros del Web » Programando para Internet » PHP »

Paso de variables.... por que no funciona?

Estas en el tema de Paso de variables.... por que no funciona? en el foro de PHP en Foros del Web. Hola, tengo el codigo de una biblioteca que estoy haciendo, y quiero mostrar los libros que tengo en una base de datos, y cuando pincho ...
  #1 (permalink)  
Antiguo 08/01/2012, 13:22
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Pregunta Paso de variables.... por que no funciona?

Hola, tengo el codigo de una biblioteca que estoy haciendo, y quiero mostrar los libros que tengo en una base de datos, y cuando pincho en uno en particular me quiero ir a otra pagina donde mostrar todos los datos del libro seleccionado... Pero no consigo que me funcione...
Me podeis ayudar a ver que estoy haciendo mal??

Codigo de biblioteca.php despues de la conexion...

Código:
<form method="POST" action="abrelibro.php">

<table border=0>
<tr>

<?php

// busco todos los libros contenidas en la tabla que voy a mostrar.
$cadena="SELECT * FROM libros";
$result=mysql_query($cadena) or die(mysql_error());

$totalreg=mysql_num_rows($result);
//echo "$totalreg";
$i=0;

while ($fila=mysql_fetch_array($result))
	{
	$iden=$fila['ID'];
	$titulo=$fila['TITULO'];
	$autor=$fila['AUTOR'];
	$editorial=$fila['EDITORIAL'];
	$anio=$fila['AÑO'];
	$npaginas=$fila['NPAGINAS'];
	$tipo=$fila['TIPO'];
	$desc=$fila['DESCRIPCION'];
	$alta=$fila['FECHA'];
	$nuevo=$fila['NUEVO'];
	$imagen=$fila['IMAGEN'];
	
	
		// el numero controla las columnas que voy a tener. En este caso no permito mas de 5 en la misma fila
		// a las 5 salto y abro otra linea...
		
		 if ( $i % 5 == 0 ) 
		 {
		 if ( $i == 1 )
		 {
		 echo "<tr>";
		 }
		 else
		 {
		 echo "</tr><tr>";
		 }
		 }

    // imagen del libro
    $libro="libros/$imagen.jpg";
	
	echo "<td width=200>";
	echo "<input type=hidden name=id_libro id=id_libro value=$iden>";
	echo "<img src=$libro border=0><br>$desc";
	echo "<input type=submit value=Submit>";

	echo "</td>";
	
		
	$i++;
	
	
	} // del while


?>

</tr>
</table>
</form>
Y el codigo de momento del abrelibro.php que llamo desde biblioteca.php...

Código:
<?php

$milibro = $_POST["id_libro"];

echo "Libro seleccionado: $milibro";

// a partir de aqui desarrollo para el libro que me viene en la variable de $milibro
// y muestro toda la informacion de ese libro...

?>
Por que no recibo cuando pincho en cualquier libro el identificador del libro que quiero consultar????

Por favor, podeis ayudarme??

Muchas gracias.
  #2 (permalink)  
Antiguo 08/01/2012, 16:04
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Paso de variables.... por que no funciona?

cambia esta parte:

Código HTML:
Ver original
  1. echo "<td width=200>";
  2.     echo "<input type=hidden name=id_libro id=id_libro value=$iden>";
  3.     echo "<img src=$libro border=0><br>$desc";
  4.     echo "<input type=submit value=Submit>";
  5.  
  6.     echo "</td>";

Por esta:

Código PHP:
Ver original
  1. <a herf="ver_libros.php?id_libro=".<?php echo $iden?>detalles del libro</a>

Le agregas una imagen como una lupa etc, y Tu pagina para recibir asi:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $milibro = $_GET["id_libro"];
  4.  
  5. echo "Libro seleccionado: $milibro";
  6.  
  7. // a partir de aqui desarrollo para el libro que me viene en la variable de $milibro
  8. // y muestro toda la informacion de ese libro...
  9.  
  10. ?>
  #3 (permalink)  
Antiguo 08/01/2012, 16:06
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Paso de variables.... por que no funciona?

Perdon esta linea como la tuya claro:

Código PHP:
Ver original
  1. <a herf="abrelibro.php?id_libro=".<?php echo $iden?>detalles del libro</a>

asi pasas la varible por la url y la capturar con un get como te puse alla espero te sirva saludos..
  #4 (permalink)  
Antiguo 09/01/2012, 03:16
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: Paso de variables.... por que no funciona?

Hola. Gracias, Pero no es eso lo que pretendo. Me gustaria usar variables POST que no tenga que pasar en el URL de la pagina, pero no se que estoy haciendo mal, que me falta o por que no me funciona lo que estoy haciendo...
Alguna sugerencia al respecto de hacerlo por POST?? Estoy atascado y necesito resolver esto...
Muchisimas gracias!
Un saludo.
  #5 (permalink)  
Antiguo 09/01/2012, 06:57
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: Paso de variables.... por que no funciona?

Hola!
Primero... has comprobado en el código fuente de la página original, que te crea bien el formulario?
Es decir, que tienes:
<input type=hidden name=id_libro id=id_libro value=aquí un valor!!>
y tienes corretamente el resto de formulario, es decir <form etc etc> y </form>?

Segundo... ya sé que no es necesario, pero por probar... yo siempre pongo todos los tags (type, name, value, etc) entre comillas, y los <input> los finalizo con <input /> (XHML) o cerrando con un </input> (HTML).

Saludos
  #6 (permalink)  
Antiguo 09/01/2012, 07:06
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Paso de variables.... por que no funciona?

Código PHP:
echo "<input type=hidden name=id_libro id=id_libro value='".$iden."'>"
prueba asi a ver si pasa el id del libro

si funciona enviar el id por post.. tu problema esta en el uso de comillas.. es raro pero puede pasar..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 09/01/2012, 08:08
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: Paso de variables.... por que no funciona?

Tal y como lo tengo ahora despues de las sugerencias.... Y sigue sin funcionar...

Cita:

<table border=0>
<tr>

<?php

// busco todos los libros contenidas en la tabla que voy a mostrar.
$cadena="SELECT * FROM libros";
$result=mysql_query($cadena) or die(mysql_error());

$totalreg=mysql_num_rows($result);
//echo "$totalreg";
$i=0;

while ($fila=mysql_fetch_array($result))
{
$iden=$fila['ID'];
$imagen=$fila['IMAGEN'];


// el numero controla las columnas que voy a tener. En este caso no permito mas de 5 en la misma fila
// a las 5 salto y abro otra linea...

if ( $i % 5 == 0 )
{
if ( $i == 1 )
{
echo "<tr>";
}
else
{
echo "</tr><tr>";
}
}

// imagen del libro
$libro="libros/$imagen.jpg";

?>

<td width=200>
<form method="POST" action="abrelibro.php" name="biblioteca">

<?php
echo "<input type=hidden name=id_libro id=id_libro value='".$iden."'>";
?>

<img src=<?php echo $libro ?> border=0>
<input type="image" src="img/vermas.jpg" name="submit" />
</td>

<?php

$i++;


} // del while


?>

</tr>
</table>
</form>
Y el fichero donde recibo todo....:

Cita:

<php
$identificador ="0";

$identificador = (int) $_POST['id_libro'];

echo "MI Libro: $identificador ";

?>
Siempre recibo el mismo valor... no me llega nada pero se que en la primera parte se asignan bien los valores...

Muchas gracias !!!
  #8 (permalink)  
Antiguo 09/01/2012, 08:19
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Paso de variables.... por que no funciona?

en esta linea $result=mysql_query($cadena) haces el mysql_query pero normalmente tambien loe agregas la variable de conexon $result=mysql_query($cadena, $link) por ejemplo y la $fila['ID']; esta en mayusculas el nombre del campo en la Bd? verifica eso.. y sino prueba asi tu campo hidden:

<input type=hidden name=id_libro id=id_libro value="<?php echo $iden;?>">

aunque tambien probaria pasarlo por la variable antes o imprimirlo en la misma pagina del form para ver si ya trae un valor ao algo.. saludos..
  #9 (permalink)  
Antiguo 09/01/2012, 08:31
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: Paso de variables.... por que no funciona?

Como he comentado, pero me quizá me he explicado mal... si una vez cargada la página en el navegador (la inicial de formulario), y le das a "ver código fuente", en la parte del formulario, ves que el input hidden tiene un value definido? Si és que no, el problema viene o bien en la consulta de la bd, o algo de la sintaxis de php...
Si sí que ves un value, y luego al dar al submit esa value o variable no la obtienes, entonces el problema es otro que no acabamos de ver... pero al menos, podremos ver por donde van los tiros!!

Saludos
  #10 (permalink)  
Antiguo 09/01/2012, 08:40
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Paso de variables.... por que no funciona?

Creo q estás haciendo algo básico mal.


No puedes / debes tener 300 campos (aunq sean hidden) con el mismo id (en este caso, id_libro).

Por cada libro, creas ese campo. Es erróneo. En teoria, sólo pillarías el último (o el primero), le dieras al submit que le dieras!

Es mucho más sencillo hacerlo por GET en este caso, que por POST.

¿Q quieres hacerlo por POST? Vale, se puede. Simplemente, haz que sean "botones" normales, que al hacer click, una pequeña función en js escriba el id de ese libro en un input hidden (sólo habrá uno!), y luego haga un submit().


Nota: Te recomiendo ordenar mejor las etiquetas... si abres la tabla antes que el form, cierra el form antes que la tabla... etc, etc ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 09/01/2012, 08:57
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Paso de variables.... por que no funciona?

bueno lo probe como dice charlyalegret con una Bd mia y si muestra el valor en el campo hidden al darle ver codigo fuente los errores son:
tu boton deberia ser asi:

Código HTML:
Ver original
  1. <input  [B]type="submit"[/B] name="submit"  value="enviar"/>
  2. //no type imagen

y tu php no es es <php es <?php bueno por lo menos lo que yo probe y otro error es que tambien lo probe por method get por la variable y este me pasa todas las id de todos los librss que muestras y en abrelibro.php me muestra el ultimo id del reccorido anterior

/abrelibro.php?id_libro=6&submit=enviar&id_libro=1& id_libro=5&id_libro=10&id_libro=4&id_libro=20&id_l ibro=11&id_libro=7&id_libro=2&id_libro=9&id_libro= 21&id_libro=3&id_libro=18&id_libro=19&id_libro=8


YO sugiero lo pases por url mas facil: id por id:

echo '<a href="abrelibro.php?id_libro='.$iden.'">detalles del libro</a>';
  #12 (permalink)  
Antiguo 10/01/2012, 06:41
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: Paso de variables.... por que no funciona?

Me gusta lo de la funcion javascript, pero no tengo ni idea de hacerla.. me ayudas, por favor?

Como hago que sean "botones" normales, que al hacer click, una pequeña función en js escriba el id de ese libro en un input hidden (sólo habrá uno!), y luego haga un submit(). ????

Muchas gracias.
Un saludo
  #13 (permalink)  
Antiguo 10/01/2012, 09:19
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 6 meses
Puntos: 7
Respuesta: Paso de variables.... por que no funciona?

En tu último código abres un formulario tantas veces como imágenes tienes y solo lo cierras una vez en lugar de en cada bucle while. Con ese cambio te funcionaría.

Código PHP:
<td width=200>
<form method="POST" action="abrelibro.php" name="biblioteca">

<?php
echo "<input type=hidden name=id_libro id=id_libro value='".$iden."'>";
?>

<img src=<?php echo $libro ?> border=0>
<input type="image" src="img/vermas.jpg" name="submit" />
</form>
</td>

Última edición por pintix; 10/01/2012 a las 09:21 Razón: Pequeña corrección código

Etiquetas: paso, sql, tabla, variables
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 09:52.