Foros del Web » Programando para Internet » PHP »

Problema con Array y foreach

Estas en el tema de Problema con Array y foreach en el foro de PHP en Foros del Web. Tenia este problema: Invalid argument supplied for foreach() Asi que vi los foreach reciben solo arrays y le puse un if(is_array($fila)){ .... El problema que ...
  #1 (permalink)  
Antiguo 30/10/2013, 18:38
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 5 meses
Puntos: 0
Problema con Array y foreach

Tenia este problema: Invalid argument supplied for foreach()

Asi que vi los foreach reciben solo arrays y le puse un if(is_array($fila)){ ....

El problema que tengo es que no se como hacer para que $fila sea un array. Ya que debería mostrarme la informacion que pongo ahí.

Código PHP:
Ver original
  1. public function mostrar()
  2.      {
  3.       $this->objetoDatos->conectar();
  4.       $fila=$this->objetoDatos->ejecutar("select * from libros where codigo_libro=$this->codigo_libro");
  5.        if(is_array($fila)){  
  6.        foreach($fila as $filaActual){
  7.        echo "Codigo del Libro: ",$filaActual [codigo_libro],"<br/>Nombre del Libro:",$filaActual [nombre_libro],"<br/>Descripcion:",$filaActual [descripcion_libro],"<br/>Autor:",$filaActual [autor_libro],"<br/>Categoria:",$filaActual [categoria_libro],"<br/>Editorial:",$filaActual [editorial_libro],"<br/>Cantidad de libros:",$filaActual [cantidad_libro];
  8.        echo "</br>";
  9.         }
  10.        }
  11.       $this->objetoDatos->desconectar();
  12.      }
  #2 (permalink)  
Antiguo 30/10/2013, 19:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Array y foreach

Supongo que $fila no es un array, ni siquiera un objeto, sino un recurso que devuelve la clase para tener acceso a los resultados de la consulta, revisa si tienes en tu clase objetoDatos algún método fetch o dinos qué métodos hay en la clase y tal vez podamos ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/10/2013, 19:10
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Problema con Array y foreach

Cita:
Iniciado por Triby Ver Mensaje
Supongo que $fila no es un array, ni siquiera un objeto, sino un recurso que devuelve la clase para tener acceso a los resultados de la consulta, revisa si tienes en tu clase objetoDatos algún método fetch o dinos qué métodos hay en la clase y tal vez podamos ayudarte.
Hola. Gracias por tu interes en ayudarme. Como podras ver estos 2 archivos estan enlazados

NegociosLibros.php

Código PHP:
Ver original
  1. <?php
  2. include_once ("DatosLibros.php");
  3.  
  4. class capaNegocios
  5. {
  6.  public $codigo_libro;
  7.  public $nombre_libro;
  8.  public $descripcion_libro;
  9.  public $autor_libro;
  10.  public $categoria_libro;
  11.  public $editorial_libro;
  12.  public $cantidad_libro;
  13.  public $objetoDatos;
  14.  
  15. public function __construct($codigo_libro,$nombre_libro,$descripcion_libro,$autor_libro,$categoria_libro,$editorial_libro,$cantidad_libro)
  16.  {
  17.    $this->codigo_libro=$codigo_libro;
  18.    $this->nombre_libro=$nombre_libro;
  19.    $this->descripcion_libro=$descripcion_libro;
  20.    $this->autor_libro=$autor_libro;
  21.    $this->categoria_libro=$categoria_libro;
  22.    $this->editorial_libro=$editorial_libro;
  23.    $this->cantidad_libro=$cantidad_libro;
  24.    $this->objetoDatos=new DatosLibros ('mysql:host=localhost;dbname=b','root','hola');
  25.    }
  26.  
  27. public function insertar()
  28.  {
  29.   try
  30.     {
  31.       $this->objetoDatos->conectar();
  32.       $this->objetoDatos->ejecutar("insert into libros(codigo_libro,nombre_libro,autor_libro,descripcion_libro,categoria_libro,editorial_libro,cantidad_libro) values('$this->codigo_libro','$this->nombre_libro','$this->descripcion_libro','$this->autor_libro','$this->categoria_libro','$this->editorial_libro','$this->cantidad_libro')");
  33.       $this->objetoDatos->desconectar();
  34.      }
  35.   catch (PDOException $ex)
  36.      {
  37.        throw $ex;
  38.      }
  39.    }  
  40. public function eliminar()
  41.    
  42.      {
  43.       $this->objetoDatos->conectar();
  44.       $this->objetoDatos->ejecutar("delete from libros where codigo_libro=$this->codigo_libro");
  45.       $this->objetoDatos->desconectar();
  46.      }
  47.  
  48. public function modificar()
  49.      {
  50.       $this->objetoDatos->conectar();
  51.       $this->objetoDatos->ejecutar("update libros set cantidad_libro='$this->cantidad_libro' where codigo_libro=$this->codigo_libro)");
  52.       $this->objetoDatos->desconectar();
  53.      }
  54.  
  55. public function mostrar()
  56.      {
  57.       $this->objetoDatos->conectar();
  58.       $fila=$this->objetoDatos->ejecutar("select * from libros where codigo_libro=$this->codigo_libro");
  59.        if(is_array($fila)){  
  60.        foreach($fila as $filaActual){
  61.        echo "Codigo del Libro: ",$filaActual [codigo_libro],"<br/>Nombre del Libro:",$filaActual [nombre_libro],"<br/>Descripcion:",$filaActual [descripcion_libro],"<br/>Autor:",$filaActual [autor_libro],"<br/>Categoria:",$filaActual [categoria_libro],"<br/>Editorial:",$filaActual [editorial_libro],"<br/>Cantidad de libros:",$filaActual [cantidad_libro];
  62.        echo "</br>";
  63.         }
  64.        }
  65.       $this->objetoDatos->desconectar();
  66.      }
  67.  
  68. }
  69. ?>

DatosLibros.php

Código PHP:
Ver original
  1. <?php
  2. class DatosLibros
  3.  {
  4.   private $cadenaConexion;
  5.   private $user;
  6.   private $password;
  7.   private $objetoConexion;
  8.  
  9. public function __construct($cadenaConexion,$user,$password)
  10.      {
  11.      $this->cadenaConexion=$cadenaConexion;
  12.      $this->user=$user;
  13.      $this->password=$password;
  14.      }
  15. public function conectar ()
  16.   {
  17.  
  18.    try
  19.  
  20.     {
  21.  
  22.      $this->objetoConexion= new PDO ($this->cadenaConexion,$this->user,$this->password);
  23.  
  24.      $this->objetoConexion->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  25.  
  26.      }
  27.  
  28.    catch (PDOException $ex)
  29.  
  30.     {
  31.  
  32.      die("PDOException: " . $ex->getMessage());
  33.  
  34.      }
  35.  
  36.    catch (Exception $ex)
  37.  
  38.     {
  39.  
  40.      die("Exception: " . $ex->getMessage());
  41.  
  42.      }
  43.  
  44.    }
  45.  
  46. public function desconectar ()
  47.     {
  48.     $this->objetoConexion=null;
  49.     }
  50. public function ejecutar ($strComando)
  51.  {
  52.   try
  53.     {
  54.      $ejecutar = $this->objetoConexion->prepare($strComando);
  55.      $ejecutar->execute();
  56.      
  57.      }
  58.   catch (PDOException $ex)
  59.     {  
  60.      throw $ex;
  61.      }
  62.    }
  63.   }
  64. ?>

Sigo sosteniendo que $fila debe ser un array para que muestre lo que tengo en el echo. Por lo menos eso fue lo que vi en Stack Overflow
  #4 (permalink)  
Antiguo 30/10/2013, 19:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Array y foreach

Pues el método ejecutar() jamás devuelve nada, y está claro que debería devolver un array para que funcione como esperas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/10/2013, 19:38
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Problema con Array y foreach

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues el método ejecutar() jamás devuelve nada, y está claro que debería devolver un array para que funcione como esperas.
Entonces pongo un return $fila; a eso es lo que te refieres?
  #6 (permalink)  
Antiguo 30/10/2013, 19:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Array y foreach

¿Sabes programar?

Tu método ejecutar() no contiene ninguna variable $fila, no haces ningún procedimiento acumulador de los resultados, y finalmente no devuelves nada.

Son varios pasos y no basta con "return $fila;" y por arte de magia se arregla todo, eso no es posible, no existe.

Si jamás has escrito una función que devuelva algún resultado te sugiero comiences por aprender del manual, ya cuando sepas hacer algo básico podremos seguirte ayudando.

http://www.php.net/manual/es/functions.user-defined.php

Ejemplo:
Código PHP:
Ver original
  1. function foo() {
  2.   $out = array():
  3.  
  4.   // algo que vaya acumulando resultados en $out
  5.  
  6.   return $out;
  7. }
  8.  
  9. var_dump(foo()); // array...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/10/2013, 19:52
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Problema con Array y foreach

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Sabes programar?
Estoy empezando. Esto es una asignacion de la universidad y por eso estoy algo apurado.
  #8 (permalink)  
Antiguo 30/10/2013, 20:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con Array y foreach

Mmmm...

No, clases particulares no damos. Tutorías tampoco.
La única solución que tienes es estudiarlo, y practicar muuuucho. ¡Bah!, es decir, lo mismo que hicimos todos.

En este tema (programación), no hay atajos, apuros ni saltos. Debes hacerlo a conciencia para dominar lo básico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/10/2013, 20:51
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Problema con Array y foreach

Es que de por si lo estoy haciendo, solo que por lo menos en mi caso cuando estoy apurado, se me nubla la mente. De todas maneras gracias a todos por tomarse la molestia en contestar.

Etiquetas: foreach, select
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 07:00.