Foros del Web » Programando para Internet » PHP »

Obtener selección de listbox desde otra página

Estas en el tema de Obtener selección de listbox desde otra página en el foro de PHP en Foros del Web. Buen día a todos, les hago una consulta que me imagino es muy sencilla pero yo como novato no encuentro por ninguna parte de la ...
  #1 (permalink)  
Antiguo 16/01/2012, 14:54
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Obtener selección de listbox desde otra página

Buen día a todos, les hago una consulta que me imagino es muy sencilla pero yo como novato no encuentro por ninguna parte de la red:

Lo que quiero hacer es tomar la opción que elija un cliente de un listbox y mostrarla en otra página, esto es relacionado con un carrito de compras que estoy armando en una página.

El cliente elegirá un producto y en seguida elegirá el color, cabe aclarar que ya me funciona el carrito de compras, lo único que no puedo hacer es que me tome el color que elige el cliente y lo muestre en la orden de compra, les pongo el código por si facilita la ayuda:

Este código es donde el cliente elige el producto y el color

Código PHP:
<?php

$id 
$_GET['id'];
            
$resultado mysql_query("SELECT id, producto, precio FROM productos WHERE id='1'")or die( "Error en query: $sql, el error  es: " mysql_error() );
$resultado2 mysql_query("SELECT id, color FROM color ")or die( "Error en query: $sql, el error  es: " mysql_error() );
            
$consulta "select id, color from color";
$result=mysql_query($consulta);
            
    echo 
"<div class=verproductos>";
    echo 
"<table style=border:1px solid #333333>
                <tr class=titulo>
                    <th style='display:none'>ID</th>
                    <th class='desc_largo'>Producto</th>
                    <th style='width:50px;text-align:center'>Color</th>
                    <th style='width:100px;text-align:center'>Precio</th>
                    <th style='width:50px;text-align:right'>Acción</th>
                    
                </tr>"
;
                
            
            while (
$productos mysql_fetch_array($resultado)) { 
                echo 
"<tr class='borde_tabla'><td style='display:none'>" $productos['id'] . "</td>";     
                echo 
"<td>" $productos['producto'] . "</td>";     
                
?>
                <td><select name="color">
                    <option value="">seleccionar</option>
                <?
                
while($fila=mysql_fetch_row($result)){
                echo 
"<option value='".$fila['0']."'>".$fila['1']."</option>";
                }
                
?>
                </select></td>
                <?
                
echo "<td style='text-align:right'>$" $productos['precio'] . "  </td>";
                echo 
"<td style='text-align:right'>
                        <a href='carro.php?id=" 
$productos['id'] . "&action=";
                        if (isset(
$_SESSION['carro'][$productos['id']])){
                        echo 
"removeProd' alt='Eliminar del carro'><img src='img/remove_carro.png' width='48' height='48' alt='Eliminar del carro' title='Añadir producto al carrito'>";
                        }
                        else
                        echo 
"add' alt='Añadir al carro'><img src='img/add_carro.png' width='48' height='48' alt='Añadir al carrito' title='Añadir producto al carrito'>";
                                    
                        echo 
"</a></td>";
                 }
        
            echo 
"</table>";
            echo 
"</div>";
        
?>
Les dejo también el código desde donde estoy tomando la información de compra:

Código PHP:
<?php
            
            
if (isset($_GET['id']))
                
$id $_GET['id'];
            else
                
$id 1;
            
            if (isset(
$_GET['action']))
                
$action $_GET['action'];
            else
                
$action "empty";
    
    
            switch(
$action){
            
                case 
"add":
                    if(isset(
$_SESSION['carro'][$id]))
                        
$_SESSION['carro'][$id]++;
                    else
                        
$_SESSION['carro'][$id]=1;
                break;
                
                case 
"remove":
                    if(isset(
$_SESSION['carro'][$id]))
                    {
                        
$_SESSION['carro'][$id]--;
                        if(
$_SESSION['carro'][$id]==0)
                            unset(
$_SESSION['carro'][$id]);
                    }
                    
                break;
                case 
"removeProd":
                    if(isset(
$_SESSION['carro'][$id])){
                        unset(
$_SESSION['carro'][$id]);
                    }
                break;
                
                case 
"mostrar":
                    if(isset(
$_SESSION['carro'][$id])){
                        continue;
                    }
                break;
                
                case 
"empty":
                    unset(
$_SESSION['carro']);
                
                break;
                        
                
            }

            if(isset(
$_SESSION['carro'])){
                echo 
"<table border=0 cellspacing=5 cellpadding=3 width='500'>";
                
$totalcoste 0;
                
                
$xTotal 0;
                
                echo 
"<tr>";
                    echo 
"<td>Producto</td>";
                    echo 
"<td>Color</td>";
                    echo 
"<td>Cantidad</td>";
                    echo 
"<td>Acción</td>";
                    echo 
"<td colspan=2 align=right>Total</td>";
                echo 
"</tr>";
                echo 
"<tr><td colspan=5><hr></td></tr>";
    
                
                foreach(
$_SESSION['carro'] as $id => $x){
                    
$resultado mysql_query("SELECT id, producto, precio FROM productos WHERE id=$id");
                    
$resultado2 mysql_query("SELECT id, color FROM color ");
                    
$mifila mysql_fetch_array($resultado);
                    
$id $mifila['id'];
                    
$producto $mifila['producto'];
                    
                    
$producto substr($producto,0,40);
                    
$precio $mifila['precio'];
                    
                    
$coste $precio $x;
                    
                    
$totalcoste $totalcoste $coste;
                    
                    
$xTotal $xTotal $x;
                    
                    echo 
"<tr>";
                    echo 
"<td align='left'> $producto </td>";
                    echo 
"<td align='left'> $color </td>";
                    echo 
"<td align='center'>$x</td>";
                    
                    echo 
"<td align='left'>";
                    echo 
"<a href='carro.php?id="$id ."&action=add'><img src='img/aumentar.png' style='padding:0 0px 0 5px;' alt='Aumentar cantidad' /></a>";
                    
                    
//if ($x > 1)
                        
echo "<a href='carro.php?id="$id ."&action=remove'><img src='img/restar.png' alt='Reducir cantidad' /></a>";
                    
//else
                        
echo "<a href='carro.php?id="$id ."&action=removeProd'><img src='img/eliminar.png' alt='Reducir cantidad' /></a></td>";
                    
                    echo 
"<td align='right'> = </td>";
                    echo 
"<td align='right' style='margin-left:10px'>$$coste ";
                    echo 
"</tr>";
                }
                echo 
"<tr><td colspan='5'><hr></td></tr>";
                echo 
"<tr>";
                echo 
"<td align='right' colspan='4'><b><br>Total = </b></td>";
                echo 
"<td align='right'><b><br>$ $totalcoste </b> </td>";
                echo 
"</tr>";
                
//BOTON COMPRAR
                
echo "<tr>";
                echo 
"<td align='right' colspan='5'>
                        <a href='comprar.php'><input type='button' value='finalizar compra' /></a>
                </td>"
;
                echo 
"</tr>";
                
                echo 
"</table>";
                
                
            }
            else
                echo 
"El carro está vacío";
    
            
            
$_SESSION["totalcoste"] = $totalcoste;
            
$_SESSION["cantidadTotal"] = $xTotal;
            echo (
"<a href='javascript:history.back(1)'>Regresar</a>")
        
        
?>
Espero con eso sea suficiente, siento que estoy apunto de terminar pero esto me atoró demasiado, desde ya muchas gracias por sus aportaciones, estaré al pendiente.
  #2 (permalink)  
Antiguo 17/01/2012, 03:32
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Obtener selección de listbox desde otra página

Te faltan las etiquetas <form>.
Todo los elementos de formulario deben estar incluídos, luego accedes a los elementos mediante el array $_POST.

http://myphpform.com/php-form-tutorial.php


Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 17/01/2012, 12:18
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Cita:
Iniciado por repara2 Ver Mensaje
Te faltan las etiquetas <form>.
Todo los elementos de formulario deben estar incluídos, luego accedes a los elementos mediante el array $_POST.

