• Martes 19 de Noviembre de 2024, 14:24

Autor Tema:  Necesito recorrer un array  (Leído 7169 veces)

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Necesito recorrer un array
« en: Lunes 30 de Marzo de 2009, 20:16 »
0
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
  1.  
  2. ----------------------Este es el codigo de las funciones:
  3. <?php
  4. define ( "odbc_sat_server", "sat_reparaciones_Odbc" ); // Host al que conectar, habitualmente es el ‘localhost’
  5. define ( "odbc_sat_USER", "" ); // Nombre del usuario con permisos para acceder;
  6. define ( "odbc_sat_PASS", "" ); // Contraseña de dicho usuario
  7. define ( "odbc_sat__bd", "sat-reparaciones"); // Nombre de la base de datos que se conectara
  8. // Fichero con los datos de conexion a la BBDD
  9. //------------------------------------------
  10. //------------------------------------------
  11.  
  12. class cdb
  13. {
  14.     private  $conexion;
  15.     private $resultado;
  16.    
  17.     public function __construct()
  18.     {
  19.         $conexion = 0;  
  20.        
  21.     }
  22.    
  23.     public function __destruct()
  24.     {
  25.         $this->desconexion();
  26.     }
  27.     public function desconexion()
  28.     {
  29.         if ( $this->conexion > 0 )
  30.         {  
  31.             odbc_close( $this->conexion);
  32.             $conexion = 0;
  33.         }
  34.     }
  35.     public function isconect()
  36.     {
  37.           return $this->conexion ;
  38.     }
  39.    
  40.     public function consulta( $query )
  41.     {
  42.         $this->resultado = odbc_exec( $this->conexion, $query);
  43.         if ($this->resultado ==  false)
  44.         {
  45.             return false;
  46.         }else{
  47.             return true;
  48.         }  
  49.                
  50.     }
  51.    
  52.     public function conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS)
  53.     {
  54.         $this->conexion = odbc_connect($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
  55.         return  $this->isconect();
  56.        
  57.     }
  58.    
  59.     public function imprimir()
  60.     {
  61.         $array = odbc_fetch_array($this->resultado,1);
  62.        
  63.         foreach($array as $registro)
  64.         {
  65.             echo($registro);
  66.            
  67.         }
  68.        
  69.     }
  70. };
  71. ?>
  72. ----------------------Este es el codigo donde llamo a la funciones:
  73.  
  74. <?php
  75.     include "db.php";
  76.     $db = new cdb;
  77.        
  78.     $odbc_sat_server = "sat_reparaciones_Odbc";
  79.     $odbc_sat_USER=  "";
  80.     $odbc_sat_PASS=  "";
  81.    
  82.     $db->conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
  83.  
  84.     if ($db->isconect() > 0 )
  85.     {
  86.         echo("conectado");
  87.         $sql = "select * from clientes";
  88.        
  89.         if ($db->consulta( $sql ) == true)
  90.         {
  91.             echo("consulta correcta");
  92.             $db->imprimir();
  93.         }else
  94.         {
  95.             echo("consulta incorrecta");
  96.         }  
  97.        
  98.     }else
  99.     {
  100.         echo("error de conexion");
  101.     }  
  102. ?>
  103.  

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #1 en: Martes 31 de Marzo de 2009, 21:41 »
0
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
  1.  public function imprimir()
  2.      {
  3.         $i = 1;
  4.         while ( $array = odbc_fetch_array($this->resultado,$i)){
  5.               ++$i;
  6.              print_r($array);
  7.          }
  8.      
  9.     }
  10.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #2 en: Jueves 2 de Abril de 2009, 22:54 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Necesito recorrer un array
« Respuesta #3 en: Domingo 5 de Abril de 2009, 05:21 »
0
Primero saca el return del while, porque como lo tienes, nada más va a retornar el primer registro.

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #4 en: Miércoles 15 de Abril de 2009, 14:58 »
0
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

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #5 en: Miércoles 15 de Abril de 2009, 16:50 »
0
Necesitas imprimir el arreglo correctamente, ademas te falta la etiqueta  <select>

