Comunidad de diseño web y desarrollo en internet online

Duda con foreah de php para integrar a paypal

Citar            
MensajeEscrito el 04 Ago 2010 08:22 pm
Que tal hace unas semanas comente algo sobre hacer un carro de compra para enviarlo a paypal, bueno pues ya logre hacerlo por lo menos para que no tenga errores al navegar dentro del sitio. Ahora mi duda es esta:

tengo el siguiente codigo (omito las tags html que son body head title) tengo esto:

Código PHP :

<?php
session_start();
$items = $_SESSION['carrito'];
if(count($items)>0){
echo "<table>";
echo "<tr>";
echo "<th>Producto</th>";
echo "<th>Precio</th>";
echo "<th>Remover</th>";
echo "</tr>";
$total = 0;
foreach($items as $code=>$value){
echo "<tr> ";
echo "<td>". $items[$code]["name"] ."</td> ";
echo "<td>\$". $items[$code]["price"] ."</td> ";
echo "<td><form action='remove.php' method='post'><input type='hidden' name='code' value='". $items[$code]['code'] ."'><input type='submit' value='remove'></form></td>";
echo "</tr> ";
$total+=$items[$code]["price"];
}
unset($value);
echo "<tr>";
echo "<td>Total: </td>";
echo "<td>\$". $total ."</td>";
echo "</tr>";
echo "<form action='https://www.sandbox.paypal.com/cgi-bin/webscr' method='post'>\n";
echo "<input name='cmd' type='hidden' value='_cart'/>\n";
echo "<input type='hidden' name='upload' value='1'>\n";
echo "<input type='hidden' name='business' value='[email protected]'>\n";
echo "<input type='hidden' name='currency_code' value='USD'>\n";
foreach($items as $code=>$value){
   echo "<input name='item_name_". $items[$code]["code"] ."' type='hidden' value='". $items[$code]["name"] ."' />\n";
   echo "<input name='amount_". $items[$code]["code"] ."' type='hidden' value='". $items[$code]["price"] ."' />\n";
}
echo "<input type='submit' value='Comprar ahora'>\n";
echo "</form><br><br>";
}else{
   echo "No hay nada en el carro";
}
?>
<?php
echo "<a href='shop.php'>Seguir Comprando</a>";
?>

A grandes razgos explico
Jalo un array (multidimensional con indice alfanumerico) de una variable SESSION (carrito) :) hasta ahi va bien.
Despues hago la tabla para presentar el carro de compra. Sigue bien
y luego de eso genero un formulario lleno de hiddens para enviar los producto al array:
El codigo fuente que genera es este:

Código HTML :

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cart</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table><tr><th>Producto</th><th>Precio</th><th>Remover</th></tr><tr> <td>Producto1</td> <td>$2.50</td> <td><form action='remove.php' method='post'><input type='hidden' name='code' value='1'><input type='submit' value='remove'></form></td></tr> <tr> <td>Producto3</td> <td>$9.99</td> <td><form action='remove.php' method='post'><input type='hidden' name='code' value='3'><input type='submit' value='remove'></form></td></tr> <tr> <td>Producto4</td> <td>$9.99</td> <td><form action='remove.php' method='post'><input type='hidden' name='code' value='4'><input type='submit' value='remove'></form></td></tr> <tr><td>Total: </td><td>$22.48</td></tr><form action='https://www.sandbox.paypal.com/cgi-bin/webscr' method='post'>

<input name='cmd' type='hidden' value='_cart'/>
<input type='hidden' name='upload' value='1'>
<input type='hidden' name='business' value='[email protected]'>
<input type='hidden' name='currency_code' value='USD'>
<input name='item_name_1' type='hidden' value='Producto1' />
<input name='amount_1' type='hidden' value='2.50' />
<input name='item_name_3' type='hidden' value='Producto3' />
<input name='amount_3' type='hidden' value='9.99' />
<input name='item_name_4' type='hidden' value='Producto4' />
<input name='amount_4' type='hidden' value='9.99' />
<input type='submit' value='Comprar ahora'>
</form><br><br><a href='shop.php'>Seguir Comprando</a>
</body>
</html>


Segun con eso se tienen que enviar todos los productos que tengo en mi carro a paypal no?
Pero seleccionando ciertos elementos del carro me dice que el carro esta vacio (en paypal) y si pongo los que si funcionan con los que no omite los que "piensa" no existen.
Creo que es un problema con el foreach para integrar los elementos en el form porque segun lei con el primer foreah el value de $value no se borra y hay que limpiarlo ya lo hice pero nanai :? .

Alguien podria decirme que esta mal y si pudieran otra alternativa para hacerlo.

PS Con el formulario que puse solo se envia el primer elemento.

Por dan12

