Foros del Web » Programando para Internet » PHP »

Problema con categorias

Estas en el tema de Problema con categorias en el foro de PHP en Foros del Web. Buenas a todos, Intento agregar unas categorías donde se muestren los productos. Para ello, creé en una base datos una tabla llamada "categorias". Dentro de ...
  #1 (permalink)  
Antiguo 20/10/2012, 12:11
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Problema con categorias

Buenas a todos, Intento agregar unas categorías donde se muestren los productos. Para ello, creé en una base datos una tabla llamada "categorias". Dentro de esta tabla contiene:

idcat ( ID de la categoría) y nombrecat (Nombre de la categoría)

En la tabla "productos" contiene;

id, imagen, nombre, descripcion, precio, cuanto_hay, fecha.
(Solo me gustaría utilizar de esta tabla: id y nombre)

El código php que utilizé fué:

<?php include ('contenido/conexion.php');?>

<?php
mysql_select_db('tienda');
$consultaCategorias = mysql_query("SELECT nombrecat FROM categorias");
while($categorias = mysql_fetch_array($consultaCategorias)){
echo "<td><a href='index.php?categorias=$categorias[nombrecat]'>$categorias[nombrecat]</a></td>";
}
?>

<?php
if(isset($_GET["categoria"])){
$consulta = mysql_query("SELECT categorias.idcat, categorias.nombrecat, productos.nombre FROM categorias INNER JOIN productos ON categorias.idcat = productos.id WHERE (categorias.nombrecat = '$_GET[categoria]')");
echo "<table>";
while($producto = mysql_fetch_array($consulta)){
echo"<tr><td>$producto[nombre]</td>$producto[nombrecat]<td></tr>";
}
echo "</table>";
}
?>

En la web aparece correctamente las categorías pero habrá algún fallo en el código porque no aparece los productos dentro de las categorías, ¿Alguien podría ayudarme? ¡Un saludo y Gracias!
  #2 (permalink)  
Antiguo 20/10/2012, 12:25
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años, 6 meses
Puntos: 58
Respuesta: Problema con categorias

Por partes.
Base de datos. Se supone que en la tabla productos debes incluir el idcat al que pertenecen, quedando:
idcat ( ID de la categoría) y nombrecat (Nombre de la categoría)
id, idcat, imagen, nombre, descripcion, precio, cuanto_hay, fecha.

En el enlace, es mejor que uses el idcat de la categoría, ya que si los nombres de las categorías contienen, eñes, tildes... y demás caracteres 'extraños', es posible que no funcione. Quedaría:
Código PHP:
Ver original
  1. <?php
  2. mysql_select_db('tienda');
  3. $consultaCategorias = mysql_query("SELECT idcat, nombrecat FROM categorias");
  4. while($categorias = mysql_fetch_array($consultaCategorias)){
  5. echo "<td><a href='index.php?categorias=$categorias[idcat]'>$categorias[nombrecat]</a></td>";
  6. }
  7. ?>

Cuando recibes los datos, buscas que el producto pertenezca a idcat. Ten en cuenta que en el enlace has puesto como variable GET 'categorias' y sin embargo en la recepción compruebas el GET 'categoria'. Quedaría:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_GET["categorias"])){
  3. $consulta = mysql_query("SELECT categorias.nombrecat, productos.nombre FROM categorias LEFT JOIN productos ON categorias.idcat = productos.idcat WHERE categorias.idcat = '".$_GET[categorias]."'");
  4. echo "<table>";
  5. while($producto = mysql_fetch_array($consulta)){
  6. echo"<tr><td>$producto[nombre]</td>$producto[nombrecat]<td></tr>";
  7. }
  8. echo "</table>";
  9. }
  10. ?>
  #3 (permalink)  
Antiguo 20/10/2012, 12:45
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema con categorias

@Jossss ¡Muchas gracias por tu ayuda!

Al realizar las modificaciones que explicastes me manda el siguiente error;

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in on line 22
  #4 (permalink)  
Antiguo 20/10/2012, 16:19
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Problema con categorias

El error dice que esa función esperaba un parametro con algun valor, al parecer el valor de $consulta debe ser NULL

anda depurando el script y viendo con var_dump($consulta) que valor tiene.

Etiquetas: mysql
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 14:04.