Foros del Web » Programando para Internet » PHP »

Problemas al recojer una Variable en una URL

Estas en el tema de Problemas al recojer una Variable en una URL en el foro de PHP en Foros del Web. Hola. Ando empezando a usar el tema del PHP y estoy teniendo algunos problemillas... Primero os cuento lo que quiero hacer. -Generar una tabla con ...
  #1 (permalink)  
Antiguo 14/06/2012, 08:40
 
Fecha de Ingreso: junio-2012
Mensajes: 80
Antigüedad: 11 años, 10 meses
Puntos: 11
Pregunta Problemas al recojer una Variable en una URL

Hola.

Ando empezando a usar el tema del PHP y estoy teniendo algunos problemillas...

Primero os cuento lo que quiero hacer.

-Generar una tabla con todos los clientes con algunos de sus datos principales.
-En cada fila un link que lleve a otra pagina donde se muestran los datos completos de ese cliente.

Lo que tengo es una tabla con todos los clientes y sus datos. En este caso tengo un campo clave "ID", "Nombre", "Apellidos".....

Luego genero una tabla:
conex.phtml
Código:
<?php
function Conectarse()
{
   if (!($link=mysql_connect("localhost","root","")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("prueba",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}
?>
clientes.php
Código:
<html>
<head>
</head>
<body>
<?php
   include("conex.phtml");
   $link=Conectarse();
   $result=mysql_query("select * from clientes",$link);
?>
   <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
      <TR><TH>ID</TH><TH>Nombre</TH><TH>Apellidos</TH></TR> 
<?php      

   while($row = mysql_fetch_array($result)) {
      printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>"
      ,
      $row["id"],$row["nombre"],$row["apellidos"]);
   }
   mysql_free_result($result);
   mysql_close($link);
?>
</table>
</body>
</html>
Hasta aquí todo funciona correctamente. El problema llega cuando quiero meter un link en la tabla que recoja el valor de la primera celda de cada fila (osease la ID del cliente) y me la guarde para en el siguiente documento php, que seria ficha.php, usarla para restringir la consulta sobre la tabla y sacar solo los datos del cliente sobre el que he pinchando anteriormente.

Tras buscar por internet he encontrado esto:
Código:
<a href="destino.php?variable1=valor1&variable2=valor2&...">Mi enlace</a>
Que supongo que en mi caso se usaria:
Código:
<a href="ficha.php?id_cliente=$row['id']">Ficha detallada</a>
Para luego en el documento ficha.php recogerla con un $_GET...

El problema es que no soy capaz de introducir dentro de la tabla el link, como ya digo no me manejo nada bien, aun, con el PHP, aunque ya por lo menos no voy pegando, tanto, palos de ciego

Saludos.
  #2 (permalink)  
Antiguo 14/06/2012, 09:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 69
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Problemas al recojer una Variable en una URL

Creo que deberías escapar el link:

Si esto esta dentro de las etiquetas <?PHP y ?> creo que quedaría algo así.
Código PHP:
echo '<a href="ficha.php?id_cliente='.$row['id'].'">Ficha detallada</a>' 


Luego en ficha.php simplemente con hacer
$micliente = (int) $_GET['id_cliente']; //Forzamos a que la id sea un entero

y ya tienes la ID en la variable $micliente
  #3 (permalink)  
Antiguo 14/06/2012, 09:10
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Problemas al recojer una Variable en una URL

Hola mira el link en el cuál tu tratas de ingresar el id esta malo, resulta que estas pasando una variable php en un link (que es html), por lo cuál solo te diría que siempre id_cliente tiene un valor de $row['id'] , en este caso tienes dos opciones, meter el link dentro de un echo php y al momento de pasar el id concatenar la variable ó de la manera que lo tienes hecho pero al momento de asignar el valor del id realizar un echo, te dejo un ejemplo :

Código PHP:
Ver original
  1. //Pasando los valores por echo
  2. echo '<a href="pagina.php?id='.$id_php.'">Pasar Id</a> ';

Código HTML:
Ver original
  1. <!-- Pasando los valores por "html"-->
  2. <a href="pagina.php?id=<?php echo $id_php;?>">Pasar Id</a>

Espero te quede más claro.


Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #4 (permalink)  
Antiguo 14/06/2012, 09:24
 
Fecha de Ingreso: junio-2012
Mensajes: 80
Antigüedad: 11 años, 10 meses
Puntos: 11
Respuesta: Problemas al recojer una Variable en una URL

Gracias a los dos por la aclaracion, a txandy por la aclaracion del GET que seguro que luego me va ha hacer falta.

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Hola mira el link...

Código PHP:
Ver original
  1. //Pasando los valores por echo
  2. echo '<a href="pagina.php?id='.$id_php.'">Pasar Id</a> ';

Código HTML:
Ver original
  1. <!-- Pasando los valores por "html"-->
  2. <a href="pagina.php?id=<?php echo $id_php;?>">Pasar Id</a>

Espero te quede más claro.

Saludos.
Bien, efectivamente me ha quedado claro, ahora saco la variable a la otra web y la recojo con el get sin problemas.

Pero sigo sin ser capaz de meter el link dentro de la celda de la tabla, si pongo el echo con el link fuera del <td>asdasd</td> que hay dentro del printf funciona a las mil maravillas, pero si lo meto en el printf no funciona y mi idea es que junto con cada fila de cada cliente este el link para ir a su ficha.

Saludos y gracias por haber contestado tan rapido a los dos.
EDITO: Vale, ya lo saque, tras darle varias vueltas a lo del echo que decias efectivamente salió.
Código:
while($row = mysql_fetch_array($result)) 
{
  echo '
	<tr>
		<td><a href="ficha.php?id='.$row["dni"].'">Ficha</a></td>
		<td>'.$row["nombre"].'</td>
		<td>'.$row["apellidos"].'</td>
		<td>'.$row["pais"].'</td>
		<td>'.$row["telefono"].'</td>
		<td>'.$row["email"].'</td>
	</tr>
		   ';
}

Última edición por noruas; 14/06/2012 a las 16:55

Etiquetas: html, mysql, recojer, sql, tabla, url, 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 19:57.