Programación Web y Scripting > PHP

 Necesito recorrer un array

(1/3) > >>

akiestudio:
Hola, cuando recorro el array solo me devuelve el primer registro , y no todo el contenido del array que es lo que hago mal;
Como puedo hacerlo ,muchas gracias
--- Código: PHP --- ----------------------Este es el codigo de las funciones:<?phpdefine ( "odbc_sat_server", "sat_reparaciones_Odbc" ); // Host al que conectar, habitualmente es el ‘localhost’define ( "odbc_sat_USER", "" ); // Nombre del usuario con permisos para acceder;define ( "odbc_sat_PASS", "" ); // Contraseña de dicho usuariodefine ( "odbc_sat__bd", "sat-reparaciones"); // Nombre de la base de datos que se conectara// Fichero con los datos de conexion a la BBDD//------------------------------------------//------------------------------------------ class cdb{    private  $conexion;    private $resultado;        public function __construct()     {        $conexion = 0;              }        public function __destruct()    {        $this->desconexion();    }    public function desconexion()    {        if ( $this->conexion > 0 )         {               odbc_close( $this->conexion);            $conexion = 0;        }    }    public function isconect()    {          return $this->conexion ;    }        public function consulta( $query )    {        $this->resultado = odbc_exec( $this->conexion, $query);        if ($this->resultado ==  false)        {            return false;        }else{            return true;        }                       }        public function conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS)    {        $this->conexion = odbc_connect($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);        return  $this->isconect();            }        public function imprimir()    {        $array = odbc_fetch_array($this->resultado,1);                foreach($array as $registro)         {            echo($registro);                    }            }};?>----------------------Este es el codigo donde llamo a la funciones: <?php    include "db.php";    $db = new cdb;            $odbc_sat_server = "sat_reparaciones_Odbc";    $odbc_sat_USER=  "";    $odbc_sat_PASS=  "";        $db->conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);     if ($db->isconect() > 0 )    {        echo("conectado");        $sql = "select * from clientes";                if ($db->consulta( $sql ) == true)        {            echo("consulta correcta");            $db->imprimir();        }else        {            echo("consulta incorrecta");        }               }else     {         echo("error de conexion");    }   ?> 

F_Tanori:
Hasta el momento no he tenido la oportunidad o necesidad , de utilizar PHP con ODBC, pero creo que tu problema esta en
odbc_fetch_array parece que no es la forma correcta de extraer los datos



Este codigo es un ejemplo, no he podido probarlo, pero es mas o menos siguiendo como se hace sin ODBC, puedes buscar ejemplos en la documentacion de php http://php.net/odbc_fetch_array


--- Código: PHP --- public function imprimir()     {        $i = 1;        while ( $array = odbc_fetch_array($this->resultado,$i)){              ++$i;             print_r($array);         }          } 
Saludos

akiestudio:
Muchas gracias pero ahora el problema que tengo es que en vez de imprimirlo en la funcion , quiero que esta me retorne el array e imprimir despues de la llamada en la funcion .
public function imprimir()
     {
        $i = 1;
        while ( $array = odbc_fetch_array($this->resultado,$i)){
              ++$i;
           return ($array);
         }
     
    }


if ($db->isconect() > 0 )
    {
        echo("conectado");
        $sql = "select * from clientes";
       
        if ($db->consulta( $sql ) == true)
        {
            echo("consulta correcta");
            $db->imprimir();
           echo $array
        }else
        {
            echo("consulta incorrecta");
        }  
Esto asi no funciona , alguien puede ayudarme a retornar un array desde una funcion
gracias

shadow_rev:
Primero saca el return del while, porque como lo tienes, nada más va a retornar el primer registro.

:suerte:

akiestudio:
Muchas gracias , pero no consigo devolver el array , he limpiado un poco el codigo , quiero cargar una lista....este es el nuevo codigo:
Este es el codigo de la clase y la funcion:
<?php
define ( "odbc_sat_server", "sat_reparaciones_Odbc" ); // Host al que conectar, habitualmente es el ‘localhost’
define ( "odbc_sat_USER", "" ); // Nombre del usuario con permisos para acceder;
define ( "odbc_sat_PASS", "" ); // Contraseña de dicho usuario
define ( "odbc_sat__bd", "sat-reparaciones"); // Nombre de la base de datos que se conectara
// Fichero con los datos de conexion a la BBDD
//------------------------------------------
//------------------------------------------

class cdb
{
   private  $conexion;
   private $resultado;
   
   
   public function __construct()
   {
      $conexion = 0;   
      
   }
   
   public function __destruct()
   {
      $this->desconexion();
   }
   
   // Funcion de sesion
   
   public function desconexion()
   {
      if ( $this->conexion > 0 )
      {    
         odbc_close( $this->conexion);
         $conexion = 0;
      }
   }
   public function isconect()
   {
        return $this->conexion ;
   }
   
   public function consulta( $query )
   {
      $this->resultado = odbc_exec( $this->conexion, $query);
      if ($this->resultado ==  false)
      {
         return false;
      }else{
         return true;
      }   
            
   }
   
   
   public function conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS)
   {
      $this->conexion = odbc_connect($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
      return  $this->isconect();
      
   }
   
   public function cliente($sql)
   {
      $arr    = array();
      $rs    = odbc_exec($this->conexion,$sql);
      $x      = 1;
      while (odbc_fetch_row($rs))
      {
         for ($y = 1; $y <= odbc_num_fields($rs); $y++)
            $arr[$x][$y] = odbc_result($rs,$y);
         $x++;
      }
         if ($x > 1)
         {
            
            return $arr;
         }   
   }

};
   
?>   

Este es el codigo donde quiero cargar los datos en la lista:

<html>
<head>
<title>Ejemplo de Funcion y conexion a BBDD</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL con FUNCIONES</H1>
<select name = "APELLIDOS">
<?php
include "db.php";
$db = new cdb;
      
   $odbc_sat_server = "sat_reparaciones_Odbc";
   $odbc_sat_USER=  "";
   $odbc_sat_PASS=  "";
   
   $db->conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
   $arr=$db->cliente("SELECT CLIENTE FROM CLIENTES");
      ?>
         <option value ="<?php echo $db->cliente()?>"<?php echo $db->cliente()?></option>
      <?   
   
   echo $arr[1][2];//AQUI SI CONSIGO MOSTRAR DATOS  ,Solo un registro . .el unico que solicito
   
?>
</select>
</table>
</body>
</html>
Muchas gracias a ver si alguien me resuelve la duda

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa