Foros del Web » Programando para Internet » PHP »

Ayuda con pase de variables

Estas en el tema de Ayuda con pase de variables en el foro de PHP en Foros del Web. Hola a todos! En el siguiente código, levanto ciertos datos de una tabla y a esa estructura quiero agregarle un campo con un valor, en ...
  #1 (permalink)  
Antiguo 01/12/2009, 20:29
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Ayuda con pase de variables

Hola a todos!

En el siguiente código, levanto ciertos datos de una tabla y a esa estructura quiero agregarle un campo con un valor, en este caso se llama cantidad.

pagina1.php
Código PHP:
<td width="10%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["codigo"]; ?>                        </font>                    </td>
                    <td width="30%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["detalle"]; ?>                        </font>                    </td>
                    <td width="20%" height="25">
                        <font face="verdana" size="1" color="black">
                            $<?php echo $row["precio"]; ?>                        </font>                    </td>
                    <td width="10%" height="25">                    
                       <input name="cantidad" type="text" size="5">
                       </td>
                    
                    <td width="10%" height="25">
                        <font face="verdana" size="1" color="black">
                            <a href="pagina2.php?action=add_item&id_prod=<?php echo $row["id_producto"]; ?>&cantprod=1">Agregar</a>                        </font>                    </td>
Luego necesitaría recibir esos datos en pagina2.php que recepciona todo bien pero no me doy cuenta como pasar el campo cantidad.

Probé metiendo todo en un form pero no funcionó no se que estaré haciendo mal.

La idea es que si cantidad es > 1 cantprod tome el valor de cantidad, es decir se actualice.

