Foros del Web » Programando para Internet » PHP »

Consultar BD, guardar en array y mostrar en select

Estas en el tema de Consultar BD, guardar en array y mostrar en select en el foro de PHP en Foros del Web. Hola amigos: Necesito consultar unos datos en la BD mysql y guardarlos en un array para mostrarlo en un select. Esto es lo que tengo. ...
  #1 (permalink)  
Antiguo 02/06/2009, 09:29
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Consultar BD, guardar en array y mostrar en select

Hola amigos:

Necesito consultar unos datos en la BD mysql y guardarlos en un array para mostrarlo en un select. Esto es lo que tengo. El select:

Código PHP:
    echo "<li><b>Talla:</b>";
    for (
$i=0;$i<count($tallas['talla']);$i++)    
{
    echo 
"<select name=\"talla[]\">";
    echo 
"<option value=\"{$tallas['talla']}\">{$tallas['talla']}</option>";
    echo 
"</select>";

La consulta aqui está el lio:

Código PHP:
function get_product_details2($sku)
{
  
// Petición a la base de datos por todos los detalles de un producto particular
  
if (!$sku || $sku==""
     return 
false;
   
$conn db_connect();
   
$query2 "select * from talla where id_articulo='$sku'";
   
$result2 = @mysql_query($query2);
   if (!
$result2
     return 
false;
   
$result2 = @mysql_fetch_array($result2);
   return 
$result2;

yo llamo esta función en esta página:

Código PHP:

<?
  
include ('func.php');
   
session_start();
    
$sku = (isset($_GET['sku'])) ? $_GET['sku'] : 0;
   
  
// obtener este producto de la base de datos
  
$tallas get_product_details2($sku);
  
display_product_details($product$tallas$colores);
      
$_SESSION['tallas'];
    
?>
no se como ponerlo. Por favor necesito ayuda, gracias.
  #2 (permalink)  
Antiguo 02/06/2009, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consultar BD, guardar en array y mostrar en select

Que es lo que hace la función display_product_details?

Saludos.
  #3 (permalink)  
Antiguo 02/06/2009, 09:47
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
puse parte de ella en este trozo:

echo "<li><b>Talla:</b>";
for ($i=0;$i<count($tallas['talla']);$i++)
{
echo "<select name=\"talla[]\">";
echo "<option value=\"{$tallas['talla']}\">{$tallas['talla']}</option>";
echo "</select>";
}

Esta es la función completa:

Código PHP:
<?php
function display_product_details($product$tallas$colores)
{
  
// display all details about this product
  
if (is_array($product))
  {
    echo 
"<table><tr>";
    
//display the picture if there is one
        
if(@file_exists("img/".$product["sku"]. ".jpg"))
    {
      
$size GetImageSize("img/".$product["sku"].".jpg");
      if(
$size[0]>&& $size[1]>0)
        echo 
"<td><img src=\"img/".$product["sku"].".jpg\" border=0 ".$size[3]."></td>";
    }
    else {
        if(@
file_exists("img/".$product["sku"]. ".gif"))
      
$size GetImageSize("img/".$product["sku"].".gif");
      if(
$size[0]>&& $size[1]>0)
        echo 
"<td><img src=\"img/".$product["sku"].".gif\" border=0 ".$size[3]."></td>";
    }
    echo 
"<td><ul>";
    echo 
"<li><b>Tienda:</b> ";
    echo 
"<a href =\"show_tienda.php?nombre_tienda=".$product["nombre_tienda"]."\"> ".$product["nombre_tienda"]." </a>";
    echo 
"<li><b>Nombre:</b> ";
    echo 
$product["title"];
    echo 
"<li><b>Nuestro Precio:</b> ";
    echo 
number_format($product["price"], 2);
    echo 
"<li><b>Descripción:</b> ";
    echo 
$product["description"];
    echo 
"<li><b>Talla:</b>";
    for (
$i=0;$i<count($tallas['talla']);$i++)    
{
    echo 
"<select name=\"talla[]\">";
    echo 
"<option value=\"{$tallas['talla']}\">{$tallas['talla']}</option>";
    echo 
"</select>";
    }
    echo 
"<li><b>Color:</b>";
    echo 
"<select name=\"colores\">";
    echo 
"<option value=\"{$colores['color']}\">{$colores['color']}</option>";
    echo 
"</select>";
    echo 
"</ul></td></tr></table>";
  }
  else {
    echo 
"Los detalles de este producto no pueden ser mostrados en este momento.";
  echo 
"<hr>";
}
}
?>
Agradezco ayuda

Última edición por GatorV; 02/06/2009 a las 11:37
  #4 (permalink)  
Antiguo 02/06/2009, 11:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consultar BD, guardar en array y mostrar en select

Pues lo que tu devuelves con tu función get_product_details2 es un recurso de MySQL, no un array y tu función display_product_details espera un arreglo, no un recurso.

Para arrelgarlo tienes que hacer una de dos cosas, o cambias tu función get_product_details2 para que te regrese un arreglo, o modificas tu función display_product_details para que en lugar de ciclar un array lo haga sobre un resource de MySQL.

Saludos.
  #5 (permalink)  
Antiguo 02/06/2009, 11:54
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Consultar BD, guardar en array y mostrar en select

Gracias GatorV, pero no se como hacer para meter la consulta en un array y pasarselo a $tallas = get_product_details2($sku); y luego mostrarlo en el select.

Es que estoy muy confundida con todo lo que he leido y no se como poner las cosas.

Por favor si puedes ayudarme a entender como hacerlo te lo agradeceria mucho.
  #6 (permalink)  
Antiguo 02/06/2009, 12:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consultar BD, guardar en array y mostrar en select

Pues es sencillo, solo ciclas y agregas a un array:
Código php:
Ver original
  1. function get_product_details2($sku)
  2. {
  3.   // Petición a la base de datos por todos los detalles de un producto particular
  4.   if (!$sku || $sku=="")
  5.      return false;
  6.    $conn = db_connect();
  7.    $query2 = "select * from talla where id_articulo='$sku'";
  8.    $result2 = @mysql_query($query2);
  9.    if (!$result2)
  10.      return false;
  11.    $tallas = array();
  12.    while($result2 = mysql_fetch_array($result2)) {
  13.          $tallas[] = $result2;
  14.    }
  15.    return $tallas;
  16. }

Saludos.
  #7 (permalink)  
Antiguo 02/06/2009, 21:05
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Consultar BD, guardar en array y mostrar en select

GatorV muchas gracias por tu ayuda. Apliqué el código pero me da el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

es en esta línea:

Código PHP:
while($result2 mysql_fetch_array($result2)) { 
a que se debe esto???
  #8 (permalink)  
Antiguo 02/06/2009, 21:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Consultar BD, guardar en array y mostrar en select

Estas asignando el resultado de la consulta $result2 a $result2, se soluciona asi:

Código php:
Ver original
  1. while($row = mysql_fetch_array($result2)) {
  2.          $tallas[] = $row;
  3.    }
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 02/06/2009, 22:22
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Consultar BD, guardar en array y mostrar en select

Hola triby, todo muy bien gracias por tu ayuda, pero no me muestra la talla cuando va a:

Código PHP:
echo "<li><b>Talla:</b>"
    for (
$i=0;$i<count($tallas['talla']);$i++)     

    echo 
"<select name=\"talla[]\">"
    echo 
"<option value=\"{$tallas['talla']}\">{$tallas['talla']}</option>"
    echo 
"</select>"
    } 
no se si el error está alli o cuando hago esto:

Código PHP:
<? 
  
include ('func.php'); 
   
session_start(); 
    
$sku = (isset($_GET['sku'])) ? $_GET['sku'] : 0
    
  
// obtener este producto de la base de datos 
  
$tallas get_product_details2($sku); 
  
display_product_details($product$tallas$colores); 
      
$_SESSION['tallas']; 
    
?>
No se
  #10 (permalink)  
Antiguo 02/06/2009, 23:55
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Consultar BD, guardar en array y mostrar en select

Kimmy, ver solo partes del codigo es muy dificil porque no se puede apreciar que es lo que tratas de hacer en cada segmento. De entrada te digo que en el segundo bloque $_SESSION['tallas']; esta solo de adorno, no haces una asignacion, no ejecutas una funcion.

En el primer bloque tienes un error, debes crear el <select> antes de ingresar al for() y terminarlo al salir, ademas, te falta obtener la talla actual y marcarla como "selected", supongo que la tienes almacenada en $_SESSION['talla']

Código php:
Ver original
  1. echo "<li><b>Talla:</b>";
  2.     echo "<select name=\"talla[]\">";
  3.     for ($i=0;$i<count($tallas['talla']);$i++)    
  4.     {
  5.          $estado = ($tallas['talla'] == $_SESSION['talla']) ? ' selected="selected"' : '';
  6.          echo "<option value=\"{$tallas['talla']}\"$estado>{$tallas['talla']}</option>";
  7.     }
  8. echo "</select>";
__________________
- León, Guanajuato
- GV-Foto
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:53.