Código: PHP
  1.  
  2. $db->conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
  3. $arr=$db->cliente("SELECT CLIENTE FROM CLIENTES");
  4. ?>
  5. <select name='clientes'>
  6. <?php
  7. for ($i=0;$i<count($arr);$i++)
  8. ?>
  9. <option value ="<?php echo $arr[0][$i]; ?>"><?php echo $arr[0][$i];?></option>
  10. <?php
  11. }
  12. ?>
  13. </select>
  14.  
  15.  
  16.  

Otro detalle cuando publiques codigo, utiliza las etiquetas [CODE][/b] para que sea mas entendible


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #6 en: Jueves 16 de Abril de 2009, 14:49 »
0
Muchas gracias pero no funcionas, cuando cargo la pagina , se queda pensando y por mas que he probado no se como recorrer el array ...adenas tambien daba un error que no reconoce el indice
arr[0] ,
muchas gracias

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #7 en: Jueves 16 de Abril de 2009, 15:29 »
0
Entonces inicia en 1

Código: PHP
  1.  
  2. $db->conexion($odbc_sat_server, $odbc_sat_USER, $odbc_sat_PASS);
  3. $arr=$db->cliente("SELECT CLIENTE FROM CLIENTES");
  4. ?>
  5. <select name='clientes'>
  6. <?php
  7. for ($i=0;$i<count($arr);$i++)
  8. ?>
  9. <option value ="<?php echo $arr[1][$i]; ?>"><?php echo $arr[1][$i];?></option>
  10. <?php
  11. }
  12. ?>
  13. </select>
  14.  
  15.  
Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #8 en: Viernes 17 de Abril de 2009, 16:05 »
0
Me sigue recuperando solo la primera fila , no me devuelve todas las filas , y la tabla tiene mas de una fila ....¿Puede que el problema este en la funcion? ,no se como solucionar el problema

talcual

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
    • http://www.codigolandia.com
Re: Necesito recorrer un array
« Respuesta #9 en: Lunes 20 de Abril de 2009, 05:46 »
0
los arrays se recorren con los foreach no con los while pero tambien se puede jajajaj saludos

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #10 en: Lunes 20 de Abril de 2009, 12:18 »
0
imprime lo que te devuelva la funcion

Código: PHP
  1. $arr=$db->cliente("SELECT CLIENTE FROM CLIENTES");
  2.  
  3. echo "<pre>";
  4. print_r($arr);
  5. echo "</pre>";
  6.  
  7.  

El problema puede estar con el count, fiajate que te imprime


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

akiestudio

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #11 en: Martes 21 de Abril de 2009, 12:33 »
0
Al poner el codigo que me diste sale esto;
Código: PHP
  1. (
  2.     [1] => Array
  3.         (
  4.             [1] => Juan
  5.         )
  6.  
  7.     [2] => Array
  8.         (
  9.             [1] => jojo
  10.         )
  11.  
  12. )
  13.  
  14.  

Pero cuando quito el count del for me da el error:
Undefined Ofsset en la linea de codigo:
<option value ="<?php echo $arr[1][$i]; ?>"><?php echo $arr[1][$i];?></option>
gracias

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Necesito recorrer un array
« Respuesta #12 en: Martes 21 de Abril de 2009, 15:10 »
0
Prueba de esta manera

Código: PHP
  1. <select name='clientes'>
  2. <?php
  3. foreach($arr as $idx => $valor){
  4. ?>
  5. <option value ="<?php echo $valor; ?>"><?php echo $valor[1];?></option>
  6. <?php
  7. }
  8. ?>
  9. </select>
  10.  

$valor[1] , el 1 seria como el 'campo' si visualizamos la matriz como una tabla
Array ( 1 => Array (  1 => 'Juan' ,2=>'Lopez' ),   2 => Array  ( 1 => 'jojo',2=>'dos' ));



Si quisiera otra posicion de la fila, solo habria que cambiarlo

$valor[2]
Array ( 1 => Array (  1 => 'Juan' ,2=>'Lopez' ),   2 => Array  ( 1 => 'jojo',  2=>'dos' ));
 
y asi sucesivamente


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================