Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta Página Detalle / Maestro con PHP

Estas en el tema de Consulta Página Detalle / Maestro con PHP en el foro de PHP en Foros del Web. Buenos días! Tengo realizada una página resultado y una página detalle con PHP. El problema es que paso el ID del producto seleccionado pero en ...
  #1 (permalink)  
Antiguo 10/07/2014, 10:08
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Consulta Página Detalle / Maestro con PHP

Buenos días! Tengo realizada una página resultado y una página detalle con PHP.

El problema es que paso el ID del producto seleccionado pero en la página detalle evidentemente me está faltando algo que no entiendo. Me podrán ayudar por favor?

Código resultado.php:

<?php
include("conexion.php");

$consulta="SELECT * FROM productos";
$resultado=mysql_query($consulta);
$count_results = mysql_num_rows($resultado);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<?php if ($count_results > 0) { ?>
<div>Se encontraron los siguientes resultados:</div>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Ver Detalles</td>
</tr>
<?php
while($fila=mysql_fetch_array($resultado)) { ?>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><a href="detalle.php?id=<?php echo $fila["id_producto"]; ?> target="_self">SI</a></td>
</tr>
<?php } ?>
</table>
<?php } ?>
<?php if ($count_results == 0) { ?>
<div>No se encontraron resultados.</div>
<?php } ?>
</body>
</html>

Código detalle.php:

<?php
include("conexion.php");

$consulta="SELECT * FROM productos";
$resultado=mysql_query($consulta);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Categoria</td>
</tr>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><?php echo $fila["categoria"]; ?></td>
</tr>
</table>
</body>
</html>

Muchas gracias!
  #2 (permalink)  
Antiguo 10/07/2014, 10:19
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 6 meses
Puntos: 21
Respuesta: Consulta Página Detalle / Maestro con PHP

te falta hacer la consulta segun el id que llega via GET...

$consulta="SELECT * FROM productos where id_producto='.$_GET['id'].'";
  #3 (permalink)  
Antiguo 10/07/2014, 10:23
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Mucas gracias por responder tan rapido!.

Lo probé y me tira un error de sintaxis.

También probé asi:

$consulta="SELECT productos.id_producto, productos.nombre, productos.categorias FROM productos WHERE productos.id_producto ='.$_GET['id'].'";

Pero me tira un error de sintaxis también.

Esto lo estoy haciendo en el archivo detalle.php

Se te ocurre algo más?

Muchas gracias.
  #4 (permalink)  
Antiguo 10/07/2014, 10:26
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años
Puntos: 53
Respuesta: Consulta Página Detalle / Maestro con PHP

Meter una variable GET en tu query hará que te hagan SQLInjection ;)