[url]http://myphpform.com/php-form-tutorial.php[/url]


Salu2
Muchas gracias por tu aporte, más o menos le estoy entendiendo pero me surgió otra duda:

Esta método trabaja igual con una base de datos? Creo que se me olvidó indicar que los colores que elige el cliente se toman de una base de datos:

Código PHP:
<td><select name="color"> 
                    <option value="">seleccionar</option> 
                <? 
                
while($fila=mysql_fetch_row($result)){ 
                echo 
"<option value='".$fila['0']."'>".$fila['1']."</option>"
                } 
                
?> 
                </select></td>
  #4 (permalink)  
Antiguo 17/01/2012, 13:03
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Obtener selección de listbox desde otra página

si trabaja igual solo tienes que cargar en los listbox los colores que estan en la base de datos y los valores viajan por variable como te indicaron $_POST y se almacenan para su reutilizacion

tal como indico repara2
  #5 (permalink)  
Antiguo 17/01/2012, 14:55
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Ok, igualmente muchas gracias por ayudarme a entender esto.
Empecé a avanzar y me hice bolas con todo esto pero casualmente llegué a un resultado, aún no es el esperado pero me estoy acercando, me explico:

Para que me tome el producto de la base de datos tengo esto:
Código PHP:
$resultado mysql_query("SELECT id, producto, precio FROM productos WHERE id='1'")or die( "Error en query: $sql, el error  es: " mysql_error() ); 
Ahí le indico que me tome el producto de la base de datos con el id 1 ok?

Y para que me muestre el nombre del producto tengo esto:
Código PHP:
while ($productos mysql_fetch_array($resultado)) { 
                echo 
"<tr class='borde_tabla'><td style='display:none'>" $productos['id'] . "</td>";    
                echo 
"<td>" $productos['producto'] . "</td>"
Para que me tome el color de otra tabla de la base de datos puse esto:
Código PHP:
$consulta "select id, color from color";
            
$result=mysql_query($consulta); 
Y para que me lo muestre puse esto:
Código PHP:
<td><select name="color">
                    <option value="">seleccionar</option>
                <?
                
while($fila=mysql_fetch_row($result)){
                echo 
"<option value='".$fila['0']."'>".$fila['1']."</option>";
                }
                
?>
                </select></td>
Ahí le estoy indicando que me tome las columnas id y color de la tabla color y me las ponga en un listbox, ok?

Ya en la página donde se muestra lo que se ha añadido al carro de compras tengo esto:

Código PHP:
foreach($_SESSION['carro'] as $id => $x){
                    
$resultado mysql_query("SELECT id, producto, precio FROM productos WHERE id=$id");
                    
$consulta mysql_query("select id, color from color where id=$id");
                    
$mifila mysql_fetch_array($resultado);
                    
$mifila2 mysql_fetch_array($consulta);
                    
$id $mifila['id'];
                    
$producto $mifila['producto'];
                    
$producto substr($producto,0,40);
                    
$color $mifila2['color'];
                    
$precio $mifila['precio']; 
(Hay más código donde me muestra el precio y se puede agregar/restar productos y me hace la suma de lo que llevo pero creo que para el caso está de más ponerlo aquí)

Hasta aquí todo bien, me muestra el producto, su precio, me hace la suma y todo, pero en el espacio asignado para el color, me muestra el que tiene el id 1, y eso es obvio porque creo que se lo estoy indicando en esta parte:

Código PHP:
$consulta mysql_query("select id, color from color where id=$id"); 
Ahora mi pregunta es: Cómo le indico que me muestre el color que el usuario eligió en la página anterior?

Mi lógica es:
Código PHP:
$consulta mysql_query("seleccionar id, color de_la_tabla_color donde id=el_que_eligió_el_usuario_en_la_página_anterior"); 
Cómo hago eso?? Agradezco nuevamente su tiempo para contestarme
  #6 (permalink)  
Antiguo 18/01/2012, 16:25
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Alguien que me pueda ayudar??
Le he seguido buscando y no encuentro nada, alguien que me diga al menos si mi lógica es la correcta.

Gracias adelantadas
  #7 (permalink)  
Antiguo 18/01/2012, 22:55
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Obtener selección de listbox desde otra página

veamos lo miro y te digo
  #8 (permalink)  
Antiguo 18/01/2012, 23:08
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Obtener selección de listbox desde otra página

disculpa pero no eh entendido supondre que tienes varios combobox y a medida que un usuario seleccione uno el otro cambia con los valores seleccionados previamente (si no es eso me explicas de nuevo si es asi ok).

si es asi entonces entendere que optienes todos los valores menos los del color pero para obtener el color si es un formulario que hay no eh visto si lo es o no solo lo recojes en la otra pagina con el valor $_POST["nombrecombo"]; de lo contrario (eso es lo que no entiendo) si no consiges ver los colores explicalo pk hay es donde estoy perdido si puedes seleccioanr todo y no te deja guardar o que es
  #9 (permalink)  
Antiguo 19/01/2012, 01:04
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Cita:
Iniciado por jmabreu Ver Mensaje
disculpa pero no eh entendido supondre que tienes varios combobox y a medida que un usuario seleccione uno el otro cambia con los valores seleccionados previamente (si no es eso me explicas de nuevo si es asi ok).

si es asi entonces entendere que optienes todos los valores menos los del color pero para obtener el color si es un formulario que hay no eh visto si lo es o no solo lo recojes en la otra pagina con el valor $_POST["nombrecombo"]; de lo contrario (eso es lo que no entiendo) si no consiges ver los colores explicalo pk hay es donde estoy perdido si puedes seleccioanr todo y no te deja guardar o que es
Ok, antes que nada muchas gracias por tu atención:

Lo que intento es obtener unos datos para pasarlos a un carrito de compra, intentaré ser más explícito pues apenas me estoy familiarizando con el PHP y no me se aún los términos que se manejan.

- En una página muestro un sólo producto, de este producto se tiene que elegir el color (aquí es donde tengo el listbox, que en el código es el "<select") para después darle "agregar al carro"
- Al darle "agregar al carro de compras" me presenta en otra página (carro.php) el producto + el color elegido + el precio, etc etc.
- Todo me lo presenta bien pero en la parte donde va el color me presenta siempre el Rojo (que en la base de datos es el primero en la tabla de colores, o sea el que tiene el id=1

- En el listbox de la página anterior se muestra una lista de 14 colores y todos me los toma de la base de datos, no los puse en el código, creo que al elegirlo tengo que poner una orden tipo "color elegido" para después en el carro.php tomar ese dato y ponerlo nuevamente (color elegido). Sólo que no se como hacer esto, ni siquiera se todavía si esa es la lógica que debo seguir.

Ya puse en línea la página para que te des una mejor idea de lo que requiero:

[URL="http://www.dejavu.com.mx/sim_nat_1.php"]http://www.dejavu.com.mx/sim_nat_1.php[/URL]

En esta página debajo del simulador están los datos del producto y al elegir color te lo debe llevar a la página carro.php (dándo click en el carro de compras).

Como verás en la siguiente página me aparecen bien los datos, menos el color que siempre aparece el Rojo.

Espero haber sido lo suficiente explícito y muchas gracias nuevamente
  #10 (permalink)  
Antiguo 19/01/2012, 18:32
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Medio entiendo lo de meter el listbox en un <form> para obtenerlo después mediante array $_POST, pero lo he intentado de varias formas y siempre me da error.

Alguien podría decirme como incluír el form y llamarlo después con el array $_POST ??

Gracias adelantadas
  #11 (permalink)  
Antiguo 20/01/2012, 03:30
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 3
Respuesta: Obtener selección de listbox desde otra página

Me surgió una nueva duda:

Siempre que haya un <form> debe llevar un botón tipo "submit"??

Lo digo porque ya tengo un botón de "agregar al carro de compras".
Un "submit" después de elegir el color interferiría porque el botón de "agregar..." cambia a "agregar" o "quitar" dependiendo la situación.

Cualquier comentario es bien recibido
Gracias

Etiquetas: listbox
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 00:40.