Foros del Web » Programando para Internet » PHP »

Problema con Array.!!

Estas en el tema de Problema con Array.!! en el foro de PHP en Foros del Web. Hola a todos, estoy desarrollando una aplicacion con Flex y php (amfphp) + mysql soy relativamente nuevo, asi ke hay cosas ke aun no comprendo ...
  #1 (permalink)  
Antiguo 30/05/2012, 09:02
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Problema con Array.!!

Hola a todos, estoy desarrollando una aplicacion con Flex y php (amfphp) + mysql

soy relativamente nuevo, asi ke hay cosas ke aun no comprendo bien, el asunto es que en php he programado mis servicios (clase y funciones) para ser llamados desde flex

tengo una funcion la cual me regresa los datos de un select, y lo recibo en flex como un array y lo muestro en un datagrid, no hay problema, flex lo recibe perfectamente.

El problemaaa, es que al parecer esta funcion que me regresa los datos, realmente no esta creando un "array normal" digamosle asi, ya que si lo verificas con is_array( ) regresa falso, y si usar el print_r , aparentemente si parece un array, por lo cual al no ser un arreglo "normal" el FOREACH me marca error al llamar esa funcion desde Flex.

aqui la funcion que general los resultados a un "array"

// Lista de opciones de tipos_servicios para el DataGrid
function getAll()
{
$SQL = "select * from tipos_servicios order by nombre" ;
if ($rs = $this->query($SQL))
{
while ($row = mysql_fetch_assoc($rs))
{
$datos[] = $row;
}
}
else
{
$datos = null;
}
return $datos;
}

si se hace un is_array( $datos ) regresa falso, pero en flex lo recibe bien
el asunto es que en otra funciono necesito algo asi
function delDetalle($id)
{
$detalle = $this->getDetalle($id);

foreach ( $detalle as $row )
{
$sql = "update inventario set existencia = existencia + ".$row[cantidad]." where id_articulo = ".$row[id_articulo].";";
$resultado = $this->query($sql);
}
}

al llamar la funcion delDetalle desde Flex, me marca error en el foreach, ya que $detalle no es un arreglo

  #2 (permalink)  
Antiguo 30/05/2012, 09:21
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
Respuesta: Problema con Array.!!

Faltaría ver que es lo que hace el método $this->getDetalle(), ya que con la información que expones no es suficiente.

Saludos.
  #3 (permalink)  
Antiguo 30/05/2012, 09:38
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Problema con Array.!!

Cita:
Iniciado por GatorV Ver Mensaje
Faltaría ver que es lo que hace el método $this->getDetalle(), ya que con la información que expones no es suficiente.

Saludos.
Hola, hace exactamente lo mismo, solo que recibe como parametro un id

function getDetalle($id)
{
$SQL = "select d.id_articulo, concat(inventario.nombre, ' - ', marcas.nombre, ' - ', presentaciones.nombre) as descrip, d.cantidad ";
$SQL .= "from det_tipos_servicios d, inventario, marcas, presentaciones ";
$SQL .= "where d.id_tipo_servicio = $id and (inventario.id_articulo = d.id_articulo and marcas.id_marca = inventario.id_marca ";
$SQL .= "and presentaciones.id_presentacion = inventario.id_presentacion) order by d.id_articulo";

if ($rs = $this->query($SQL))
{
while ($row = mysql_fetch_assoc($rs))
{
$datos[] = $row;
}
}
else
{
$datos = null;
}
return $datos;
}
  #4 (permalink)  
Antiguo 30/05/2012, 10:00
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
Respuesta: Problema con Array.!!

Pues sin ver más detalles, lo que puede ser es que este if:
Código PHP:
Ver original
  1. if ($rs = $this->query($SQL))

Te regrese false o algo y $datos se vuelva null y por eso te da error en el foreach(), ¿que hace tu función query()?
  #5 (permalink)  
Antiguo 30/05/2012, 10:16
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Problema con Array.!!

Cita:
Iniciado por GatorV Ver Mensaje
Pues sin ver más detalles, lo que puede ser es que este if:
Código PHP:
Ver original
  1. if ($rs = $this->query($SQL))

Te regrese false o algo y $datos se vuelva null y por eso te da error en el foreach(), ¿que hace tu función query()?

nop, no es eso, si meto un return_r( $datos ) si lo devuelve

pero por alguna razon, no lo crea como un "array normal" que funcione con foreach, ya no se ke sea.

-------


function query ($sql)
{
$hostname = "localhost";
$database = "taller";
$username = "root";
$password = "";

$conex = mysql_connect($hostname,$username,$password) or die("no se puede conectar porque ".mysql_error());
mysql_select_db($database);

$result= mysql_query($sql,$conex);
mysql_close($conex);
return $result;
}
  #6 (permalink)  
Antiguo 30/05/2012, 10:29
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 7 meses
Puntos: 34
Respuesta: Problema con Array.!!

$datos te tiene que devolver un array de arrays que son las filas...

proba con un print_r() y postealo a ver que te tira...
  #7 (permalink)  
Antiguo 30/05/2012, 10:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Problema con Array.!!

Cita:
Iniciado por patriciomase Ver Mensaje
$datos te tiene que devolver un array de arrays que son las filas...

proba con un print_r() y postealo a ver que te tira...
** Al parecer es algun detalle de AMFPHP



----------------
(Object)#0
message = "faultCode:INVALID_AMF_MESSAGE faultString:'Invalid AMF message' faultDetail:'Array
(
[0] => Array
(
[id_articulo] => 1
[descrip] => KDFDFDL - QUAKER STATE - GALON
[cantidad] => 3
)

[1] => Array
(
[id_articulo] => 2
[descrip] => prueba - MOBIL 1 - LITRO
[cantidad] => 2
)

)
'"
name = "Error"
rootCause = (null)

----------------------------------
  #8 (permalink)  
Antiguo 30/05/2012, 10:42
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
Respuesta: Problema con Array.!!

Tu función query es incorrecta, no debes de abrir y cerrar la conexión ya que entonces pierdes el link del resultset y no puedes iterar los resultados.

Saludos.
  #9 (permalink)  
Antiguo 30/05/2012, 11:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Problema con Array.!!

Saben que ya no pude esperar, ya tenia 2 dias detenido con eso, hasi que opte, por cambiar

$cntDet = count($detalle);

for ($i = 0; $i < $cntDet; $i++)
{
$cant = $detalle[$i]['cantidad'];
$articulo = $detalle[$i]['id_articulo'];

$sql = "update inventario set existencia = (existencia + $cant) where id_articulo = $articulo ; ";
$resultado = $this->query($sql);
}
  #10 (permalink)  
Antiguo 30/05/2012, 11:04
 
Fecha de Ingreso: agosto-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Problema con Array.!!

Cita:
Iniciado por GatorV Ver Mensaje
Tu función query es incorrecta, no debes de abrir y cerrar la conexión ya que entonces pierdes el link del resultset y no puedes iterar los resultados.

Saludos.
la tengo bien, solo ke copie mal aki, pke kite algunas cosas que ya no use y se kedo arriba esa linea, ya solucione mi problema

Etiquetas: mysql, sql
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 12:11.