155 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 04 Ago 2010 08:40 pm
Veo que en tu foreach escribes las tagas <form>, estos significa que por cada uno de tus elementos estas creando un formulario diferente que se trata por separado, así que al enviar datos solo enviarías lo que esta dentro de ese formulario. Tienes que crear los tags <form> fuera de tu foreach para que abarque todos los elementos.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 04 Ago 2010 08:47 pm
bueno dan12 veo que sigues con un problemita pero has avanzado muy bien... mira tienes que hacer antes de tu carrito osea antes de tu tr y eso debes de utilizar el bucle for para recorer cada vez que entres un articulo y te dije "por ahi cuando te deje el planteo del carrito que te hice" que el truco del carrito es actualizando cada vez que agrege uno y por lo visto no veo donde actuailizas tu variable de sesion y estas imprimiendo los tr sin actualizarlo espero que busque lo que te mostre del panteo y como se actuliza y veras que haras tu carrito despues entonces create un COUNT DE LA MATRIZ CARRITO PARA QUE ACTUALIZE....
BUSCA LO QUE TE PUSE POR EL FORO QUE ANDO JEJEJE UN POCO RAPIDO PARA DEJARTELO... SOLO ENTRA A SALUDAR A LOS EXPERTOS...!!!! Y VER ALGUNAS COSAS BYE DAN12

Por Acter-Making

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Ago 2010 09:31 pm
Bueno, una respuesta pa' los dos, primero para Odin:

El for each para crear los inputs hidden que en este caso tendrian el nombre y el precio de cada producto la estructura esta asi
echo <form>
echo <input>
echo<input>
foreach(){
echo <input>
echo <input>
}
echo <input submit>
</form>

Eso se ve en el codigo aunque el primer <form> se fue muy a la derecha porque no le puse salto de linea, bueno creo que eso es a lo que te referías.

Bueno, y para Acter:
El Array 'carrito' :) no es necesario actualizarlo por lo menos en este codigo, si vez en cada <tr> existe un <td> que lleva a un archivo remove.php bueno pues a su vez al presentar los productos en shop.php tambien en un <td> tienen un add.php:
Ambos add.php y remove.php se componen por esto:

Código :

$array = $_SESSION['carrito'];
/* Acciones que añaden o quitan al array */
$_SESSION['carrito'] = $array;


Bueno pues con eso cada vez que se modifica el array y carga la pagina carro.php este siempre registra el array mas actualizado por eso no creo que vaya por ahi, lo que pienso es que talvez al hacer el segundo foreach entre en conflicto con el primero, u otra manera de iterar el array tomando en cuenta que el indice es alfanumerico

Por dan12

155 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 04 Ago 2010 09:32 pm
si el problema es con el foreach no entiendo por que posteas todo el codigo fuente, resume esa muralla de texto

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 04 Ago 2010 09:33 pm

dan12 escribió:

Bueno, una respuesta pa' los dos, primero para Odin:

El for each para crear los inputs hidden que en este caso tendrian el nombre y el precio de cada producto la estructura esta asi
echo <form>
echo <input>
echo<input>
foreach(){
echo <input>
echo <input>
}
echo <input submit>
</form>

Eso se ve en el codigo aunque el primer <form> se fue muy a la derecha porque no le puse salto de linea, bueno creo que eso es a lo que te referías.

Bueno, y para Acter:
El Array 'carrito' :) no es necesario actualizarlo por lo menos en este codigo, si vez en cada <tr> existe un <td> que lleva a un archivo remove.php bueno pues a su vez al presentar los productos en shop.php tambien en un <td> tienen un add.php:
Ambos add.php y remove.php se componen por esto:

Código :

$array = $_SESSION['carrito'];
/* Acciones que añaden o quitan al array */
$_SESSION['carrito'] = $array;


Bueno pues con eso cada vez que se modifica el array y carga la pagina carro.php este siempre registra el array mas actualizado por eso no creo que vaya por ahi, lo que pienso es que talvez al hacer el segundo foreach entre en conflicto con el primero, u otra manera de iterar el array tomando en cuenta que el indice es alfanumerico


PS El primer for eah es para crear la tabla y el segundo es para formar los inputs del formulario que lleva a paypal.

Por dan12

155 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 05 Ago 2010 12:54 am
ya sta solucionado acabo de leer la documentacion de paypal y dice que las variables de cada item_name y amount_ deben ir con una numeracion 12345 etc por eso al mandar los items y no darles ese orden paypal los ignoraba. bueno eso era todo si quieres cierren el tema

Por dan12

155 de clabLevel



Genero:Masculino  

México

opera
Citar            
MensajeEscrito el 20 Oct 2010 11:03 pm
por favor dejen los archivos para poder trabajarlos.... o configurarlo...
att,
jss

Por javsant04

9 de clabLevel



Genero:Masculino  

diseño grafico

chrome
Citar            
MensajeEscrito el 20 Oct 2010 11:04 pm

dan12 escribió:

ya sta solucionado acabo de leer la documentacion de paypal y dice que las variables de cada item_name y amount_ deben ir con una numeracion 12345 etc por eso al mandar los items y no darles ese orden paypal los ignoraba. bueno eso era todo si quieres cierren el tema
por favor dejen los archivos para poder trabajarlos.... o configurarlo...
att,
jss

Por javsant04

9 de clabLevel



Genero:Masculino  

diseño grafico

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.