Foros del Web » Programando para Internet » PHP »

Como armar variable para tomar otro dato

Estas en el tema de Como armar variable para tomar otro dato en el foro de PHP en Foros del Web. Buen día, estoy armando una página con carrito de compras y me he atorado en una parte, me explico: Tomo unos datos de una BD, ...

  #1 (permalink)  
Antiguo 21/01/2012, 02:42
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Como armar variable para tomar otro dato

Buen día, estoy armando una página con carrito de compras y me he atorado en una parte, me explico:

Tomo unos datos de una BD, en la cual tengo la tabla productos y la tabla color:
Código PHP:
$resultado mysql_query("SELECT id, producto FROM productos WHERE id='1'")
$consulta "select id, color FROM color";
$result=mysql_query($consulta); 
Y estos datos los presento así:
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>"
Código PHP:
<form method="post" action="carro.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>
                </form>
Como ven se presenta el producto y en un <select> muestro una lista de colores para que el cliente seleccione el color de su producto.
Esto lo mando a otra página (carro.php) de esta manera:

Código PHP:
echo "<td style='text-align:right'>
        <a href='carro.php?id=" 
$productos['id'] . "&action=";
        
//Detectamos si el producto ya se ha añadido al carro de compras para usar una imagen u otra.
        //Si se ha añadido usamos una imagen para Restar una cantidad al carro
        
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>"
Como ven tengo una imagen de un carrito de compras para agregar el producto a la página carro.php
Mi duda es:
Como agrego una variable para tomar el color elegido en el <select> en esta parte:

Código PHP:
<a href='carro.php?id=" . $productos['id] . "&action="
Tengo entendido que puedo modificar esta parte para que me tome 2 variables y me las mande juntas a carro.php, incluso he visto por ahí que puedo meter una función de javascript del tipo (javascript:document.getElementById('nombredelform ').submit();) pero no tengo la menor idea de como hacerlo.

Agradezco cualquier ayuda, llevo atorado en esto como 2 semanas y nada más no le encuentro solución, cabe aclarar que es mi primer trabajo en PHP y apenas lo estoy conociendo.
Saludos
  #2 (permalink)  
Antiguo 21/01/2012, 03:28
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como armar variable para tomar otro dato

Con php no hay forma, tendrías que enviar el formulario y obtener el valor del select, pero como lo quieres hacer mediante un link no es posible, solo seria posible con javascript
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 21/01/2012, 14:10
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Encontré este tema en internet:
[URL="http://www.desarrolloweb.com/articulos/317.php"]http://www.desarrolloweb.com/articulos/317.php[/URL]

Me indica que puedo mandar 2 o mas variables mediante el link pero no encuentro la manera de aplicarlo, o de que manera podría convertir la parte del select en una variable que pueda meter en el link??

Y si sólo es posible con javascript me podrían dar unos consejos??
Gracias adelantadas
  #4 (permalink)  
Antiguo 21/01/2012, 14:26
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

Cita:
Iniciado por Crea Ver Mensaje

Como ven tengo una imagen de un carrito de compras para agregar el producto a la página carro.php
Mi duda es:
Como agrego una variable para tomar el color elegido en el <select> en esta parte:

Código PHP:
<a href='carro.php?id=" . $productos['id] . "&action="
Con php si es posible hacerlo , si quieres recojer el valor de color en carro.php no hace falta que lo mandes por la url lo recojes en carro.php con $_POST ya esta , para que mandarlo por la url??? eso si que no se puede en php por que ya se a escrito el codigo antes de que elija y x mucho que elija el codigo sera el mismo a no ser que recargues
  #5 (permalink)  
Antiguo 21/01/2012, 15:10
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Cita:
Iniciado por webankenovi Ver Mensaje
Con php si es posible hacerlo , si quieres recojer el valor de color en carro.php no hace falta que lo mandes por la url lo recojes en carro.php con $_POST ya esta , para que mandarlo por la url??? eso si que no se puede en php por que ya se a escrito el codigo antes de que elija y x mucho que elija el codigo sera el mismo a no ser que recargues
Muchas gracias por tu respuesta webankenovi:

