FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
SESIONES, VARIABLES y otras yerbas
Lo de siempre: nuevo en PHP (15 días)
Estoy haciendo un sitio donde el cliente marca productos en varias paginas y al final aparece una con la lista de pedidos para ser enviada por mail. Estoy trabajando con sesiones, y subo la información con POST. codigo: Código PHP:
al llegar a la pagina final como hago para que me imprima la lista? He probado con Código PHP:
Agradesco me expliquen, aunque supongo sea algo sencillo, lo ignoro y ya estoy cansado de 'probar' sin resultados. Gracias Última edición por roman fecha: 03-03-2007 a las 04:53:47. Razón: Agregar etiqueta [php] para mejor legibilidad |
#2
|
||||
|
||||
Hola, y bienvenido a los foros.
Me parece que no tienes claro cuál es la estructura de tu arreglo. Cuando llenas el carro haces algo como: Código PHP:
código => cantidad Si quieres indizar el carrito con el código del producto, entonces cada elemento del arreglo debe ser a su vez un arreglo, por ejemplo: Código PHP:
Puedes acceder a los elementos del carrito así: Código PHP:
Código PHP:
Otra cosa: olvídate de session_register, éso ya está en desuso. Simplemente usa session_start para iniciar la sesión y $_SESSION para leer y escribir tus variables de sesión. // Saludos |
#3
|
|||
|
|||
Gracias Roman por contestar
Pero sigo sin lograrlo.
Quite el codigo if ($item){ if (!isset($carrinho)){ $carrinho[$item]=$cantidad; }else{ foreach($carrinho as $k => $v){ if ($item==$k){ $carrinho[$k]+=$cantidad; $encontrado=1; } } if (!$encontrado) $carrinho[$item]=$cantidad; } } que segun entiendo es el que suma más del mismo producto (por si agregan del mismo 2 o mas veces) así que la paginas de productos (productos que se cargan de uina tabla en la bd según seleccione por rubro o por un buscador de palabras) tiene un include a este codigo <?php session_start(); $item=$_POST['item']; $name=$_POST['name']; $cantidad=$_POST['cantidad']; $carrinho=$_SESSION['carrinho']; $_SESSION['carrinho']=$carrinho; ?> Alli suben por post el item (codigo), name y la cantidad que especifique la persona en el cuadro de texto Luego la persona va a la pagina final donde se impreme todo lo que eligió. Allí puse: <?php session_start(); $carrinho = $_SESSION['carrinho']; ?> al comienzo, y donde debe aparecer el texto <?php if (isset($carrinho)){ foreach($carrinho as $codigo => $item){ echo "# $codigo Prod.: $item[0] Quant.: $item[1] \n"; } } ?> Pero al probarla, despues de elegir algunos productos aparece: # 7730177002400 Prod.: 5 Quant.: # 7730177002417 Prod.: Quant.: # 7730177002424 Prod.: 1 Quant.: 0 ¿Que estoy haciendo mal? |
#4
|
|||
|
|||
Hola juanperez
copio y pego del correo que te he mandado hace un rato Cita:
Cita:
- No es necesario que utilices "session_register" cuando utilizas el array $_SESSION - Puedes trabajar directamente con el array $_SESSION no es necesario que utilices una variable secundaria. - Deberías filtrar todas los valores de los formularios para evitar inyección de código malicioso. - Todo el código que has puesto se puede reducir a unas poca lineas (claro está si no haces nada más por medio) Código PHP:
Cita:
Código PHP:
A través del correo pocas veces contesto, y cundo no lo hago en el foro es porque no tengo tiempo. Última edición por kayetano fecha: 05-03-2007 a las 20:15:11. |
#5
|
|||
|
|||
Bien, bien
Gracias Kayetano por tu respuesta.
Colgué la interrogante en 4 foros y Roman y tú me han comentado, lo que habla muy bien de lo serio de este foro, como me pareció desde el principio. Las correcciones en el codigo muy buenas. La verdad como decia, estoy entrando en esto obligado por el pedido de un cliente. Hasta ahora las webs que he realizado son todas en html, pero con esto de PHP, aunque por ahora voy entendiendo con dificultad, veo que se abre un abanico de posibilidades muy grande. Voy comenzando a entender las estructuras. En concreto, utilicé los codigos que me enviaste Kayetano (estaba intentando las buenas sugerencias de Roman pero sin exito) y el carrito funciona casi bien. Solo aparece un error y no doy con él: en el resultado no me aparecen los nombres de los productos y en su lugar aparece un 0. Ejemplo: # 7730177002400 Prod.: 0 Quant.: 150 # 7730177002417 Prod.: 0 Quant.: 240 # 7730177002448 Prod.: 0 Quant.: 15 # 7730154000153 Prod.: 0 Quant.: 50 # 7730177002110 Prod.: 0 Quant.: 20 El codigo del formulario que sube los productos es: <form action="<?=$PHP_SELF."?".$SID?>" method="post"> <input type="hidden" name="name" value="<?php echo "$row[name]"; ?>" /> <input type="hidden" name="item" value="<?php echo "$row[codigo]"; ?>" /> Unidades: <input type="text" name="cantidad" value="000" size="5"> <input type="image" value="enviar" src="images/carrito.gif" width="26" height="26" border="0" /> </form> Y al comienzo de la pagina final, (el formulario con la lista elegida para enviar) pongo: <? session_start(); $carrinho=$_SESSION['carrinho']; ?> Por si alguna de estas cosas tiene que ver. A mi vista no encuentro la razón de ese cero Muchas gracias otra vez. Un abrazo. |
#6
|
|||
|
|||
Creo que encontré el error
En el codigo:
<?php session_start(); $item=$_POST['item']; if( !isset($_SESSION['carrinho']) ) $_SESSION['carrinho'] = array(); if ( isset( $_POST['item'] ) && $item > 0 ){ $_SESSION['carrinho'][$item]['cantidad'] += $_POST['cantidad']; $_SESSION['carrinho'][$item]['nombre'] += $_POST['name']; } ?> a la linea $_SESSION['carrinho'][$item]['nombre'] += $_POST['name']; le saqué el símbolo de + y ahora carga los nombres, supongo que el + iría si fuese un número y no una cadena de texto Quedó así $_SESSION['carrinho'][$item]['nombre'] = $_POST['name']; y funciona, gracias |
#7
|
|||
|
|||
Hola
Efectivamente, con las prisas hice copy/paste de la linea que sumaba la cantidad y no me acordé de eliminar el simbolo de sumar. Pero veo que te las has apañado bien. Suerte con el proyecto. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Sesiones | David | PHP | 6 | 01-03-2007 00:18:48 |
Software libre, propietario, licencias y otras yerbas | haron | Debates | 3 | 02-05-2004 19:17:09 |
Como declarar variables para que las puedan utilizar otras units | erocha | Varios | 1 | 07-11-2003 22:21:27 |
Sesiones en PHP... | Tanix | PHP | 2 | 11-08-2003 15:02:50 |
Sesiones y variablaes | Fr@n | PHP | 16 | 28-05-2003 09:59:03 |
|