Foros del Web » Programando para Internet » PHP »

problema con array numerico

Estas en el tema de problema con array numerico en el foro de PHP en Foros del Web. Hola, Tengo en un campo "articulos" en la bd donde se guardan los valores de id_articulo-cantidad por cada articulo comprado y separados por comas, el ...
  #1 (permalink)  
Antiguo 31/01/2009, 13:50
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
problema con array numerico

Hola,

Tengo en un campo "articulos" en la bd donde se guardan los valores de id_articulo-cantidad por cada articulo comprado y separados por comas, el resultado es un array: 1-2,2-13,3-4... etc

Ahora necesito leerlos para enviar por email el pedido pero me realiza el cálculo en vez de mostrar literalmente su valor.

Código PHP:
$articulosBd = array(1-5,2-14);

foreach (
$articulosBd as $valor) {
    
$articulo explode("-",$valor);
    
$idArticulo=$$articulo[0];
    
$cantidad=$$articulo[1];

    
$query=mysql_query("SELECT * from catalogo WHERE id='$idArticulo'");
    while(
$row=mysql_fetch_assoc($query)){
          
$body .=  "Articulo: ".$row['producto']." (Ref: ".$row['referencia'].") - Cantidad: ".$cantidad."<br>";
    }
}

echo 
$body
Como puedo hacer para tomar los valores del array literalmente?

gracias de antemano
  #2 (permalink)  
Antiguo 31/01/2009, 14:11
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con array numerico

Enciérralos en comillas

Código PHP:
$articulosBd = array('1-5','2-14'
  #3 (permalink)  
Antiguo 31/01/2009, 14:28
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: problema con array numerico

si, pero como encierro en comillas cada valor del array?
  #4 (permalink)  
Antiguo 31/01/2009, 14:41
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con array numerico

Pero si ya te lo puse para que copies y pegues!

$articulosBd, como lo generas?

  #5 (permalink)  
Antiguo 31/01/2009, 15:10
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: problema con array numerico

Resumido, esto sería como introduzco los datos, pero he probado ponerle comillas aqui y me da error la sentencia sql.

Código PHP:
foreach($carro as $k => $v){
            
$unir $v['id']."-".$v['cantidad'];
            
$unir2 $unir2.",".$unir;
            
$articulo=substr($unir2,2);
        }

$sql="UPDATE pedidos SET articulos='$articulo' WHERE id=$idnuevo";
mysql_query($sql) OR die(mysql_error()); 
  #6 (permalink)  
Antiguo 31/01/2009, 15:14
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con array numerico

Espera. En tu base de datos tienes los datos guardados correctamente o es al momento de guardar donde tienes el problema?

  #7 (permalink)  
Antiguo 31/01/2009, 15:58
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: problema con array numerico

No, al guardarlos no hay problema, es a la hora de recuperar los datos del campo cuando tengo el problema.

Un solución sería insertarlos en la bd con comillas, pero lo he intentado y me da error el sql.
  #8 (permalink)  
Antiguo 31/01/2009, 17:29
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con array numerico

Pon la parte del código en la que generas $articulosBd


  #9 (permalink)  
Antiguo 02/02/2009, 16:44
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: problema con array numerico

Bueno, logré solucionarlo.
El fallo estaba en que al pasar los datos a $articuloBd como array me tomaba el valor como una resta (los datos por ejemplo eran 2-1,5-23,56-3,....):

Código PHP:
...
$articulos=$row['articulos'];
}
$articulosBd = array($articulos);
foreach (
$articulosBd as $valor) {
.... 
Solucionado con explode:
Código PHP:
...
$articulos=$row['articulos'];
}
$articulosBd explode(","$articulos);
foreach (
$articulosBd as $valor) {
.... 
Lo que no acabo de entender es porque con var_dump ($articulosBd) me mostraba correctamente los valores.

gracias por tu ayuda
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 22:50.