Algo así intente hacer pero mi duda es si forsozamente tengo que mandar el color elegido con un botón tipo "submit", porque si tengo que agregar ese botón antes del botón del carrito me interferiría todo. Cómo puedo hacer para mandar ese color elegido, habrá algo como "submit" tipo hidden?? jaja Fue algo que se me ocurrió ahorita, voy a buscar sobre eso.

Mientras pongo el link donde tengo este código para que se entienda mejor lo que quiero lograr:

http://www.dejavu.com.mx/sim_nat_1.php

Gracias nuevamente
  #6 (permalink)  
Antiguo 21/01/2012, 15:18
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

te voy a dar la solucion en vez de una imagen del carrito con el link hazlo con un form y en el submit metes la imagen del carrito y en la url del form la id y el action y el color por $_POST en carro.php

te kedaria igual q ahora pero en vez de un link un form y ya mandas el color y la id y el action

en el input del form type=image para en vez de mostrar un boton sea una imagen

seria asi , alomejor tiene algun error pero con las prisas...
Código PHP:
Ver original
  1. <?php
  2. if(isset($_SESSION['carro']) && isset($productos['id'])){ ?>
  3. <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=removeProd">
  4. <?php }else{?>
  5. <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=add">
  6. <?php }?>
  7.  
  8.  
  9. <select name="color">
  10. <option value="">seleccionar</option>
  11.  
  12. <?php
  13. while($fila=mysql_fetch_row($result)){
  14. echo "<option value='".$fila['0']."'>".$fila['1']."</option>";
  15. }
  16. ?>
  17.  
  18. </select>
  19.  
  20. <?php
  21. if(isset($_SESSION['carro']) && isset($productos['id'])){ ?>
  22. <input name="" type="image" src="/imagen_carro eliminar" width="50" height="50">
  23. <?php }else{?>
  24. <input name="" type="image" src="/imagen_carro añadir" width="50" height="50">
  25. <?php }?>
  26.  
  27. </form>

Última edición por webankenovi; 21/01/2012 a las 15:43
  #7 (permalink)  
Antiguo 25/01/2012, 02:38
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Muchas gracias webankenovi, disculpa por no contestar antes pero he estado muy atareado.

Sobre la solución que me diste no dudo que ese sea el camino que hay que seguir, pero lo único que he logrado es mandar la "id" del color que se elige y ya no me toma lo que es el producto y el precio, por lo cual me pone en costo= $0

Ya intenté cambiar varios parámetros pero la mayoría de las veces me sale este error.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mbcorpor/public_html/dejavu/carro.php on line 92

Creo que el problema es que la manera en que antes tomaba los datos de producto y precio en el archivo carro.php ya no es compatible con la manera que ahora se le mandan con el <form>, pero no le hallo.

Podrías ayudarme un poco más??
Gracias nuevamente

P.D. Te dejo el link nuevamente

http://www.dejavu.com.mx/sim_nat_1.php
  #8 (permalink)  
Antiguo 25/01/2012, 12:29
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

ok vamos haber el problema de que te llega el id y no el color es x esto

echo "<option value='".$fila['0']."'>".$fila['1']."</option>";

el valor que llega a mostrar en el carro es el vaue de $fila['0'] que valor sacas aqui de la bd el id? pues cambialo por 1 que es el color

echo "<option value='".$fila['1']."'>".$fila['1']."</option>";

para el problema de el precio y el producto deberia saber como recojes los datos en carro.php

si pones el codigo de carro y tambien entero en el que estamos trabajando sera mas facil ayudarte
  #9 (permalink)  
Antiguo 25/01/2012, 14:16
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Ok, ya había intentado hacer eso en cuanto al color y funcionaba en carro.php pero en la página anterior me mostraba el "id", ahorita que hice el cambio ya me pone el color en las 2 páginas, o sea: ¡¡problema resuelto!!

Vamos con lo demás, te pongo el código y te explico el problema:

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() );
            
            
            
$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>
                <?php 
                
