Foros del Web » Programando para Internet » PHP »

duda con carrito + variables

Estas en el tema de duda con carrito + variables en el foro de PHP en Foros del Web. Hola, tengo un sistema de carrito montado. Recojo el contenido asi: Código PHP: foreach ( $_POST  as  $idarticle  =>  $quantitat ) {         if (!empty( $quantitat ))    {          ...
  #1 (permalink)  
Antiguo 19/07/2007, 02:07
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
duda con carrito + variables

Hola, tengo un sistema de carrito montado.

Recojo el contenido asi:
Código PHP:
foreach ($_POST as $idarticle => $quantitat)
{    
    if (!empty(
$quantitat))    {
        
$carrito[]=array($idarticle,$quantitat);
    }        
}            
$_SESSION['carrito'] = $carrito
el carrito se llena de una ristra de articulos con un textbox al lado poniendo la cantidad a pedir.
el problema q tambien tengo otras variables q las paso por post, como puedo distinguirlas de lo que es exactamente el carrito???

Saludos y gracias!!
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 19/07/2007, 02:28
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Re: duda con carrito + variables

Podrías poner un carácter especial (un asterisco, por ejemplo) en el name de los campos que sean del carrito para reconocerlos.
  #3 (permalink)  
Antiguo 19/07/2007, 02:38
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: duda con carrito + variables

Cita:
Iniciado por jerkan Ver Mensaje
Podrías poner un carácter especial (un asterisco, por ejemplo) en el name de los campos que sean del carrito para reconocerlos.
pero en la recogida como los distingo?
asi? asi funciona pero es la manera correcta?
si el campo tiene el nmobre q yo busco pues lo assigno a una variable sino se va al carrito!
Código PHP:
foreach ($_POST as $idarticle => $quantitat
{...
if(
$idarticle==xcampo){
  
//assignar variable
}else{
//llenarcarrito
}


aqui donde rellenan los campos
Código HTML:
<tr>
<td class="tdcomanda"><?=$idarticle." - ".$nomarticle;?></td>
<td class="tdcomanda"><input type="text" id="<?=$idarticle;?>" name="<?=$idarticle;?>" maxlength="7"></td>
<td class="tdcomanda"><?=$ucomanda;?></td>
</tr> 
y tengo q pasar campos de input hidden
Código HTML:
<input type="hidden" id="idgrup" name="idgrup" value="<?=$idgrup?>"> 

Saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 19/07/2007 a las 02:53
  #4 (permalink)  
Antiguo 19/07/2007, 03:00
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Re: duda con carrito + variables

Si les pones un asterisco a los campos del carrito así:
Código PHP:
<input type="text" id="<?=$idarticle;?>" name="<?="*".$idarticle;?>" maxlength="7">
Puedes reconocerlos así:
Código PHP:
foreach ($_POST as $idarticle => $quantitat
{...
if(
$idarticle[0]=="*"){
...
}


  #5 (permalink)  
Antiguo 19/07/2007, 09:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: duda con carrito + variables

Es mejor mandar eso en un array aparte via POST asi:
Código PHP:
<input type="text" id="<?=$idarticle;?>" name="carrito[<?=$idarticle;?>]" maxlength="7">
Luego en PHP lo recorres asi:
Código PHP:
foreach ($_POST['carrito'] as $idarticle => $quantitat)
{    
    if (!empty(
$quantitat))    {
        
$carrito[]=array($idarticle,$quantitat);
    }        

  #6 (permalink)  
Antiguo 24/07/2007, 01:27
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: duda con carrito + variables

Hola,
me ha salido un problema al subirlo al servidor, el array se me crea con todos los valores, bueno con casi todos, aunque la variable $quantitat este vacia hay algunos registros q se insertan en el array. en cambio en local funciona perfectamente!

Código PHP:
if (!empty($quantitat))    {
        
$carrito[]=array($idarticle,$quantitat);
    } 
cual es el motivo? como puedo arreglarlo?

Saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 24/07/2007, 03:22
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Re: duda con carrito + variables

No acabé de entender bien.
Con lo que puede que tengas problemas es con la función empty. Si $quantitat vale 0, la interpretará como vacía.
  #8 (permalink)  
Antiguo 24/07/2007, 03:35
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: duda con carrito + variables

Cita:
Iniciado por jerkan Ver Mensaje
No acabé de entender bien.
Con lo que puede que tengas problemas es con la función empty. Si $quantitat vale 0, la interpretará como vacía.
El campo para rellenar el carrito viene dado de un formulario con toda una ristra de articulos

Código PHP:
<tr><td class="capcel" colspan="3"><?=$nom_familia;?></td></tr>    
<?
while($res_article mysql_fetch_row($sql_article)){
$idarticle  $res_article[0];
$nomarticle $res_article[1];
$ucomanda   $res_article[2];
?>
<tr>
<td class="tdcomanda"><?=$idarticle." - ".$nomarticle;?></td>
<td class="tdcomanda"><input type="text" id="<?=$idarticle;?>" name="carrito[<?=$idarticle;?>]" value="0" maxlength="7"></td>
<td class="tdcomanda"><?=$ucomanda;?></td>
</tr>
<?
}//fi while $res_article
Le puesto el value a 0 y en la comprobacion lo siguiente:

Código PHP:
foreach ($_POST['carrito'] as $idarticle => $quantitat)
{    
    if (
$quantitat!=0){
        
$carrito[]=array($idarticle,$quantitat);
    }

incluso probe con empty y quantitat distinto de 0 y nada, en local(windowsxp) perfecto y en el server (un debian, servidor propio, tengo acceso completo a el) me devuelve varios codigos con cantidad 0!

saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 24/07/2007, 04:05
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Re: duda con carrito + variables

Cuando dices 'me devuelve' supongo que te referirás a que te los mete en el carrito.
Haz una cosa. Al principio del script de procesado, pon un print_r($_POST) para ver si todo es correcto.
  #10 (permalink)  
Antiguo 24/07/2007, 04:26
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: duda con carrito + variables

si muestro por pantalla el carrito o lo recibido por post devuelve lo siguiente:

Código:
Array
(
    [idgrup] => 2
    [carrito] => Array
        (
            [310500] => 12
            [396700] => 0
            [342900] => 0
            [305200] => 0
            [305300] => 0
            [208000] => 0
            [361400] => 0
            [307400] => 0
            [397300] => 0
            [360400] => 0
            [345500] => 0
            [307700] => 0
            .....

  
        )
y si saco por pantalla el carrito:
Código PHP:
foreach ($_POST['carrito'] as $idarticle => $quantitat)
{    
    if (
$quantitat!=0){
        
$carrito[]=array($idarticle,$quantitat);
    }
}    
echo 
"<pre>";
print_r($carrito);
echo 
"</pre>"
Código:
Array
(
    [310500] => 12
    [396700] => 0
    [342900] => 0
    [305200] => 0
    [305300] => 0
    [208000] => 0
    [361400] => 0
    [307400] => 0
    ...
//y al final me hace una cosa muy rara
//me crea un subarray en un numero de q no existe el codigo. 
//es decir el 830001 no existe en mi BD 
//dentro d este me pone lo q hay al principio
//y si inserto mas numeros me va creando el 830002, 830003......
[830001] => Array
        (
            [0] => 310500
            [1] => 12
        )

)
y en local funciona perfecto... voy a dejar la bebida en horas de trabajo
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #11 (permalink)  
Antiguo 24/07/2007, 04:38
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: duda con carrito + variables

El servidor tiene activado variables Globales, fue cambiarlo y funcionar a la perfeccion, aun estoy commocionado por esto, y aun no ser porque estaban las variables globales activas, pero bueno...

una aspirina y a seguir...

Gracias por vuestro seguimiento y ayuda!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
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 14:07.