Foros del Web » Programando para Internet » PHP »

PHP OO Recoger valor formulario en $_SESSION

Estas en el tema de Recoger valor formulario en $_SESSION en el foro de PHP en Foros del Web. Ante todo Buenas soi nuevo en el foro, os presento mi primera consulta que es la siguiente: tengo 3 paginas php, (formulario.php) solo es para ...
  #1 (permalink)  
Antiguo 20/09/2012, 05:22
 
Fecha de Ingreso: septiembre-2012
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 1
Pregunta Recoger valor formulario en $_SESSION

Ante todo Buenas soi nuevo en el foro, os presento mi primera consulta que es la siguiente:
tengo 3 paginas php, (formulario.php) solo es para iniciar/destruir sesion,(suerte.php) en la cual se añaden/quitan productos a una compra y (confirmar.php), la cual solo muestra la eleccion final, todo funciona a la perfeccion, pero necesito pasar el valor del formulario 'precio' en suerte.php hasta confirmar.php para poder operar con el precio y sacar el total de la factura para posterior ingreso en base de datos, y no se como guardar el valor de los precios y mostrarlos en confirmar.php, os dejo los archivos:
formulario.php
<a href="menuadmin.php"><img src="iconoinicio.png"></a>
<?php
session_start();
session_destroy();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body bgcolor="#E0E0F8">
<h1>Bienvenido a la tienda</h1>
<form action="suerte.php" method="post">
Ingrese codigo empleado<input name="nombre" type="text">
<input name="ingresar" type="Submit" value="ingresar">
</form>
</body>
</html>

suerte.php (aqui esta el enigma)
<?php
session_start(); //Inicio sesion
error_reporting(E_PARSE);//No mostrar errores a nivel bajo
$con = mysql_connect("localhost","root")
or die("¡No se ha podido establecer la conexión con el servidor!");
$resp = mysql_select_db("infor")
or die("¡No se ha podido seleccionar la base de datos!");