if(isset($_SESSION['carro'][$productos['id']])){ ?>
                <form method="post" action="carro.php?id=<?php $productos['id']&$productos['precio']; ?>&action=add">
                <?php }else{?>
                <form method="post" action="carro.php?id=<?php $productos['id']&$productos['precio']; ?>&action=add">
                <?php }?>
*
*                
                <select name="color">
                <option value="">Color</option>
*
                <?php
                
while($fila=mysql_fetch_row($result)){
                echo 
"<option value='".$fila['1']."'>".$fila['1']."</option>";
                }
                
?>
*
                </select>
*                
                <?php 
                
echo "<td style='text-align:right'>$" $productos['precio'] . "  </td>";
                
?>
                <td>
                <?php
                
if(isset($_SESSION['carro'][$productos['id']])){ ?>
                <input name="" type="image" src="img/add_carro.png" width="50" height="50">
                <?php }else{?>
                <input name="" type="image" src="img/add_carro.png" width="50" height="50">
                <?php }?>
*
                </form>
                </td>
                <?
                
                
/*echo "<td style='text-align:right'>
                                <a href='carro.php?id=" . $productos['id'] . "&action=";
                                
                                if (isset($_SESSION['carro'][$productos['id']])){
                                    //echo "remove' alt='Eliminar del carro'><img src='img/remove_carro.png' width='48' height='48' alt='Eliminar del                                 carro' title='Añadir producto al carrito'>";
                                    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>";*/
                 
            
}
            
            
            
            
                            
            
//cerramos la etiqueta tabla
            
echo "</table>";
            
        
                
/*echo $_SESSION["totalcoste"] . "<br>";
                echo $_SESSION["cantidadTotal"] . "<br>";*/
            
            
echo "</div>";
        
?>
Esto es en la página http://www.dejavu.com.mx/sim_nat_1.php , de aquí se manda a carro.php que tiene este código:

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;
                        
                
            }

            
/*MOSTRAR Carro*/
            /*echo "<pre>";
                print_r($_SESSION);
              echo "</pre>";

              echo "CANTIDAD: " .    $_SESSION['carro'][$id] . "<br>";
              echo "ID      : " . $id . "<br>";
            */
            
            
