Foros del Web » Programando para Internet » PHP »

Evitar índices repetidos tras lectura de una BD

Estas en el tema de Evitar índices repetidos tras lectura de una BD en el foro de PHP en Foros del Web. Hola a todos, Quiero hacer una aplicación sencilla que se encargue de convertir un arreglo bidimensional a una tabla HTML. El arreglo bidimensional lo obtengo ...
  #1 (permalink)  
Antiguo 16/03/2005, 21:31
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años, 6 meses
Puntos: 0
Evitar índices repetidos tras lectura de una BD

Hola a todos,

Quiero hacer una aplicación sencilla que se encargue de convertir un arreglo bidimensional a una tabla HTML. El arreglo bidimensional lo obtengo a partir de leer una BD usando mysql_fetch_array. Mi código actual es el siguiente:

Código PHP:

function creaTabla($datos) {
    
$t "<table border='1' cellpadding='2' cellspacing='0'><tr>";

    
// Crear los encabezados
    
$d $datos[0];
    foreach (
$d as $cat => $valor) {
        
$t .= "<th>".$cat."</th>";
    }
    
$t .= "</tr>";

    
// Ahora los datos
    
foreach ($datos as $dato) {
        
$t .= "<tr>";
        foreach (
$dato as $valores)
            
$t .= "<td>".$valores."</td>";
        
$t .= "</tr>";
    }
    echo 
$t;

Pensé q sería algo muy sencillo. Sin embargo, me encontré con algo que no sabía, y es que cuando doy un fetch_array se crean arreglos bidimensionales con campos repetidos pero sustituidos por números. Por ejemplo obtengo:

Array
(
[0] => Array
(
[0] => 465
[idCliente] => 465
[1] => NISSAN Vehículos Altamira
[Empresa] => NISSAN Vehículos Altamira
)

[1] => Array
(
[0] => 454
[idCliente] => 454
[1] => Galería en Detalle (Pisos)
[Empresa] => Galería en Detalle (Pisos)
)

[2] => Array
(
[0] => 453
[idCliente] => 453
[1] => Florería Plaza (Regalos)
[Empresa] => Florería Plaza (Regalos)
)
)

Como puede verse, en cada 'fila' de mi arreglo bidimensional obtengo un campo [0] que es igual que el campo [idCliente], así como el campo [1] es el mismo que el campo [Empresa].

Todo esto es lo que me entrega una instucción sencilla de un while() con mysql_fetch_array

Quiero que desaparezcan los índices numéricos repetidos. Quiero quedarme solo con los campos que tienen nombre en texto (idCliente, Empresa) para poder hacer mi tabla.

Ideas?
  #2 (permalink)  
Antiguo 16/03/2005, 21:57
Avatar de Keitaro  
Fecha de Ingreso: marzo-2005
Ubicación: Mi Casa
Mensajes: 33
Antigüedad: 19 años, 8 meses
Puntos: 0
mmm... una respuesta bastante simplista es que podrías inicializar una variable para obtener solo la componente x del array[x][y]...

for($i = 0; $i < count($result[resultElements]); $i++)
{
$n_res = $result[resultElements][$i];
?>

algo así se me ocurre..

(P.D: usado en la API de GOOGLE)
__________________
:si: :si: :si: Sólo sé que nada sé... :si: :si: :si:

Santiago de Chile
  #3 (permalink)  
Antiguo 16/03/2005, 22:00
Avatar de Keitaro  
Fecha de Ingreso: marzo-2005
Ubicación: Mi Casa
Mensajes: 33
Antigüedad: 19 años, 8 meses
Puntos: 0
aps... además, para arroar espacio te recomiendo sacarlo como mysql_fetch_assoc, que asocia los arrays por los índices y solo devuelve la asociacion por indice. En el caso de MySQL, el indice es el nombre del campo.

Así te ahorrás recursos en el sistema, ya que no hay dos copias de las respuestas de cada consulta...

Sayonara
__________________
:si: :si: :si: Sólo sé que nada sé... :si: :si: :si:

Santiago de Chile
  #4 (permalink)  
Antiguo 16/03/2005, 23:09
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años, 6 meses
Puntos: 0
Gracias, creo el fetch_assoc resolvió lo que necesitaba (siempre utilizo únicamente el nombre de campo)

Había usado odbc antes y según recuerdo ahí no me pasaba esto, pero cuando cambié a MySQL usaba el método fetch_array y por eso me estaba dando la lata.

Saludos,
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 12:54.