if(isset($_POST['nombre'])){
$nombre = $_POST['nombre'];
$_SESSION['usuario'] = $nombre; //Guardo el nombre del usuario en sesion
//session_register('pedido');
}
if(isset($_POST['agregar'])){ //Si se envió el primer formulario
//$_SESSION['miprecio']=$fila["precio"];
//$precios = array_keys ($_POST['precio']);
//$_SESSION['miprecio'] = $precios;

$claves = array_keys($_POST);
$producto = $claves[1];
if(!is_array($_SESSION['pedido'])) //Si no es un array
{
$_SESSION['pedido'] = array();
}
if(array_key_exists("$producto",$_SESSION['pedido'])){
$cantidad = $_SESSION['pedido']["$producto"];
$_SESSION['pedido']["$producto"] = ++$cantidad;
}
else {
$_SESSION['pedido']["$producto"] = 1;
}
}
if(isset($_GET['quitar'])){ //Si se envió el segundo formulario
$claves = array_keys($_GET);
$producto = $claves[1];
unset($_SESSION['pedido'][$producto]); //Eliminar la posicion del arreglo
} echo "Bienvenido : ".$_SESSION['usuario'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body bgcolor="#E0E0F8">
<a href="formulario.php"><img src="flechaizq.png"></a>

<form action="suerte.php" method="post">
<input type="hidden" name="agregar">

<?php


$resultado=mysql_query("SELECT * FROM productos WHERE stock <>'0' ORDER BY tipoproducto ASC",$con);

//Imprimimos el encabezado de la tabla:
echo "<table width=900 border=1 align=center>";
echo " <tr>";
//mysql_num_fields retorna el nº de campos (columnas) que tiene la consulta
for ($i=0; $i < mysql_num_fields($resultado); $i++)
{
//mysql_field_len devuelve el "ancho" del $i-ésimo campo de la consulta.
$longitud = mysql_field_len($resultado, $i);
echo " <td width=$longitud> <center><b>".
//mysql_field_name retorna el nombre del $i-ésimo campo de la consulta:
mysql_field_name($resultado,$i) ."</b></center></td>";
}
echo " <td width=100> <center><b>Accion</b></center></td>";

echo " </tr>";


while($fila=mysql_fetch_array($resultado)){
?>
<p>
<?php

echo ("<tr><td>" . $fila["id"] . "</td>");
echo ("<td>" . $fila["tipoproducto"] . "</td>");
echo (" <td>" . $fila["modelo"] . "</td>");
echo (" <td>" . $fila["marca"] . "</td>");
echo (" <td>" . $fila["precio"] . "</td>");
echo (" <td>" . $fila["stock"] . "</td>");
echo "<td><input type='submit' name='".$fila["tipoproducto"].$fila["modelo"].$fila["precio"]."' id='button' value='Añadir al carrito'></td>";
// echo ("<td><a href='suerte.php?id=" . $fila["id"] . "'>añadir</a></td>");
?>
</p>
<?php
}
?>


</form>
<form action="suerte.php" method="get">
<h1>En el carrito de compras tiene los siguientes productos</h1>
<input type="hidden" name="quitar">
<?php
if(!empty($_SESSION['pedido'])){ //Si hay productos en el carrito
foreach($_SESSION['pedido'] as $prod => $unidades){


echo $_SESSION['miprecio'];
echo "$unidades unidades del producto $prod";
echo "<input type='Submit' name='$prod' value='Quitar'><br>"; }
?>
</form>
<form action="confirmar.php" method="post">
<input type='Submit' name='Comprar' value="Confirmar compra">
</form>
<?php
}
?>
</body>
</html

confirmar.php
<?php


session_start();
echo "<h1 align='center'><img src='tick.png'><h2 align='center'>Factura</h2>";
echo "<p align='center'>Producto Precio Unidades total</p>";
foreach($_SESSION['pedido'] as $prod => $unidades) {
echo "<p align='center'>$prod $unidades</p>";
}



?>
<h2 align='center'>Venta efectuada</h2>
<h2>Vuelva pronto</h2>
<a href="formulario.php">TERMINAR</a>
  #2 (permalink)  
Antiguo 20/09/2012, 06:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recoger valor formulario en $_SESSION

bienvenido al foro, le agradezco que consulte las políticas del mismo para que su estancia aquí sea de lo más agradable, por ejemplo utilizar el highlight del foro para mostrar código de una forma agradable.

Volviendo al tema me parece que estás implementando una especie de carro de compras ¿cierto?, bueno si estás registrando los productos en el array de sesión ¿de donde obtienes los precios?

el objetivo básico de un carro de compras es almacenar los ID y la cantidad de productos agregados, con ello tienes lo suficiente para consultar a la base de datos el precio del articulo y realizar el calculo correspondiente, evalúa bien tu lógica de negocio y si estoy en lo cierto comenta.

PD: trata de editar el post para añadir el highlight al mensaje anterior, leerlo así es difícil
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 20/09/2012, 07:13
 
Fecha de Ingreso: septiembre-2012
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Recoger valor formulario en $_SESSION

Cita:
Iniciado por maycolalvarez Ver Mensaje
bienvenido al foro, le agradezco que consulte las políticas del mismo para que su estancia aquí sea de lo más agradable, por ejemplo utilizar el highlight del foro para mostrar código de una forma agradable.

Volviendo al tema me parece que estás implementando una especie de carro de compras ¿cierto?, bueno si estás registrando los productos en el array de sesión ¿de donde obtienes los precios?

el objetivo básico de un carro de compras es almacenar los ID y la cantidad de productos agregados, con ello tienes lo suficiente para consultar a la base de datos el precio del articulo y realizar el calculo correspondiente, evalúa bien tu lógica de negocio y si estoy en lo cierto comenta.

PD: trata de editar el post para añadir el highlight al mensaje anterior, leerlo así es difícil
Gracias maycoalvarez, mira los productos los obtengo mediante una consulta a la tabla productos que tengo en la base de datos, y los muestro en el formulario con el boton 'añadir a la compra', el codigo funciona bien y hace todo correcto, pero quiero saber como guardar los datos del precio de producto (que son recogidos tb de la bd), y mandarlos a confirmar, con eso me bastaria, pero claro no se como.....
Código PHP:
<?php 
session_start
(); //Inicio sesion 
error_reporting(E_PARSE);//No mostrar errores a nivel bajo
$con mysql_connect("localhost","root")
   or die(
"¡No se ha podido establecer la conexión con el servidor!");
$resp mysql_select_db("infor")
  or die(
"¡No se ha podido seleccionar la base de datos!");


if(isset(
$_POST['nombre'])){ 
$nombre $_POST['nombre']; 
$_SESSION['usuario'] = $nombre//Guardo el nombre del usuario en sesion 
//session_register('pedido'); 
}
if(isset(
$_POST['agregar'])){ //Si se envió el primer formulario 
//$_SESSION['miprecio']=$fila["precio"];
//$precios = array_keys ($_POST['precio']);
//$_SESSION['miprecio'] = $precios;

$claves array_keys($_POST); 
$producto $claves[1]; 
if(!
is_array($_SESSION['pedido'])) //Si no es un array 
{
$_SESSION['pedido'] = array();
}
if(
array_key_exists("$producto",$_SESSION['pedido'])){ 
$cantidad $_SESSION['pedido']["$producto"]; 
$_SESSION['pedido']["$producto"] = ++$cantidad

else { 
$_SESSION['pedido']["$producto"] = 1


if(isset(
$_GET['quitar'])){ //Si se envió el segundo formulario 
$claves array_keys($_GET); 
$producto $claves[1]; 
unset(
$_SESSION['pedido'][$producto]); //Eliminar la posicion del arreglo 
} echo "Bienvenido : ".$_SESSION['usuario'];
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body bgcolor="#E0E0F8"> 
<a href="formulario.php"><img src="flechaizq.png"></a>

<form action="suerte.php" method="post"> 
<input type="hidden" name="agregar"> 

<?php


$resultado
=mysql_query("SELECT * FROM productos WHERE stock <>'0' ORDER BY tipoproducto ASC",$con);

//Imprimimos el encabezado de la tabla:
echo "<table width=900 border=1 align=center>";
echo 
" <tr>";
//mysql_num_fields retorna el nº de campos (columnas) que tiene la consulta    
for ($i=0$i mysql_num_fields($resultado); $i++)
    {
    
//mysql_field_len devuelve el "ancho" del $i-ésimo campo de la consulta.
    
$longitud mysql_field_len($resultado$i);
    echo 
" <td width=$longitud> <center><b>".
    
//mysql_field_name retorna el nombre del $i-ésimo campo de la consulta:
    
mysql_field_name($resultado,$i) ."</b></center></td>";
    }
echo 
" <td width=100> <center><b>Accion</b></center></td>";

echo 
" </tr>";


    while(
$fila=mysql_fetch_array($resultado)){
?>
<p>
    <?php 

    
echo ("<tr><td>" $fila["id"] . "</td>");
    echo (
"<td>" $fila["tipoproducto"] . "</td>");
         echo (
" <td>" $fila["modelo"] . "</td>");
        echo (
" <td>" $fila["marca"] . "</td>");
            echo (
" <td>" $fila["precio"] . "</td>");
                echo (
" <td>" $fila["stock"] . "</td>");
    echo 
"<td><input type='submit' name='".$fila["tipoproducto"].$fila["modelo"].$fila["precio"]."' id='button' value='Añadir al carrito'></td>";
//    echo ("<td><a href='suerte.php?id=" . $fila["id"] . "'>añadir</a></td>");
     
?>
</p>
<?php
}
?>

 
</form> 
<form action="suerte.php" method="get"> 
<h1>En el carrito de compras tiene los siguientes productos</h1> 
<input type="hidden" name="quitar"> 
<?php 
if(!empty($_SESSION['pedido'])){ //Si hay productos en el carrito
foreach($_SESSION['pedido'] as $prod => $unidades){ 


echo 
$_SESSION['miprecio']; 
echo 
"$unidades unidades del producto $prod";
echo 
"<input type='Submit' name='$prod' value='Quitar'><br>"; } 
?> 
</form> 
<form action="confirmar.php" method="post"> 
<input type='Submit' name='Comprar' value="Confirmar compra"> 
</form> 
<?php 

?> 
</body> 
</html

-->en la linea 72, while($fila=mysql_fetch_array($resultado)){ es donde se recorre el resultado de la consulta SELECT * FROM productos WHERE.... para mostrar los productos de la tabla productos en mysql.
  #4 (permalink)  
Antiguo 20/09/2012, 11:33
 
Fecha de Ingreso: septiembre-2012
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Recoger valor formulario en $_SESSION

PD: probando con
Código PHP:
Ver original
  1. $_SESSION['precio'][]=$fila["precio"];
  2. print_r($_SESSION["precio"]);
creo que por aqui anda la solucion, pero de momento no guarda nada, ¿Donde debo colocarlo?......................Me gustaria que probaras el codigo haber como seria, gracias
  #5 (permalink)  
Antiguo 20/09/2012, 11:39
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recoger valor formulario en $_SESSION

fíjate bien lo que haces, éstas agregando el precio dentro de un array dentro de $_SESSION['precio'], al colocar un par de corchetes extra.

si realizar un var_dump($_SESSION) verás como tienes estructurada la data de la sesion
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 20/09/2012, 12:06
 
Fecha de Ingreso: septiembre-2012
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Recoger valor formulario en $_SESSION

ok, no recoge absolutamente nada el $_SESSION['precio'][]=$fila["precio"];, ahora si miras el codigo, sino te comento yo, he echo var_dump($_SESSION) y analizo esto array(2) { ["usuario"]=> string(2) "12" ["pedido"]=> array(1) { ["hd_500_GB_60_00"]=> int(1) } }, con tiene usuario que no nos importa ese ssesion, y pedido al cual le llega una cadena de un array, pero como puedo hacer que se guarde en otro sesion el precio del producto seleccionado en el formulario ¿¿????, eso es lo que quiero hacer, pero estoi trabado compañero..........

Etiquetas: $_session, formulario
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 21:15.