if(isset($_SESSION['carro'])){
                echo 
"<table border=0 cellspacing=5 cellpadding=3 width='500'>";
                
$totalcoste 0;
                
//Inicializamos el contador de productos seleccionados.
                
$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");
                    
$mifila mysql_fetch_array($resultado);
                    
                    
                    
$id $mifila['id'];
                    
$producto $mifila['producto'];
                     
                    
//acortamos el nombre del producto a 40 caracteres
                    
$producto substr($producto,0,40);
                    
                    
$precio $mifila['precio'];
                    
//Coste por artículo según la cantidad elegida
                    
$coste $precio $x;
                    
//Coste total del carro
                    
$totalcoste $totalcoste $coste;
                    
//Contador del total de productos añadidos al carro
                    
$xTotal $xTotal $x;
                    
                    echo 
"<tr>";
                    echo 
"<td align='left'> $_POST[id] </td>";
                    echo 
"<td align='left'> $_POST[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>";
                    
//Controlamos el display para cuando se vaya a eliminar el producto del carro o bien
                    //se vaya a reducir la cantidad.
                    //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";
    
            
//Campos que nos serviran para informar la cesta de lo que llevamos comprados y que se mostrará en 
            //la página PRODUCTOS.
            
$_SESSION["totalcoste"] = $totalcoste;
            
$_SESSION["cantidadTotal"] = $xTotal;
            echo (
"<a href='javascript:history.back(1)'>Regresar</a>")
        
        
?>
Esto es en la página http://www.dejavu.com.mx/carro.php

Nuevamente agradezco las molestias que te has tomado.
Saludos

Mi problema ahora es que en carro.php no me toma el producto ni el precio, solo la parte del color y la cantidad y por lo mismo no me hace la suma, siempre se queda en $0
  #10 (permalink)  
Antiguo 25/01/2012, 14:22
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Ah, y como te comentaba en la página carro.php me arroja este error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mbcorpor/public_html/dejavu/carro.php on line 92

Y la linea 92 es esto:

$mifila = mysql_fetch_array($resultado);

Le pongo los símbolos de comentario y ya no me arroja el error obviamente, pero siento que es necesaria esa variable
  #11 (permalink)  
Antiguo 25/01/2012, 14:28
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

primero esto que hiciste esta mal

<form method="post" action="carro.php?id=<?php $productos['id']&$productos['precio']; ?>&action=add">
<?php }else{?>
<form method="post" action="carro.php?id=<?php $productos['id']&$productos['precio']; ?>&action=add">

en todo caso seria

Código PHP:
Ver original
  1. action="carro.php?id=<?php $productos['id']; ?>&precio=<?php $productos['precio']; ?>&action=add">

respecto al mysql_fetch_array pañade las comillas a la consulta donde la id

Código PHP:
Ver original
  1. $resultado = mysql_query("SELECT id, producto, precio FROM productos WHERE id='$id' ");
  2.                     $mifila = mysql_fetch_array($resultado);

en estas lineas el color si llega por post pero la id llega por get

echo "<tr>";
echo "<td align='left'> $_POST[id] </td>";
echo "<td align='left'> $_POST[color] </td>";
echo "<td align='center'>$x</td>";

seria asi

Código PHP:
Ver original
  1. echo "<tr>";
  2.                     echo "<td align='left'> $_GET[id] </td>";
  3.                     echo "<td align='left'> $_POST[color]  </td>";
  4.                     echo "<td align='center'>$x</td>";


PRUEBA ESOS CAMBIOS Y YA ME COMENTAS Y SEGUIMOS

EL PRECIO EN EL FORMULARIO CREO QUE NO TE HACE FALTA POR QUE EN CARRO YA HACES UNA CONSULTA PARA SACAR EL PRECIO DEL PRODUCTO , PRUEBALO ASI COMO TE E DICHO PERO ASI TAMBIEN TE VALDRIA

Código PHP:
Ver original
  1. action="carro.php?id=<?php $productos['id']; ?>&action=add">

X LO QUE TE FALLA NO ES XQ NO LLEGUE EL PRECIO SI NO LA ID Y DE AY EL PRECIO

Última edición por webankenovi; 25/01/2012 a las 14:38
  #12 (permalink)  
Antiguo 25/01/2012, 14:48
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Ok, ya hice los cambios que me comentaste, por ahora ya no me arroja error pero sigue sin tomar el producto y el precio.
  #13 (permalink)  
Antiguo 25/01/2012, 14:51
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

sube el codigo original antes de hacer cualquier cambio el que te funcionaba los 2 x favor

xq no debe ser tan dificil asi veo como pasabas antes el precio lo correjimos con el nuevo y ya

Última edición por webankenovi; 25/01/2012 a las 15:03
  #14 (permalink)  
Antiguo 25/01/2012, 15:08
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

Cita:
Iniciado por Crea Ver Mensaje
echo "<td style='text-align:right'>
<a href='carro.php?id=" . $productos['id'] . "&action=";
//Detectamos si el producto ya se ha añadido al carro de compras para usar una imagen u otra.
//Si se ha añadido usamos una imagen para Restar una cantidad al carro
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>";

segun veo tu antes tampoco mandabas el precio eso ya lo haces en carro.php haces una consulta del precio segun la id
  #15 (permalink)  
Antiguo 25/01/2012, 15:18
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Creo que tienes razón en lo del precio. Pongo el código original de la página que le mandaba los datos a carro.php

Código PHP:
<?php
session_start
();

$titulo "Prueba";
include(
"estructura/conecta.php");
include(
"estructura/meta_tags.php");
include(
"estructura/cabecera.php");

include(
"estructura/izquierda.php");
?>



    <div id="derecha">
    
    
    
    
    <h1>Detalle de Productos</h1>
    
        <div class='text-border'>
        <?php
            
/*MOSTRAR Carro*/
            
$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() );
            
            
//Desplegamos una tabla con los datos de los productos
            
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:100px;text-align:right'>Precio</th>
                    <th style='width:50px;text-align:right'>Acción</th>
                </tr>"
