Tengo algunos productos almacenados en una tabla con ID incrementado automáticamente titulado "product_id".

He logrado crear una página que muestra una lista de los nombres de productos seleccionados de la base de datos y enlaces creados dinámicamente para cada uno. Digamos que tengo un producto de manzana. Cuando hago clic en Apple, me lleva a view_product_details.php? Id = 9

Pero cuando hago clic en apple, la página view_product_details.php me dice "Aviso: índice no definido: product_id en C: \ xampp \ htdocs \ working \ product-website-exercise \ view_product_details.php en la línea 16"

<?php 

//$result = mysql_query("SELECT * FROM temaproduct.products WHERE ID = '".mysql_real_escape_string($_GET['product_id'])."'");


        $id = $_GET['product_id']; //This is line 16

        $result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");

        echo $result['product_description'];

echo "<br>";
var_dump($result);

?>

He intentado con diferentes consultas pero no puedo resolverlo, por favor ayúdeme a establecer la conexión correctamente para que pueda leer los otros campos de la tabla en la página view_product_details, según product_id.

EDITAR: Gracias chicos, con su ayuda, aquí está el código que funciona ahora, si todos necesitan este fragmento:

<?php
$id = intval($_GET['id']); 
$sql = mysqli_query($conn,"SELECT * FROM products WHERE product_id = ".$id);
if(mysqli_num_rows($sql)){
    $product_data = mysqli_fetch_array($sql);
    echo "<h2><center>".$product_data['title']."</h2></center>";
}
?>
3
J. Doe 28 ene. 2016 a las 15:49

4 respuestas

La mejor respuesta

Está utilizando id como una cadena de consulta en esta URL como:

view_product_details.php?id=9

Entonces, necesitas obtener una identificación como:

$id = $_GET['id']; //This is line 16

El segundo problema en su código es que no puede obtener el resultado de la base de datos sin usar la función mysqli_fetch_*.

echo $result['product_description']; // this will return nothing

Su código modificado:

<?
$id = intval($_GET['id']); 
$sql = mysqli_query($conn,"SELECT * FROM products WHERE ID = ".$id);
if(mysqli_num_rows($sql)){
    $result = mysqli_fetch_array($sql);
    echo $result['product_description'];
}
else{
    echo "No record found";
}
?>

Sugerencia:

Debe hacer una cosa más, use la función intval() si alguna cadena de paso o cualquier otra cosa en la cadena de consulta que su consulta no devolverá un error, solo devuelva 0 registro como:

Ejemplo:

view_product_details.php?id=abcdJUNK

Luego, conviértalo en 0 como:

$id = intval($_GET['id']); 

Para futuros visitantes:

Después de la depuración, se encontró este error " ID de columna desconocido "

Así que la consulta correcta fue esta como OP mencionó ( el nombre de la columna era product_id ):

SELECT * FROM hangouts WHERE product_id = 9
3
devpro 28 ene. 2016 a las 13:55

Dos problemas aquí, primero, su atributo de nombre en forma html es diferente, luego lo que está usando en php cambié el código php para ese problema y el segundo problema es que le falta convertir el resultado en una matriz asociativa y llamar directamente a la descripción del producto que acaba de leer los comentarios en la versión modificada del código a continuación.

Este es tu código actual

    $id = $_GET['product_id']; //This is line 16

    $result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");

    echo $result['product_description'];

Así es como debería ser

    // this is the solution for first issue
    $id = $_GET['id']; //This is line 16

    $result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");

    // this is the solution for second issue
    // covert it to associative array
    $resultData = mysqli_fetch_assoc($result);

    echo $resultData['product_description'];
1
WebDudor 28 ene. 2016 a las 13:34

De acuerdo con su código y la URL que proporcione, está pasando un valor en la variable id no en product_id. Esta es su URL view_product_details.php?id=9 aquí el valor está en la variable id es decir, id=9.

$id = $_GET['id']; //This is line 16
1
urfusion 28 ene. 2016 a las 13:04

En realidad, está pasando id en view_product_details.php?id=9 parámetros de consulta, no product_id en la URL.

Para usar product_id puede cambiar la URL como view_product_details.php?product_id=9 o puede usar $_GET['id']

& reemplazar esta línea

$id = $_GET['product_id'];

Con este

$id = $_GET['id'];

Puede utilizar get_defined_vars (http://php.net/ manual / en / function.get-defined-vars.php) para verificar qué variables son disponible.

También le sugiero que suprima sus errores para la producción y muestre todos los errores en desarrollo.

Para ocultar errores en producción

ini_set("display_errors", 0);
ini_set("log_errors", 1);

Para mostrar errores en desarrollo

error_reporting(E_ALL);
ini_set('display_errors', 1);
1
ARIF MAHMUD RANA 28 ene. 2016 a las 13:04