pagina2.php
Código PHP:
switch($_GET["action"])
    {
        case 
"add_item":
        {
            
AddItem($_GET["id_prod"], $_GET["cantprod"]);
            
VerContenido();
            break;
        }

Ojalá puedan ayudarme, muchas gracias por adelantado.
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 01/12/2009, 20:33
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con pase de variables

Es un campo de texto, si lo metiste en un form, tiene que andar... revisa bien si usaste get o post y si levantas la variable en pagina2.php si el codigo que pegaste es exacatemnte el que tenes, no levantas nada ademas de la variable "action"
  #3 (permalink)  
Antiguo 01/12/2009, 21:18
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

Gracias por responder Jackson!

El tema es que si pongo todo dentro de un form con GET por ejemplo, como hago para que a través del link "Agregar" mande idprod, cantprod y el campo cantidad, no supe como hacerlo todo junto porque las cantidades quedaban siempre en 1 (como es por defecto).

Cómo debería poner el action del form? para pasar las 3 variables?

Código PHP:
<form action="" method="get">
            <?php
            
while($row mysql_fetch_array($_pagi_result))
            {
            
?>
                <tr>
                    <td width="10%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["codigo_producto"]; ?>                        </font>                    </td>
                    <td width="30%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["detalle_producto"]; ?>                        </font>                    </td>
                    <td width="20%" height="25">
                        <font face="verdana" size="1" color="black">
                            $<?php echo $row["precio_producto"]; ?>                        </font>                    </td>
                    <td width="10%" height="25">                    
                       
                    <input name="cantidad" type="text" size="5">
                       </td>
                    
                    <td width="10%" height="25">
                        <font face="verdana" size="1" color="black">
                            <a href="cart.php?action=add_item&id_prod=<?php echo $row["id_producto"]; ?>&cantprod_pedido=1">Agregar</a>                        </font>                    </td>
                
                </tr>
        </form>
en pagina2.php seria algo así supongo
Código PHP:
$_GET['cantidad']; 
__________________
Saludos!!!
Maru.-

Última edición por Maru77; 01/12/2009 a las 21:42
  #4 (permalink)  
Antiguo 01/12/2009, 21:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con pase de variables

Hola
Pues usa otros campos de texto para los demás datos, si no quieres
que sean visualizados en campos de texto, usa el tipo hidden
saludos
  #5 (permalink)  
Antiguo 01/12/2009, 22:07
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con pase de variables

Bueno, me llevo un tiempito, me parece que te lo voy a cobrar :p

Código PHP:
<form action="algo.php" method="post"> 
                <tr> 
                    <td width="10%" height="25"> 
                        <font face="verdana" size="1" color="black"> 
                            <input type="hidden" name="codProd" value="<?php echo $row["codigo_producto"]; ?>" /><?php echo $row["codigo_producto"]; ?>
                        </font> 
                   </td> 
                    <td width="30%" height="25"> 
                        <font face="verdana" size="1" color="black"> 
                            <input type="hidden" name="detalleProd" value="<?php echo $row["detalle_producto"]; ?>"/><?php echo $row["detalle_producto"]; ?>
                        </font>
                    </td> 
                    <td width="20%" height="25"> 
                        <font face="verdana" size="1" color="black"> 
                            <input type="hidden" name="precio" value="<?php echo $row["precio_producto"]; ?>"/>$<?php echo $row["precio_producto"]; ?>
                        </font>
                   </td> 
                    <td width="10%" height="25">                     
                  
                    <input name="cantidad" type="text" size="5" /> 
                       </td> 
                     
                    <td width="10%" height="25">
                    <input type="submit" value="Enviar"/> 
                    </td>    
                </tr> 
        </form>
y en la accion del formulario levantas todo por post y haces la cuenta de precio*cantidad y listo!
  #6 (permalink)  
Antiguo 02/12/2009, 11:47
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

Mil gracias Mortiprogramador por la idea y Jackson por el ejemplo!!!
Ahora puedo pasar y recibir bien las variables :)

Hice el formulario para agregar un item y otro para eliminar, pero no puedo hacer funcionar la estructura switch, me dirige siempre al default

Código PHP:
switch("action")
        {        
           case 
"add_item":
           {
                   
AddItem($_POST["id_prod"]);
                
ShowItems();    
                break;
           }
           case 
"remove_item":
           {
                
RemoveItem ($_POST["id_prod"]);
                
ShowItems();    
                break;
            }
            default:
            {
                
ShowItems();    
            }        
        } 
En el form el botón para el envio de datos los indiqué así (add_item y remove_item según corresponda en cada caso)

Código HTML:
<td width="10%" height="25">
      <input type="submit" name="add_item" id="agregar" value="Agregar">
</td> 
También probé con una estructura if pero cuando quiero eliminar un item sale un error diciendo que no esta definida add_item

Código PHP:
if ($add_item)
{
    
AddItem($_POST["id_prod"]);
    
ShowCart();    
}
        
if (
$remove_item)
{
    
RemoveItem($_GET["id_prod"]);
    
ShowCart();

Mil gracias nuevamente, les debo una chicos!
__________________
Saludos!!!
Maru.-
  #7 (permalink)  
Antiguo 02/12/2009, 12:04
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con pase de variables

El primer switch lo tenes mal, no le estas pasando una variable, le estas pasando la palabra action =P

Y en el ultimo if q decis q t sale error: AddItem es una funcion tuya o te referis a q t tira error sobre la variable $add_item?
  #8 (permalink)  
Antiguo 02/12/2009, 12:15
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

con switch probe poniendo

switch($_POST["action"])
{
....

y probando distintas cosas y nunca me funcionó.

con if, por ejemplo cuando elimino un item me sale un error Notice: Undefined variable: add_item in C:\wamp\www... y cuando quiero agregar uno me sale lo mismo pero con remove_item :s

Gracias Jackson! :)
__________________
Saludos!!!
Maru.-
  #9 (permalink)  
Antiguo 02/12/2009, 12:30
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con pase de variables

Hace una cosa, pegame TODO el codigo junto y lo veo, asi la verdad cuesta bastante =P
  #10 (permalink)  
Antiguo 02/12/2009, 13:04
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

para dar de alta un producto
Código HTML:
<form action="cart.php" method="post">
            
			<?php
			while($row = mysql_fetch_array($_pagi_result))
			{
			?>
				<tr>
                	<td width="10%" height="25">
						<font face="verdana" size="1" color="black">
							<?php echo $row["codigo_producto"]; ?> </font> </td>
					<td width="25%" height="25">
						<font face="verdana" size="1" color="black">
							<?php echo $row["detalle_producto"]; ?> </font> </td>
                    <td width="10%" height="25">
						<font face="verdana" size="1" color="black">
							<?php echo $row["capacidad_producto"]; ?> </font> </td>        
					<td width="20%" height="25">
						<font face="verdana" size="1" color="black">
							$<?php echo $row["precio_producto"]; ?> </font> </td>
                    <td width="10%" height="25">                                   		
	                    <input name="cantprod_pedido" type="text" size="5">                    
           		  </td>
                    
					<td width="10%" height="25">                                   		
                    	   
                    </td>
                    
                    
                    <td width="10%" height="25"><label>
                      <input type="submit" name="add_item" id="agregar" value="Agregar">
                    </label></td>

			  <td width="10%" height="25">
					</td>
				
                </tr>
                <input type="hidden" name="id_prod" value="<?php echo $row["id_producto"]; ?>" size="5">  
        </form> 
Llama a las funciones y hace la eliminación del producto
Código PHP:
if ($add_item)
        {
            AddItem($_POST["id_prod"]);
            ShowCart();    
        }
        
        if ($remove_item)
        {
            RemoveItem($_GET["id_prod"]);
            ShowCart();
            
        }

function AddItem($id_prod)
    {
        
        $Host = "localhost";
        $User = "root";
        $Password = "";
        $Base = "pedidos";
        $Tabla = "pedido";

        //conecta la base
        $Link = mysql_connect ($Host, $User, $Password) or die("Error vp conexion ".mysql_error());
        mysql_select_db($Base, $Link) or die("Error select db ".mysql_error());
                
        $Query = "insert into pedido (id_pedido, id_sessionpedido, id_userpedido, fecha_pedido, id_prod, cantprod_pedido) values('', '".$_SESSION['Sid']."', '".$_SESSION['k_userid']."', '".$_SESSION['k_fecha']."', '".$_POST['id_prod']."', '".$_POST['cantprod_pedido']."')";
        $insertar = mysql_query($Query);
        
        
    }    
    
    
    
    function RemoveItem($id_prod)
    {
        $Host = "localhost";
        $User = "root";
        $Password = "";
        $Base = "pedidos";
        $Tabla = "pedido";

        //conecta la base
        $Link = mysql_connect ($Host, $User, $Password) or die("Error vp conexion ".mysql_error());
        mysql_select_db($Base, $Link) or die("Error select db ".mysql_error());
        
        mysql_query("delete from pedido where id_prod = $id_prod");
    }
    
    function ShowCart()
    {
        
        $Host = "localhost";
        $User = "root";
        $Password = "";
        $Base = "pedidos";        

        //conecta la base
        $Link = mysql_connect ($Host, $User, $Password) or die("Error vp conexion ".mysql_error());
        mysql_select_db($Base, $Link) or die("Error select db ".mysql_error());

            $result = mysql_query("select producto.id_producto, producto.codigo_producto, producto.tipo_producto, producto.detalle_producto, producto.capacidad_producto, producto.precio_producto, pedido.id_pedido, pedido.id_sessionpedido, pedido.id_userpedido, pedido.id_prod, pedido.cantprod_pedido from producto inner join pedido on producto.id_producto = pedido.id_prod" );
        
        $totalCost = 0;
        
        ?>
        <html>
        <head>
        <title> Carrito de Compras </title>
        
        </head>
        <body bgcolor="#ffffff">
        <h1>Carrito de Compras</h1>
        <form name="frmCart" method="get">
       
        <table width="100%" cellspacing="0" cellpadding="0" border="0">
            <tr>
                <td width="10%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Código</b>
                    </font>
                </td>    
                 <td width="10%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Cantidad</b>
                    </font>
                </td>    
                 <td width="15%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Tipo de Producto</b>
                    </font>
                </td>            
                <td width="25%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Producto</b>
                    </font>
                </td>               
                <td width="10%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Capacidad</b>
                    </font>
                </td>
                <td width="15%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Precio x Unidad</b>
                    </font>
                </td>
                <td width="15%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Subtotal</b>
                    </font>
                </td>
                <td width="10%" height="25" bgcolor="#FF9900">
                    <font face="verdana" size="1" color="white">
                        <b>Eliminar?</b>
                    </font>
                </td>
            </tr>
            <form action="cart.php" method="post">
            
            <?php 
            
while($row mysql_fetch_array($result))
            {
                
// Increment the total cost of all items
                
$totalCost += ($row["cantprod_pedido"] * $row["precio_producto"]);
                
                
?>
                    
                
                    <tr>                        
                        <td width="10%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["codigo_producto"]; ?>
                            </font>
                        </td>
                         <td width="10%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["cantprod_pedido"]; ?>
                            </font>
                        </td>
                         <td width="15%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["tipo_producto"]; ?>
                            </font>
                        </td>
                        <td width="25%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["detalle_producto"]; ?>
                            </font>
                        </td>                       
                        <td width="10%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["capacidad_producto"]; ?>
                            </font>
                        </td>
                        <td width="15%" height="25">
                            <font face="verdana" size="1" color="black">
                                $<?php echo number_format($row["precio_producto"], 2"."","); ?>                        </font>
                        </td>
                        <td width="15%" height="25">
                            <font face="verdana" size="1" color="black">
                                $<?php echo number_format($row["cantprod_pedido"] * $row["precio_producto"], 2"."","); ?>                        </font>
                        </td>
                        <td width="10%" height="25">                                           
                        
                    </td>
                    
                    
                    <td width="10%" height="25"><label>
                      <input type="submit" name="remove_item" id="agregar" value="Eliminar">
                    </label></td>
                    </tr>
                    <input type="text" name="id_prod" value="<?php echo $row["id_producto"]; ?>" size="5">     
                <?php
                
            
}            
            
            
?>
                    
?>
Gracias por tu paciencia, la verdad estoy enredada en eso y no se como solucionarlo.
__________________
Saludos!!!
Maru.-
  #11 (permalink)  
Antiguo 03/12/2009, 11:58
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

Y si alguien me puede dar alguna otra idea se los agradecería, porque ya no se que más probar :(
__________________
Saludos!!!
Maru.-
  #12 (permalink)  
Antiguo 04/12/2009, 15:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con pase de variables

Hola
Bueno, tu seleccionas la cantidad que quieres pasar
o es un dato fijo??
en todo caso, actualmente te esta llegando a la pagina2?
es decir, ahora el problema es alla o sigues con problema
para pasarlo?
  #13 (permalink)  
Antiguo 07/12/2009, 11:11
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

Si lo hago con el if (como lo dejé anteriormente) los datos pasan a la pagina2, respondiendo a tu otra pregunta, la cantidad es un dato variable.

Otra forma para armarlo que se me ocurre es con una estructura switch case, pero no se como armar el formulario para eso, copio lo que tengo a continuación

En el formulario no se como poner para que al hacer click vaya a la opción add_item del case

Código PHP:
<form action="cart.php" method="post">
            
            <?php
            
while($row mysql_fetch_array($_pagi_result))
            {
            
?>
                <tr>
                    <td width="10%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["codigo_producto"]; ?>                        </font>                    </td>
                    <td width="25%" height="25">
                        <font face="verdana" size="1" color="black">
                            <?php echo $row["detalle_producto"]; ?>                        </font>                    </td>
                         
                    <td width="20%" height="25">
                        <font face="verdana" size="1" color="black">
                            $<?php echo $row["precio_producto"]; ?>                        </font>                    </td>
                    <td width="10%" height="25">                                           
                        <input name="cantprod_pedido" type="text" size="5">                    
                     </td>
                  <td width="10%" height="25"><label>
                      <input type="submit" name="action" id="agregar" value="Agregar">
                    </label></td>

              <td width="10%" height="25">
                    </td>                
                </tr>
                <input type="hidden" name="id_prod" value="<?php echo $row["id_producto"]; ?>" size="5">  
        </form>        
                
            <?php
            
}        
        
?>        
            
        </table>

Estructura de switch case que armé

Código PHP:
switch($_POST["action"])
        {        
           case 
"add_item":
           {
                   
AddItem($_POST["id_prod"]);
                
Mostrar();    
                break;
           }
           case 
"remove_item":
           {
                
RemoveItem ($_POST["id_prod"]);
                
Mostrar();
                break;
            }
            default:
            {
                
Mostrar();
            }        
        } 

Gracias Mortiprogramador!
__________________
Saludos!!!
Maru.-
  #14 (permalink)  
Antiguo 07/12/2009, 11:33
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Ayuda con pase de variables

Lo resolví cambiando case "add_item": por case "Agregar": que es el value del botón que hace el envío.

Muchas gracias a los dos por la paciencia :)
__________________
Saludos!!!
Maru.-
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 15:58.