;
                
            
// comienza un bucle que leera todos los registros y ejecutara las ordenes que siguen
            
while ($productos mysql_fetch_array($resultado)) { 
                echo 
"<tr class='borde_tabla'><td style='display:none'>" $productos['id'] . "</td>";     // imprime el texto
                
echo "<td>" $productos['producto'] . "</td>";     // imprime el nombre
                
echo "<td style='text-align:right'>" $productos['precio'] . " $ </td>"// imprime el precio
                
echo "<td style='text-align:right'>
                                <a href='carro.php?id=" 
$productos['id'] . "&action=";
                                
//Detectamos si el producto ya se ha añadido al cesta de la compra para usar una imagen u otra.
                                //Si se ha añadido usamos una imagen para Restar una cantidad al carro
                                
if (isset($_SESSION['carro'][$productos['id']])){
                                    
//echo "remove' alt='Eliminar del carro'><img src='img/remove_carro.png' width='48' height='48' alt='Eliminar del carro' title='Añadir producto al carrito'>";
                                    
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 
"</tr>"
            } 
// fin del bucle de ordenes
                            
            //cerramos la etiqueta tabla
            
echo "</table>";
            
        
                
/*echo $_SESSION["totalcoste"] . "<br>";
                echo $_SESSION["cantidadTotal"] . "<br>";*/
            
            
echo "</div>";
        
?>
        </div> <!-- Cierro text-border -->
    </div> <!-- Cierro derecha -->

<?php
include("estructura/pie.php");
include(
"estructura/cerrar_etiquetas.php");
?>
Esto es hasta antes de intentar agregarle la información del color, al darle click en el carrito me manda a la página actual del carro.php, la cual ya tiene los cambios que me comentaste más arriba y si me pone el producto y el precio.
  #16 (permalink)  
Antiguo 25/01/2012, 15:21
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Este código está en esta página:

http://www.dejavu.com.mx/productos2.php

No te mando el código de carro.php antes de hacer cambios porque como te comento ahí no hay error pues con los datos que le mando desde productos2.php si funciona bien. Pero si gustas te lo mando
  #17 (permalink)  
Antiguo 25/01/2012, 15:22
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

y el carro original x favor el que te funcionaba todo menos el color vamos el que tenias antes de publicar el tema

ya se donde esta el problema pero ay que ver ese archivo para contrastar y asegurarnos y ya te digo como es

el que te funcionaba todo menos que no te mostraba el color
  #18 (permalink)  
Antiguo 25/01/2012, 15:31
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

y subelos al servidor si puede ser los 2 originales
  #19 (permalink)  
Antiguo 25/01/2012, 15:34
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Ok, este es el código con el que trabajé antes de hacer cambios y que funcionaba bien:

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;
                        
                
            }

            
/*MOSTRAR Carro*/
            /*echo "<pre>";
                print_r($_SESSION);
              echo "</pre>";

              echo "CANTIDAD: " .    $_SESSION['carro'][$id] . "<br>";
              echo "ID      : " . $id . "<br>";
            */
            
            
if(isset($_SESSION['carro'])){
                echo 
"<table border=0 cellspacing=5 cellpadding=3 width='500'>";
                
$totalcoste 0;
                
//Inicializamos el contador de productos seleccionados.
                
$xTotal 0;
                
                echo 
"<tr>";
                    echo 
"<td>Producto</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");
                    
$mifila mysql_fetch_array($resultado);
                    
$id $mifila['id'];
                    
$producto $mifila['producto'];
                    
//acortamos el nombre del producto a 40 caracteres
                    
$producto substr($producto,0,40);
                    
$precio $mifila['precio'];
                    
//Coste por artículo según la cantidad elegida
                    
$coste $precio $x;
                    
//Coste total del carro
                    
$totalcoste $totalcoste $coste;
                    
//Contador del total de productos añadidos al carro
                    
$xTotal $xTotal $x;
                    
                    echo 
"<tr>";
                    echo 
"<td align='left'> $producto </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>";
                    
//Controlamos el display para cuando se vaya a eliminar el producto del carro o bien
                    //se vaya a reducir la cantidad.
                    //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";
    
            
