PHP - Alternativa

 
Vista:

Alternativa

Publicado por Luis (53 intervenciones) el 30/09/2009 23:08:26
Hola tengo un problema con el siguiente codigo:

$carro[md5($item)]=array('identificador'=>md5($item), 'cantidad'=>$cantidad,'producto'=>$title, 'colorPro'=>$colorPro, 'precio'=>$price,'id'=>$item);

foreach($carro as $k => $v){ //esta es la linea 98
echo $v['producto'];
}

en mi cumputadora funciona perfectamente bien pero cuando lo subo al servidor me dice:

Warning: Invalid argument supplied for foreach() in /home/pagiale/public_html/vista_detalle.php on line 98.

Hasta donde se ese error se pruduce cuando el arreglo $carro esta vacio, pero lo raro es q en mi computadora funciona bien. Me pregunto si tendra algo q ver con las versiones de php o algo por el estilo.

Muchas gracias por adelantado al que me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Alternativa

Publicado por Diego Romero (1450 intervenciones) el 01/10/2009 00:10:27
Misterio...

A mi también me anda bien. Trata de hacer un var_dump($carro) justo antes del foreach en la máquina que no te anda. Por ahí es cierto que $carro está vacío (o tal vez no definido o no definido como un array).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Luis (53 intervenciones) el 01/10/2009 01:02:46
Diego muchas gracias por tu ayuda no conocia esa funcion.

En la maquina donde funciona el codigo imprime esto:

array(1) { ["f65bcb0a683d516a9966fbfc78776e99"]=> array(6) { ["identificador"]=> string(32) "f65bcb0a683d516a9966fbfc78776e99" ["cantidad"]=> int(1) ["producto"]=> string(21) "APLIQUE MQ ESPIGA P/B" ["colorPro"]=> string(4) "AZUL" ["precio"]=> string(2) "52" ["id"]=> string(6) "A1703Q" } }

En la otra maquina imprime esto:
string(5) "Aorm1"

No tengo la menor idea de que significa eso pero pareciera $carro si esta vacio en esta maquina.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Diego Romero (1450 intervenciones) el 01/10/2009 14:47:36
El problema debe estar en otra parte del código que no has posteado aquí. ¿Notaste que en la otra máquina la variable $carro es solo un string y no un array?. La causa puede ser tan simple como haberte olvidado de subir la última versión de algún fuente PHP que luego incluyes en éste con include() o require().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Luis (53 intervenciones) el 01/10/2009 17:21:04
Buena la verdad todavia no me imagino que puede ser. En ese codigo utilizo solamente un requiere para incluir el codigo de la conexion a la base de datos.

Lo que voy a probar ahora es subir de nuevo los archivos a la otra maquina por si hubo algun error. Pero mientras tanto posteo el codigo completo de la maquina donde no funciona.

Este es el codigo completo de la maquina donde no funciona.
if (isset($_POST["carro"])) {
$title=$_POST['descripcion'];
$price=$_POST['precio'];
$item=$_POST['idSubProducto'];
$colorPro=$_POST['colorPro'];


if(!isset($cantidad)){$cantidad=1;}

if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];

//echo $title." desc ".$price." price ".$item." cod ".$colorPro;
Nota: utilize ese echo para verificar que estuvieran los datos y los imprime correctamente

Aqui creo el array con todos los valores que existen puesto que probe imprimiendolo antes con el echo.

Se me ocurrio probar quitando la funcion md5 que aparece dos veces pero no dio ningun resultado diferente.
$carro[md5($item)]=array('identificador'=>md5($item), 'cantidad'=>$cantidad,'producto'=>$title, 'colorPro'=>$colorPro, 'precio'=>$price,'id'=>$item);
$_SESSION['carro']=$carro;
var_dump($carro);
En realidad este foreach va en VerCompras.php lo coloco aqui solamente para probar que funcione.
foreach($carro as $k => $v){
echo $v['producto'];
}
//header("Location:VerCompras.php?");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Diego Romero (1450 intervenciones) el 01/10/2009 19:45:08
No estoy seguro pero ahora que veo que $carro toma valor de una variable de sesión quizá el problema surge a partir de una diferencia de configuración entre los dos PHP (o diferentes versiones de PHP como habías dicho?), haz un var_dump() de $_SESSION, o mejor aún usa este código:

echo "<pre>";
var_dump($_SESSION);
echo "</pre>";

Para que veas mejor el volcado de la variable.
No veo que pongas start_session() en ninguna parte pero supongo que estará allí solo que no lo has posteado.

Nota: puedes usar var_dump() o print_r(), la diferencia es que print_r no te muestra el tipo de la variable, solo el contenido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Luis (53 intervenciones) el 01/10/2009 20:43:00
Al principio del codigo tengo esto:
<?php require_once('Connections/conex.php'); ?>
<?php

if (!isset($_SESSION)) {
session_start();
}

?>

No crei necesario colocarlo anteriormente puesto que la variable de session la utilizo en VerCompras.php. Si te fijas estoy utilizando dentro del foreach la variable array y no la variable de session.

Para mi el problema esta cuando creo el arreglo $carro, deberia ser algo que esta fallando ahi.

Hice lo que me comentaste y ahora si dice que es un arreglo. esto es lo que muestra en el navegador, lo malo es parece parece que los datos del arreglo se hubiesen dañado.

array(1) {
["carro"]=>
string(5) "Aorm1"
}

Tambien me pregunto si la funcion md5 podria estar funcionando mal y estar causando el problema, aunque creo mas que sea un error que no se ve a simple vista. Probe quitantando la funcion md5 y el resultado es exactamente el mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alternativa

Publicado por Luis (53 intervenciones) el 02/10/2009 21:07:08
Ya solucione el problema.

Era un problema con las sessiones, cuando cerraba la session no tenia un session_destroy() y por lo tanto existia la variable $_SESSIO['carro'] en un condicional que tenia cuando no deberia existir.

Aqui estaba el problema

if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];

Y no se porque razon tu ve que añadirle el else para que funcionara

if(isset($_SESSION['carro']))
$carro=$_SESSION['carro']; else $carro=array();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar