![]() |
![]() |
| Paypal | 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
|
|||
|
|||
|
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? |
|
#2
|
|||
|
|||
|
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. |
|
#3
|
|||
|
|||
|
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. |
|
#4
|
|||
|
|||
|
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 ![]() |
|
#5
|
|||
|
|||
|
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 |
|