//Campos que nos serviran para informar la cesta de lo que llevamos comprados y que se mostrará en 
            //la página PRODUCTOS.
            
$_SESSION["totalcoste"] = $totalcoste;
            
$_SESSION["cantidadTotal"] = $xTotal;
            echo 
"<p>Volver a la <a href='productos.php' title='lista de productos'>lista de productos</a></p>";
        
        
?>
En un momento subo al servidor estos archivos
  #20 (permalink)  
Antiguo 25/01/2012, 15:43
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Ya están en el servidor:

productos2.php te lleva a carro2.php
  #21 (permalink)  
Antiguo 25/01/2012, 15:50
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

ok haber trabajando segun lo tenias tal cual te lo doy lo añades y despues me muestras como lo dejaste ya con los estilos y todo

añade esto a la pagina de articulos como hiciste

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_SESSION['carro'][$productos['id']])){ ?>
  3.     <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=removeProd">
  4.     <?php }else{?>
  5.     <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=add">
  6.     <?php }?>
  7.      
  8.      
  9.     <select name="color">
  10.     <option value="">seleccionar</option>
  11.      
  12.     <?php
  13.     while($fila=mysql_fetch_row($result)){
  14.     echo "<option value='".$fila['1']."'>".$fila['1']."</option>";
  15.     }
  16.     ?>
  17.      
  18.     </select>
  19.      
  20.     <?php
  21.     if(isset($_SESSION['carro'][$productos['id']])){ ?>
  22.     <input name="" type="image" src="img/remove_carro.png" width="50" height="50">
  23.     <?php }else{?>
  24.     <input name="" type="image" src="img/add_carro.png" width="50" height="50">
  25.     <?php }?>
  26.      
  27.     </form>

y en carro en estas lineas

echo "<tr>";
echo "<td align='left'> $_POST[id] </td>";
echo "<td align='left'> $_POST[color] </td>";
echo "<td align='center'>$x</td>";

lo cambias por

Código PHP:
Ver original
  1. echo "<tr>";
  2.                     echo '<td align="left">'.$mifila['producto'].'</td>';
  3.                     echo "<td align='left'> $_POST[color]  </td>";
  4.                     echo "<td align='center'>$x</td>";
  #22 (permalink)  
Antiguo 25/01/2012, 16:18
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

y aqui en carro.php tienes 2 errores

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


Código PHP:
Ver original
  1. echo "<td align='right'> = </td>";
  2.                     echo '<td align="right" style="margin-left:10px">'.$coste.'' ;
  3.                     echo "</tr>";
  4.                 }
  5.                 echo "<tr><td colspan='5'><hr></td></tr>";
  6.                 echo "<tr>";
  7.                 echo "<td align='right' colspan='4'><b><br>Total = </b></td>";
  8.                 echo '<td align="right"><b><br>'.$totalcoste.'</b> </td>';
  9.                 echo "</tr>";
  10.                 //BOTON COMPRAR


si kieres postea como te quedaron para verificar o subelo y lo vemos
  #23 (permalink)  
Antiguo 25/01/2012, 16:56
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Hice los primeros cambios en productos2.php y me sale este error:

Parse error: syntax error, unexpected T_STRING in /home/mbcorpor/public_html/dejavu/productos2.php on line 47

y en esa línea está esto:

if(isset($_SESSION['carro'][$productos['id']])){ ?>
  #24 (permalink)  
Antiguo 25/01/2012, 16:59
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Te paso todo el código para que veas como lo incluí:

Código PHP:
<?php
            
/*MOSTRAR Carro*/
            
$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() );
            
            
//Desplegamos una tabla con los datos de los productos
            
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:100px;text-align:right'>Precio</th>
                    <th style='width:50px;text-align:right'>Acción</th>
                </tr>"
;
                
            
// comienza un bucle que leera todos los registros y ejecutara las ordenes que siguen
            
