Foros del Web » Programando para Internet » PHP »

consulta que recupera dos campos en un array.

Estas en el tema de consulta que recupera dos campos en un array. en el foro de PHP en Foros del Web. buenas tengo una select que me recupera 'id', y 'nombre' y quiero meterlo en un array. He revisado el foro, y aunque he visto preguntas ...
  #1 (permalink)  
Antiguo 23/12/2008, 09:07
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
consulta que recupera dos campos en un array.

buenas tengo una select que me recupera 'id', y 'nombre' y quiero meterlo en un array.

He revisado el foro, y aunque he visto preguntas parecidas, no he conseguido que me funcionen.

La idea es que el id sea el índice del array, y el nombre sea el valor.

Un saludo y gracias

Oskar
  #2 (permalink)  
Antiguo 23/12/2008, 10:49
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: consulta que recupera dos campos en un array.

Primero la consulta a un array

Archivo de Conexión por si no lo tenias o si te sirve en todo caso
Código PHP:
function conectar_BD() {
                global 
$servidor$usuar$password$basedatos$link$error;

                
/* conectamos al servidor */
        
$link mysql_connect($servidor$usuar$password);
        if (
$link) {
                        
/* seleccionamos la base de datos */
            
if (!@mysql_select_db($basedatos$link)) {
                                
$error "Imposible conectar con la base de datos ".$basedatos ;
            }
        } else {
            
$error "Imposible establecer conección con el servidor ".$servidor.mysql_error() ;
        }

                return 
$error;

    } 
//FIN function conectar_BD
        // conectamos al servidor
    
if ($error conectar_BD()) {
            echo 
"<p class='error'>$error</p>\n";
            exit;
    } 
//PASANDO LOS RESULTADOS DE CONSULTA A ARRAY
Código PHP:
$sql="SELECT id, nombre FROM personas"
$result mysql_query($sql$link);
while(
$not mysql_fetch_array($result))
{
     
$atmp[]=$not;

//AHORA YA TODO EN UN ARRAY, HACEMOS EL CAMBIO QUE NECESITAS, DONDE LA CLAVE ES EL id Y EL VALOR ES EL nombre

Código PHP:
foreach($atmp as $values)
{
   
$nuevo_array[$values[id]] = $values[nombre];

Los datos que necesitas consultar estan ahora en $nuevo_array, haces un:

Código PHP:
var_dump($nuevo_array); 
y verificaras que tendrás algo como lo que deseas.

$nuevo_array[0] = Luis
$nuevo_array[2] = Pedro
$nuevo_array[101] = María
$nuevo_array[23] = José

El orden del array dependerá según lo definas en la consulta.

Saludos amig@ espero era lo que buscabas y que te sirva!
__________________
Guatemala - Guatemala
  #3 (permalink)  
Antiguo 24/12/2008, 08:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: consulta que recupera dos campos en un array.

Hola compañero, la verdad es que no me ha funcionado.
Te copio pego como he usado el código.
Código PHP:
<?php
$result 
db_query("SELECT nid, title
FROM node
WHERE STATUS =1
AND TYPE = 'page'"
);
while(
$not mysql_fetch_array($result))
{
     
$atmp[]=$not
}

foreach(
$atmp as $values)
{
   
$nuevo_array[$values[nid]] = $values[title];
}  
var_dump($nuevo_array);  

print_r ($nuevo_array);
?>
El resultado que me da es el siguiente:
array(5) { [3]=> string(6) "titulo" [4]=> string(6) "titulo" [5]=> string(6) "titulo" [6]=> string(6) "titulo" [7]=> string(6) "titulo" }

He consultado en phpmyadmin la query, y debería tener al menos 4 resultados

Un saludo

Oskar

Última edición por oskar_calvo; 24/12/2008 a las 09:24
  #4 (permalink)  
Antiguo 24/12/2008, 12:18
Avatar de bLEx  
Fecha de Ingreso: mayo-2008
Ubicación: Villa Alemana, Chile
Mensajes: 181
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: consulta que recupera dos campos en un array.

Cita:
He consultado en phpmyadmin la query, y debería tener al menos 4 resultados
Pues ese query de acuerdo a lo que sale aqui...

Cita:
array(5) { [3]=> string(6) "titulo" [4]=> string(6) "titulo" [5]=> string(6) "titulo" [6]=> string(6) "titulo" [7]=> string(6) "titulo" }
te retorna un array con 5 valores... si bien sabes el print_r() te imprime la "estructura" del array... para visualizar mas entendible intenta agregando lo siguiente al final...

Código PHP:
for($i=$i mysql_num_rows$result ) ; $i++ ) {

    
//rescatas el valor del nid
    
$nid mysql_result$result $i "nid" );

    
//imprimes el nid y el valor de esas posicion del nuevo_array
    
echo "<br> NID: ".$nid." VALOR ARRAY: ".$nuevo_array[$nid];


Espero te sirva...
  #5 (permalink)  
Antiguo 24/12/2008, 13:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: consulta que recupera dos campos en un array.

Mas facil y rapido:
Código PHP:
<?php
$titulos 
= array();
$result db_query("SELECT nid, title
FROM node
WHERE STATUS =1
AND TYPE = 'page'"
);
while(list(
$nid$title) = mysql_fetch_row($result))
     
$titulos[$nid]=$title

echo 
'<pre>';
var_dump($title);
echo 
'</pre>';
?>
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 26/12/2008, 02:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: consulta que recupera dos campos en un array.

Muchísimas gracias Triby,

Con tu ayuda ya he sacado lo que quería hacer.

Oskar.
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 23:11.