Programación Web y Scripting > PHP
Necesito recorrer un array
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
[#] Página Siguiente
Ir a la versión completa