Guardar valor en un hidden para utilizar de nuevo

Iniciado por the_sheriff_pino, 22 Abril 2013, 11:02 AM

0 Miembros y 1 Visitante están viendo este tema.

the_sheriff_pino

Saludos!
Tengo una página de lista clientes:
Código (php) [Seleccionar]
<?php
function generaClientes()
{

$c = mysql_connect("localhost","root",""); //Conexión con el servidor
$db = mysql_select_db("clientes",$c); //Conexión con la base de datos
$consulta = mysql_query("SELECT * FROM tabla"); //Consulta para mostrar los productos


?>


<select name='clientes' size="5px">
<option value='0'>Elige un cliente...</option>

    <?php 
while(
$registro=mysql_fetch_assoc($consulta))
{?>

<option value="<?php echo $registro['Nombre']; ?>"><?php echo $registro['Nombre']; ?></option>
<?php 
}
?>


    </select>
<?php 
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Pedidos</title>
</head>

<body>
<div align="center">
<form action="pedidos.php" method="post">
    <?php generaClientes(); ?>
<input type="submit" name="nuevo_pedido" value="Nuevo Pedido" />
           
</form></div>
    </body></html>


que manda el cliente seleccionado de una lista a una página de pedidos:
Código (php) [Seleccionar]
<?php 
function generaClientes() 

     
    
$c            =    mysql_connect("localhost","root","");        //Conexión con el servidor 
    
$db            =    mysql_select_db("clientes",$c);                //Conexión con la base de datos 
    
$consulta    =    mysql_query("SELECT * FROM productos");        //Consulta para mostrar los productos 
?>
     
     Seleccione el producto:
     <br />
    <select name='productos' size="5px">
     
    <?php  
    
while($registro    =    mysql_fetch_assoc($consulta)) 
    {
?>

        <option value="<?php echo $registro['nom_producto']; ?>"><?php echo $registro['cod_producto']." ".$registro['nom_producto']; ?></option>
    <?php  
    

    
?>

     
    </select>
<?php 

    
//$clientes=$_POST['clientes']; 
     
    
if (isset($_POST['clientes'])) 
        { 
            
$clientes $_POST['clientes']; 
        }    else    { 
            
$clientes ""
            } 
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Pedidos</title>
</head>

<body>
     
    <div align="center">
     
    Cliente seleccionado:     <?php echo $clientes?>
     
         
        <form action="pedidos.php" method="post">
             
    <br />
    <br />
        <?php generaClientes(); ?>
       <input type="hidden" name="clientes2" value="$clientes">
    <br />
    <br />
                Cantidad
                <input type="text" name="c1" size="5px" autocomplete="off" /> Unidades
    <br />   
    <br />
                Precio
                <input type="text" name="p1" size="3px" value="0,00" autocomplete="off"> Euros
    <br />   
    <br />
                Notas:
    <br />             
                <textarea name="notas" rows="5" cols="20"></textarea>
    <br />
            <input type="submit" name="enviar" value="Enviar" />
             
    </form></div>
     
    <br />
    <br />
    <br />
   
   
<?php 
        
//Los siguientes isset se utilizan para que no muestre error antes de insertar los valores. 
    
if (isset($_POST['productos'])) 
        { 
            
$producto $_POST['productos']; 
        } else {  
        
$producto ""
        } 

     
    if (isset(
$_POST['c1']))  
    { 
        
$cantidad $_POST['c1']; 
    } else { 
        
$cantidad ""
    } 


    if (isset(
$_POST['p1']))  
    { 
        
$precio $_POST['p1']; 
    } else { 
        
$precio ""
    } 
     
     
    if (isset(
$_POST['notas']))  
    { 
        
$notas $_POST['notas']; 
    } else { 
        
$notas ""
    } 
     
     
    
//Se obtienen los valores de $cantidad y $producto para su operación. 
    
$resultado    $cantidad*$precio
    
$clientes2    =    $_POST['clientes2']; 

    if (isset(
$_POST['enviar'])) 
    {
?>

        El cliente seleccionado es: <?php echo $clientes2?>
        <br>
         
        EL producto seleccionado es: <?php echo $producto?>
        <br>

        El resultado de la operación es: <?php echo $resultado?>
        <br>

        Las notas escritas por el usuario son: <?php echo $notas?>
    <?php 


?>

</body>
</html>


El proceso es elegir un cliente de una lista_clientes y pulsar en nuevo pedido, que nos llevará a la página de pedidos y se nos muestra: EL cliente seleccionado es $clientes(la elección de la página anterior),; y un formulario simple con cantidad y precio, además de un botón para enviar los resultados a la misma página.
Lo que ocurre que cuando en la página de pedidos, pulso el botón para enviar los datos del formulario, esta se recarga, y la variable clientes no conserva el valor.

Espero su ayuda, gracias y un saludo
Rebélate

the_sheriff_pino

Y si en vez de un hidden se utiliza una sesion?
Rebélate

#!drvy

Puedes utilizar session y también puedes utilizar hidden. Hidden sigue siendo un input y mientras le des un nombre (name="blabla") PHP lo reconocerá.

Tienes mal estructurado el html. En la lista de clientes no escapes el html. Osease, en las lineas 12,13,18 y 23 escapas el html del PHP.. pero lo sacas antes de declarar el <html> y eso esta mal. Utiliza echo.

Saludos

the_sheriff_pino

donde y como iría el input? o la sesion?
supongo que con un input es más sencillo, pero ya he intentado meterlo sin que diese solucón al problema(seguro que fallo mío).
Rebélate

the_sheriff_pino

Cita de: drvy | BSM en 22 Abril 2013, 12:27 PM
Puedes utilizar session y también puedes utilizar hidden. Hidden sigue siendo un input y mientras le des un nombre (name="blabla") PHP lo reconocerá.

Tienes mal estructurado el html. En la lista de clientes no escapes el html. Osease, en las lineas 12,13,18 y 23 escapas el html del PHP.. pero lo sacas antes de declarar el <html> y eso esta mal. Utiliza echo.

Saludos
Ya está cambiado lo que me has dicho, si no te he entendido mal claro.
Donde y como iría el input? o la sesión?
Supongo que con un input es más sencillo, pero ya he intentado meterlo sin que diese solución al problema(seguro que fallo mío).
Rebélate