while ($productos mysql_fetch_array($resultado)) { 
                echo 
"<tr class='borde_tabla'><td style='display:none'>" $productos['id'] . "</td>";     // imprime el texto
                
echo "<td>" $productos['producto'] . "</td>";     // imprime el nombre
                
?>
                <td>
                <?php
                
                
* * if(isset($_SESSION['carro'][$productos['id']])){ ?>
* * <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=removeProd">
* * <?php }else{?>
* * <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=add">
* * <?php }?>
* * *
* * *
* * <select name="color">
* * <option value="">seleccionar</option>
* * *
* * <?php
* * while($fila=mysql_fetch_row($result)){
* * echo 
"<option value='".$fila['1']."'>".$fila['1']."</option>";
* * }
* * 
?>
* * *
* * </select>
* * *
* * <?php
* * if(isset($_SESSION['carro'][$productos['id']])){ ?>
* * <input name="" type="image" src="img/remove_carro.png" width="50" height="50">
* * <?php }else{?>
* * <input name="" type="image" src="img/add_carro.png" width="50" height="50">
* * <?php }?>
* * *
* * </form></td>
                <?
                
                
echo "<td style='text-align:right'>" $productos['precio'] . " $ </td>"// imprime el precio
                
echo "<td style='text-align:right'>
                                <a href='carro2.php?id=" 
$productos['id'] . "&action=";
                                
//Detectamos si el producto ya se ha añadido al cesta de la compra para usar una imagen u otra.
                                //Si se ha añadido usamos una imagen para Restar una cantidad al carro
                                
if (isset($_SESSION['carro'][$productos['id']])){
                                    
//echo "remove' alt='Eliminar del carro'><img src='img/remove_carro.png' width='48' height='48' alt='Eliminar del carro' title='Añadir producto al carrito'>";
                                    
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 
"</tr>"
            } 
// fin del bucle de ordenes
                            
            //cerramos la etiqueta tabla
            
echo "</table>";
            
        
                
/*echo $_SESSION["totalcoste"] . "<br>";
                echo $_SESSION["cantidadTotal"] . "<br>";*/
            
            
echo "</div>";
        
?>
  #25 (permalink)  
Antiguo 25/01/2012, 16:59
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

dejalo solo con el isset de $_session[carro]

Código PHP:
Ver original
  1. <?php
  2.         if (isset($_SESSION['carro']){  ?>
  3.         <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=removeProd">
  4.         <?php }else{?>
  5.         <form method="post" action="carro.php?id=<?php $productos['id']; ?>&action=add">
  6.         <?php }?>
  7.          
  8.          
  9.         <select name="color">
  10.         <option value="">seleccionar</option>
  11.          
  12.         <?php
  13.         while($fila=mysql_fetch_row($result)){
  14.         echo "<option value='".$fila['1']."'>".$fila['1']."</option>";
  15.         }
  16.         ?>
  17.          
  18.         </select>
  19.          
  20.         <?php
  21.         if (isset($_SESSION['carro'])){ ?>
  22.         <input name="" type="image" src="img/remove_carro.png" width="50" height="50">
  23.         <?php }else{?>
  24.         <input name="" type="image" src="img/add_carro.png" width="50" height="50">
  25.         <?php }?>
  26.          
  27.         </form>
  #26 (permalink)  
Antiguo 25/01/2012, 17:08
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Me sigue dando error en esa línea
  #27 (permalink)  
Antiguo 25/01/2012, 17:10
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

cambialos asi haber segun lo tienes tu en carro.php

if(isset($_SESSION['carro'][$id]))
  #28 (permalink)  
Antiguo 25/01/2012, 17:13
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Nada, me sigue dando error en esa línea
  #29 (permalink)  
Antiguo 25/01/2012, 17:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como armar variable para tomar otro dato

mas abajo de ese codigo tienes un if echo prueba a ponerlo exactamente igual , la verdad nse que puede fallar
  #30 (permalink)  
Antiguo 25/01/2012, 17:18
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Como armar variable para tomar otro dato

Nada también ya lo puse ahí y me sigue mostrando el mismo error.

No sabes cuanto te agradezco la ayuda y paciencia que has tenido, por favor no me abandones jaja

Etiquetas: php+bd+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 20:17.