Foros del Web » Programando para Internet » PHP »

llenar array() con resultado de query

Estas en el tema de llenar array() con resultado de query en el foro de PHP en Foros del Web. Hola tengo un query que me regresa varios registros con 2 columnas. El problema es que tengo este foreach para llenar un <select>, y solo ...
  #1 (permalink)  
Antiguo 24/08/2009, 21:30
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 3 meses
Puntos: 1
llenar array() con resultado de query

Hola tengo un query que me regresa varios registros con 2 columnas.
El problema es que tengo este foreach para llenar un <select>, y solo me muestra el último registro, la verdad no se que estoy haciendo mal.....


Código PHP:
$sQuery = mysql_query("Select PaisId, NombrePais from paises");

$paises = mysql_fetch_array($sQuery);
foreach($paises->result_array() as $row)
{
    $first_options = array($row['PaisId'] => $row['NombrePais']);
}

<select name="first_select" id="first_select" onchange="test()">
        <option value="0"></option>
        <?php
        
if (isset($first_options))
        {
            foreach (
$first_options as $key=>$value)
            {
                echo 
'<option value="'.$key.'">'.$value.'</option>';
            }
        }
        
?>
</select>

gracias por el apoyo, saludos
  #2 (permalink)  
Antiguo 24/08/2009, 21:50
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: llenar array() con resultado de query

Código php:
Ver original
  1. foreach($paises->result_array() as $row)
  2. {
  3.     $first_options = array($row['PaisId'] => $row['NombrePais']);
  4. }

Debes hacer:
Código php:
Ver original
  1. foreach($paises->result_array() as $row)
  2. {
  3.     $first_options[$row['PaisId']] = $row['NombrePais'];
  4. }
  #3 (permalink)  
Antiguo 24/08/2009, 23:00
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
De acuerdo Respuesta: llenar array() con resultado de query

Holas,

De lo que haces:

Código PHP:
$sQuery = mysql_query("Select PaisId, NombrePais from paises"); 

$paises = mysql_fetch_array($sQuery); 
foreach($paises->result_array() as $row) 

    $first_options = array($row['PaisId'] => $row['NombrePais']); 


<select name="first_select" id="first_select" onchange="test()"> 
        <option value="0"></option> 
        <?php 
        
if (isset($first_options)) 
        { 
            foreach (
$first_options as $key=>$value
            { 
                echo 
'<option value="'.$key.'">'.$value.'</option>'
            } 
        } 
        
?> 
</select>

Podria ser mejor hacerlo asi:

Código PHP:
<?php
$sQuery 
mysql_query("Select PaisId, NombrePais from paises"); 
?>
<select name="first_select" id="first_select" onchange="test()"> 
        <option value="0"></option> 
<?php
while($row mysql_fetch_array($sQuery))
   echo 
'<option value="'.$row['PaisId'].'">'.$row['NombrePais'].'</option>'
?>
</select>
Creo que asi podrias tambien hacerlo en menos codigo y sin mucho bucle.

Saludos
Gildus
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 26/08/2009, 18:45
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: llenar array() con resultado de query

Podria ser mejor hacerlo asi:

Código PHP:
<?php
$sQuery 
mysql_query("Select PaisId, NombrePais from paises"); 
?>
<select name="first_select" id="first_select" onchange="test()"> 
        <option value="0"></option> 
<?php
while($row mysql_fetch_array($sQuery))
   echo 
'<option value="'.$row['PaisId'].'">'.$row['NombrePais'].'</option>'
?>
</select>
Creo que asi podrias tambien hacerlo en menos codigo y sin mucho bucle.

Saludos
Gildus[/QUOTE]

Claro que si, pero estoy utilizando el patron MVC. En mi presentación no pretendo hacer consultas a la BD, es por eso que lo hago asi, y en la presentación recojo solo el array ya lleno.

Gracias por tu aporte.
  #5 (permalink)  
Antiguo 26/08/2009, 18:49
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: llenar array() con resultado de query

Cita:
Iniciado por Ronruby Ver Mensaje
Código php:
Ver original
  1. foreach($paises->result_array() as $row)
  2. {
  3.     $first_options = array($row['PaisId'] => $row['NombrePais']);
  4. }

Debes hacer:
Código php:
Ver original
  1. foreach($paises->result_array() as $row)
  2. {
  3.     $first_options[$row['PaisId']] = $row['NombrePais'];
  4. }

La verdad nunca habia hecho eso......mmmm

lo que quisiera es llenar una matriz 2xn...... donde la primer columna contendra el key, y la segunda el valor del select o dropdown
  #6 (permalink)  
Antiguo 26/08/2009, 19:26
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: llenar array() con resultado de query

Muchas gracias Ronruby

Ya le entendi a tu codigo.... Lo que intentaba hacer es un dropdown de paises, al seleccionar el pais me muestra los estados de ese pais. Y solo me mostraba el ultimo registro del query, porque recorria cada registro y lo almacenaba en la misma posición.

Cita:
$paises = $this->util->consultarPaises();
$variables = array();
foreach($paises->result_array() as $row)
{
$variables[$row['PaisId']] = $row['NombrePais'];
}
$data['first_options'] = $variables;
$options!=null ? $data['options'] = $options : '';
$this->load->view('testdd', $data);
Utilizo COdeigniter, pero la variable $paises, supongamos que es mi query, yla función result_array() es mysql_fetch_array()

saludos y gracias
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 13:59.