Te recomiendo utilizar alguna librería para acceder a tu base de datos de manera más segura, por ejemplo PDO (http://php.net/manual/en/book.pdo.php) o MYSQLLI (http://php.net/manual/en/book.mysqli.php)

Si es un proyecto escolar o siplemente estás experimentando así dejalo, pero si es algo que planeas deployar mejor sigue mi consejo.

Saludos
  #5 (permalink)  
Antiguo 10/07/2014, 10:31
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Stock, gracias por responder.

Si lo quisiera hacer por POST, de qué manera debería enviar el ID y de qué manera debería recibirlo?

Mi código para enviarlo actual es:
<a href="detalle.php?id=<?php echo $fila["id_producto"]; ?> target="_self">SI</a>

Y mi Código para recibirlo es:

$consulta="SELECT * FROM productos WHERE id_producto='.$_GET['id_producto'].'";

Me das una mano?

Muchas gracias!
  #6 (permalink)  
Antiguo 10/07/2014, 10:50
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

MarcusAurelio, ahora ya no tengo el error de sintaxis:

Mi código de la página detalle quedó así:

<?php
include("conexion.php");
$consulta="SELECT * FROM productos where id_producto ='.$_GET ['id'].'";
$resultado=mysql_query($consulta);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Categoria</td>
</tr>
<tr>
<td><?php echo $fila["id_producto"]; ?></td>
<td><?php echo $fila["categoria"]; ?></td>
</tr>
</table>
</body>
</html>

El tema es que no me trae resultados, cuando deberia traerme 1 registro correspondiente al ID seleccionado.

Me podrías ayudar?

Muchas gracias!
  #7 (permalink)  
Antiguo 10/07/2014, 11:43
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

En ningún momento estas llenando "$fila" te falta poner
Código PHP:
$fila mysql_fetch_assoc($resultado); 
debajo de $resultado=mysql_query($consulta);

Te tiene que quedar así.
Código PHP:
$consulta="SELECT * FROM productos where id_producto = $_GET['id']";
$resultado=mysql_query($consulta);
$fila mysql_fetch_assoc($resultado); 
debajo de $resultado=mysql_query($consulta);
[/PHP]

De todas maneras ves mirando de cambiarte a MySQLi y el tema de meter un poco mas de seguridad en las consultas.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #8 (permalink)  
Antiguo 10/07/2014, 11:47
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Bookmaster, lo acabo de agregar y ahora me tira el siguiente error:


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/detalle.php on line 5

Y justo la línea 5 tiene la sintaxis:

$fila = mysql_fetch_assoc($resultado);

Estamos mas cerca!

Me podrás dar una mano?

Gracias!
  #9 (permalink)  
Antiguo 10/07/2014, 11:55
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

Teóricamente el bloque ese debería de ser así:
Código PHP:
    $consulta "SELECT * FROM productos WHERE id_producto = $_GET['id']";
    
$resultado mysql_query($consulta$Conexion); // Fíjate que aquí esta metida la conexión.
    
$fila mysql_fetch_assoc($resultado); 
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #10 (permalink)  
Antiguo 10/07/2014, 12:00
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Les paso el código con los cambios hasta ahora:

resultado.php:

<?php
include("conexion.php");

$consulta="SELECT * FROM productos";
$resultado=mysql_query($consulta);
$count_results = mysql_num_rows($resultado);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Ver Detalles</td>
</tr>
<?php
while($fila=mysql_fetch_array($resultado)) { ?>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><a href="detalle.php?id=<?php echo $fila['id_producto']; ?>" target="_self">SI</a></td>
</tr>
<?php } ?>
</table>
</body>
</html>

Detalle.php:

<?php
include("conexion.php");
$consulta="SELECT * FROM productos where id_producto = $_GET ['id']";
$resultado=mysql_query($consulta);
$fila = mysql_fetch_assoc($resultado);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Categoria</td>
</tr>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><?php echo $fila["categoria"]; ?></td>
</tr>
</table>
</body>
</html>

Lo resumí un poco para que no se dificulte la lectura.

Muchas gracias por la ayuda que me puedan dar.

El error es el siguiente:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/detalle.php on line 5
  #11 (permalink)  
Antiguo 10/07/2014, 12:03
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

Mete la variable de la conexión en el query, por si acaso. Te lo puse antes.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #12 (permalink)  
Antiguo 10/07/2014, 12:04
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Les paso como está hecho mi archivo de conexión:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("base");
?>

Puede ser que esté aquí el error?
  #13 (permalink)  
Antiguo 10/07/2014, 12:17
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

Te dejo un ejemplo completo de MySQL:
Conexión :
Código PHP:
    $Conexion mysql_connect('localhost''Usuario''Contraseña') or trigger_error(mysql_error(),E_USER_ERROR); 
    
mysql_select_db('BaseDatos'$Conexion); 
Consulta:
Código PHP:
    $Consulta "SELECT * FROM NombreTabla WHERE Campo = 'Valor';";
    
$resultado mysql_query($Consulta$Conexion) or die(mysql_error());
    
$fila mysql_fetch_assoc($resultado);
    
$totalfilas mysql_num_rows($resultado); 
Y ahora lo mismo en MySQLi que es la que deberías de empezar a usar.
Conexion:
Código PHP:
$Conexion = new mysqli($hostname$username$password$database);
if (
mysqli_connect_errno()) {
    echo 
"Error en conexion: "mysqli_connect_error();
    exit();
}
$Conexion->select_db($database);
$Conexion->set_charset('utf8'); 
Consulta
Código PHP:
$Consulta "SELECT * FROM NombreTabla WHERE CampoCondicion = 'Valor';";
$Fila $Conexion->query($Consulta);
$TotalFilas $Conexion->affected_rows;
// Una sola Fila
$Registro $Fila->fetch_assoc();
// Recorrer las filas
while ($Registro $Fila->fetch_assoc()){
     echo 
'Ejemplo del registro: ' $Registro['NombredelCampo'].'<br>';

Fíjate que en ambos casos se pasa la conexión.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #14 (permalink)  
Antiguo 10/07/2014, 12:32
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Les paso como quedaron los códigos de mis archivos:

Conexion.php:

<?php
$Conexion = mysql_connect('localhost', 'root', '') or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db('base', $Conexion);
?>

Resultado.php:

<?php
include("conexion.php");

$Consulta = "SELECT * FROM productos";
$resultado = mysql_query($Consulta, $Conexion) or die(mysql_error());
$fila = mysql_fetch_assoc($resultado);
$totalfilas = mysql_num_rows($resultado);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Ver Detalles</td>
</tr>
<?php
while($fila=mysql_fetch_array($resultado)) { ?>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><a href="detalle.php?id_producto=<?php echo $fila['id_producto']; ?>" target="_self">SI</a></td>
</tr>
<?php } ?>
</table>
</body>
</html>

Detalle.php:

<?php
include("conexion.php");

$Consulta = "SELECT * FROM productos WHERE id_producto = $_GET ['id']";
$resultado = mysql_query($Consulta, $Conexion) or die(mysql_error());
$fila = mysql_fetch_assoc($resultado);
$totalfilas = mysql_num_rows($resultado);

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table width="320" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td>Categoria</td>
</tr>
<tr>
<td><?php echo $fila["nombre"]; ?></td>
<td><?php echo $fila["categoria"]; ?></td>
</tr>
</table>
</body>
</html>

Pero ahora me da el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '['id'_producto]' at line 1

Me podrán ayudar?

Muchas gracias!
  #15 (permalink)  
Antiguo 10/07/2014, 12:37
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

Ok prueba a hacer lo siguiente:

Código PHP:
$PilloID $_GET['id'];
$Consulta "SELECT * FROM productos WHERE id_producto = '".$PilloID."'"
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #16 (permalink)  
Antiguo 10/07/2014, 12:42
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta Página Detalle / Maestro con PHP

Muchas gracias Book Master, se ha solucionado!

Geniooo!

Un abrazo grande!
  #17 (permalink)  
Antiguo 10/07/2014, 12:50
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 5 meses
Puntos: 67
Respuesta: Consulta Página Detalle / Maestro con PHP

Ahora ya te falta empezar a usar MySQLi y aprender a proteger los datos y filtrarlos, ya que como lo tienes ahora te podrían hackear la página fácilmente.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Etiquetas: detalle, html, maestro, mysql, página, select, sql
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 13:04.