Foros del Web » Programando para Internet » PHP »

como meter resultados de consulta en array de esta forma?

Estas en el tema de como meter resultados de consulta en array de esta forma? en el foro de PHP en Foros del Web. Hola forer@s disculpen mi poco conocimiento en arrays, es por lo mismo que necesito su ayuda, tengo esta consulta: Código PHP: $sql = "SELECT * FROM organigrama WHERE nombre LIKE '%$term%'" ; ...
  #1 (permalink)  
Antiguo 11/09/2012, 18:13
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
como meter resultados de consulta en array de esta forma?

Hola forer@s

disculpen mi poco conocimiento en arrays, es por lo mismo que necesito su ayuda, tengo esta consulta:

Código PHP:
$sql="SELECT * FROM organigrama WHERE nombre LIKE '%$term%'";
$resultado mysql_query($sql) or die('Error en la consulta'.mysql_error());
while (
$fila=mysql_fetch_array($resultadoMYSQL_ASSOC)) {  
    echo 
$fila['nombre']." [".$fila['RPE']."]"//provisional, este dependerá de los cambios para el array

y necesito que los resultados de esta consulta se guarden en un array, como este:

Código PHP:
$items = array(
"Great Bittern"=>"Botaurus stellaris",
"Little Grebe"=>"Tachybaptus ruficollis",
"Black-necked Grebe"=>"Podiceps nigricollis",
"Little Bittern"=>"Ixobrychus minutus",
"Black-crowned Night Heron"=>"Nycticorax nycticorax",
"Purple Heron"=>"Ardea purpurea",
"White Stork"=>"Ciconia ciconia",
"Spoonbill"=>"Platalea leucorodia",
"Red-crested Pochard"=>"Netta rufina",
"Common Eider"=>"Somateria mollissima",
"Red Kite"=>"Milvus milvus",
"Hen Harrier"=>"Circus cyaneus",
"Montagu`s Harrier"=>"Circus pygargus",
"Black Grouse"=>"Tetrao tetrix",
"Grey Partridge"=>"Perdix perdix",
"Spotted Crake"=>"Porzana porzana",
"Corncrake"=>"Crex crex",
"Common Crane"=>"Grus grus",
"Avocet"=>"Recurvirostra avosetta",
"Stone Curlew"=>"Burhinus oedicnemus",
...
); 
La verdad no entiendo que significa la flechita (=>)

Este código es para un autocompletar, pero en lugar de que tenga el array de valores predefinido, necesito sacar los valores de la base de datos

Gracias por su apoyo
  #2 (permalink)  
Antiguo 11/09/2012, 18:19
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: como meter resultados de consulta en array de esta forma?

=> significa asignación.

array( "Great Bittern"=>"Botaurus stellaris",

en la clave "Great Bittern" asignas el valor "Botaurus stellaris"

Ese es un array asociativo, y por lo que veo, las claves no se corresponden con los campos de una base de datos, por lo que necesitas explicar de dónde podrías obtener cada par de valores (lo que sería "Great Bittern"=>"Botaurus stellaris", )
  #3 (permalink)  
Antiguo 11/09/2012, 18:24
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: como meter resultados de consulta en array de esta forma?

hola ocp001a

gracias por contestar tan rapido :o ... :D

Cita:
por lo que necesitas explicar de dónde podrías obtener cada par de valores (lo que sería "Great Bittern"=>"Botaurus stellaris", )
mira esos valores vienen predeterminados en el ejemplo de autocompletar, lo que yo necesito es adaptarlo a mi los tome del resultado de la consulta a la bd, algo como:

Código PHP:
Ver original
  1. $sql="SELECT * FROM organigrama WHERE nombre LIKE '%$term%'";
  2. $resultado = mysql_query($sql) or die('Error en la consulta'.mysql_error());
  3. while ($fila=mysql_fetch_array($resultado, MYSQL_ASSOC)) {  
  4.     $items = array( "$fila['nombre']"=>"$fila['RPE']", );
  5. }

pero obviamente me pone un error de sintaxis y yo se que esta mal, aunque es algo si lo que necesitaría :S

por que despues de establecer el array, el ejemplo trae una funcion donde envia de vuelta esos valores, entonces si no lo adapto a como el ejemplo no lo tomaria bien la funcion esa.

esta es la otra funcion, que la verdad para mis conocimientos en php no dan para meterle mano :S

Código PHP:
Ver original
  1. function array_to_json( $array ){
  2.  
  3.     if( !is_array( $array ) ){
  4.         return false;
  5.     }
  6.  
  7.     $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
  8.     if( $associative ){
  9.  
  10.         $construct = array();
  11.         foreach( $array as $key => $value ){
  12.  
  13.             // We first copy each key/value pair into a staging array,
  14.             // formatting each key and value properly as we go.
  15.  
  16.             // Format the key:
  17.             if( is_numeric($key) ){
  18.                 $key = "key_$key";
  19.             }
  20.             $key = "\"".addslashes($key)."\"";
  21.  
  22.             // Format the value:
  23.             if( is_array( $value )){
  24.                 $value = array_to_json( $value );
  25.             } else if( !is_numeric( $value ) || is_string( $value ) ){
  26.                 $value = "\"".addslashes($value)."\"";
  27.             }
  28.  
  29.             // Add to staging array:
  30.             $construct[] = "$key: $value";
  31.         }
  32.  
  33.         // Then we collapse the staging array into the JSON form:
  34.         $result = "{ " . implode( ", ", $construct ) . " }";
  35.  
  36.     } else { // If the array is a vector (not associative):
  37.  
  38.         $construct = array();
  39.         foreach( $array as $value ){
  40.  
  41.             // Format the value:
  42.             if( is_array( $value )){
  43.                 $value = array_to_json( $value );
  44.             } else if( !is_numeric( $value ) || is_string( $value ) ){
  45.                 $value = "'".addslashes($value)."'";
  46.             }
  47.  
  48.             // Add to staging array:
  49.             $construct[] = $value;
  50.         }
  51.  
  52.         // Then we collapse the staging array into the JSON form:
  53.         $result = "[ " . implode( ", ", $construct ) . " ]";
  54.     }
  55.  
  56.     return $result;
  57. }
  58.  
  59. $result = array();
  60. foreach ($items as $key=>$value) {
  61.     if (strpos(strtolower($key), $q) !== false) {
  62.         array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
  63.     }
  64.     if (count($result) > 11)
  65.         break;
  66. }
  67. echo array_to_json($result);
  #4 (permalink)  
Antiguo 11/09/2012, 18:29
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: como meter resultados de consulta en array de esta forma?

$items = array( "$fila['nombre']"=>"$fila['RPE']", );


Te da error por la coma, esa coma indica que habría un elemento más a la derecha, pero al no ponerlo, da error.

La forma en que podrías hacer es así (creo, ya que no revisé a profundidad tu código)

Código PHP:
Ver original
  1. $sql="SELECT nombre, RPE  FROM organigrama WHERE nombre LIKE '%$term%'";
  2. $resultado = mysql_query($sql) or die('Error en la consulta'.mysql_error());
  3. while ($fila=mysql_fetch_assoc($resultado)) {  //obtenemos en forma asociativa la fila ej: array('juan'=>'hola')
  4.     $items[] = $fila;//agregamos la fila a un array, obteniendo un array como el que pides.
  5. }
  #5 (permalink)  
Antiguo 11/09/2012, 18:45
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: como meter resultados de consulta en array de esta forma?

Probé con tu código pero no me salieron los resultados, por lo que asumo que no debe estar tomando en cuenta algo, también probé así:

Código PHP:
Ver original
  1. $items = array();
  2.  
  3. $sql="SELECT * FROM organigrama WHERE nombre LIKE '%$term%'";
  4. $resultado = mysql_query($sql) or die('Error en la consulta'.mysql_error());
  5. while ($fila=mysql_fetch_array($resultado, MYSQL_ASSOC)) {  
  6.     $items=$fila['nombre']."=>".$fila['RPE'].",";
  7. }

pero tampoco salieron resultados, se queda cargando

la coma la pongo porque mi idea es que los datos los vaya presentando asi, por ejemplo:

"fuckencio"=>"1",
"trollencio"=>"2",
"fucken"=>"3",

y asi sucesivamente, peroooo

como hacer (tambien) que cuando llegue al ultimo registro no ponga la coma, porque se supone que el array cierra asi: "fucken"=>"3");

:/ no se si esto es viable u.u

o de que otra forma podría enviar los datos de regreso por json???
  #6 (permalink)  
Antiguo 11/09/2012, 18:52
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: como meter resultados de consulta en array de esta forma?

Debes comprender la forma en que trabajan los arreglos. La coma no es necesaria, a menos que declararas el arreglo de forma "manual", es decir por código y no de forma dinámica, como lo necesitas si lees desde la base de datos.

Por lo que veo quieres construir el arreglo como si fuera una cadena de texto, cuando no debe ser así, ya que tendrías que hacer un eval a ese código.

¿Realmente existen los campos "nombre" y "RPE" en la tabla? si existen y tienen datos, prueba a imprimir el arreglo resultante.


Código PHP:
Ver original
  1. $sql="SELECT nombre, RPE  FROM organigrama WHERE nombre LIKE '%$term%'";
  2. $resultado = mysql_query($sql) or die('Error en la consulta'.mysql_error());
  3. while ($fila=mysql_fetch_assoc($resultado)) {  //obtenemos en forma asociativa la fila ej: array('juan'=>'hola')
  4.     $items[] = $fila;//agregamos la fila a un array, obteniendo un array como el que pides.
  5. }
  6.  
  7. var_dump($items);
  #7 (permalink)  
Antiguo 11/09/2012, 19:02
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: como meter resultados de consulta en array de esta forma?

Si existen :D con eso trabajo, este ya es un modulo que me falta.

No puedo probar con un echo, o no se donde, porque un script jquery es el que maneja este script php, lo pide y lo muestra, por decirlo así.

Mira estuve leyendo y lo que necesito es algo asi:

http://notasweb.com/articulo/php/lle...-bd-mysql.html

y lo adapte asi:

Código PHP:
Ver original
  1. $Configura = "SELECT nombre, RPE FROM organigrama";    
  2. $consulta = mysql_query ($Configura) or die ("Fallo en la Obtener la Canfiguracion");  
  3.  
  4. // Mostrar resultados de la consulta  
  5. $nConfig = mysql_num_rows ($consulta);  
  6.  
  7. if ($nConfig > 0){  
  8.     for ($i=0; $i<$nConfig; $i++){  
  9.         $verConfig = mysql_fetch_array($consulta);  
  10.         $CargaConfig[$i] = $verConfig["nombre"];  
  11.         $items[$CargaConfig[$i]] = $verConfig["RPE"];  
  12.     }    
  13. }

Edito: ya lo probe y ya salio !!!!

Gracias por tu ayuda ocp001a :D
  #8 (permalink)  
Antiguo 11/09/2012, 19:25
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: como meter resultados de consulta en array de esta forma?

Si cuando dices que llamas mediante jquery al script te refieres a que es una llamada ajax, te recomiendo usar firefox con firebug, éste te muestra lo que responde el servidor aún cuando no se vea en pantalla, así podrías verlo. Aunque hayas solucionado el problema te recomiendo mucho el firebug.
  #9 (permalink)  
Antiguo 12/09/2012, 07:10
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: como meter resultados de consulta en array de esta forma?

Gracias por tus consejos, voy a probar el firebug por que ahora que ya obtengo los valores necesito de alguna forma tomar el RPE para hacer otra consulta y ahorita con el codigo de arriba consigo solo el nombre quisiera poder tener el RPE.

entonces empezare a hacer pruebas

Etiquetas: meter, mysql, resultados, sql
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 11:41.