Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/10/2013, 19:10
psicomago
 
Fecha de Ingreso: octubre-2013
Mensajes: 20
Antigüedad: 10 años, 6 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