Programación Web y Scripting > PHP

 Problema Con Consulta

(1/3) > >>

zaida20:
Hola tengo la siguiente consulta:


--- Código: Text ---       $id_usuario[$i]=$fila['id_usuario'];      echo $id_usuario[$i];          $consulta_usuarios="select nombre from usuario_blog where id=".$id_usuarios[$i];       $consulta_usu=mysql_query($consulta_usuarios,$conexion);      if(mysql_num_rows($consulta_usu)!=NULL)//sacamos los nombres de los usuarios      {        while($fila3=mysql_fetch_array($consulta_usu))        {          $nombre_usuario[$k]=$fila3['nombre'];          echo $nombre_usuario[$k];          $k++;        }      }      $i++; 
No me printa ningún echo, ¿Alquien encuentra el error?
Muchas gracias
Saludos  :hola:

LeGatoRojo:
Pues creo que debería ser así para poder asociar con respecto al nombre, de lo contrario debes usar la posicion


--- Código: Text --- $fila3=mysql_fetch_array($consulta_usu, MYSQL_ASSOC)  

Altareum:
Prueba lo siguiente:


--- Código: Text --- $id_usuario[$i]=$fila['id_usuario'];      echo $id_usuario[$i];          $consulta_usuarios="select nombre from usuario_blog where id=".$id_usuarios[$i];       $consulta_usu=mysql_query($consulta_usuarios,$conexion);              while($fila3=mysql_fetch_assoc($consulta_usu))        {          echo $fila3['nombre'];          $k++;        }            $i++;  
Te comento las líneas que te corregí:


--- Citar ---if(mysql_num_rows($consulta_usu)
--- Fin de la cita ---
No es necesario que chequees la cantidad de resultados si es que los obtienes con un while, ya que si no hay datos, no entrará en el bucle.



--- Citar ---$nombre_usuario[$k]=$fila3['nombre'];
echo $nombre_usuario[$k];

--- Fin de la cita ---
No se de dónde sacas $k, así que obvie esa parte, ya que para la fracción de código que pusiste, no es necesario asignar el valor a un array, para solo mostrarlo.

Si lo que quieres es llenar un array con todos los nombres de los usuarios, usa directamente:

--- Citar ---$nombre_usuario[]=$fila3['nombre'];
--- Fin de la cita ---



--- Citar ---mysql_fetch_array
--- Fin de la cita ---
El uso de esta función es bastante inútil, a no ser casos muy especiales. El problema en realidad está en que el nombre siempre presta a confusión. Esta función, genera un array con índices numéricos y también, con las columnas de mysql como índices, por lo cual obtienes una mezcla. Por ejemplo:
[0] = tito
[nombre] = tito
[1] = 28
[edad] = 28

Por lo cual obtienes los datos duplicados (puedes verlo con print_r() ), y en casos de gran uso de datos, puede causar problemas en el uso de la memoria.
mysql_fetch_assoc, por otro lado, devuelve un array cuyos keys (o claves), son los nombres de las columnas devueltas por mysql.



Saludos.
Altareum.

LeGatoRojo:
Pues creo que no es posible hacer esa asignacion, se necesita una posicion.


--- Citar ---Si lo que quieres es llenar un array con todos los nombres de los usuarios, usa directamente:

QUOTE
$nombre_usuario[]=$fila3['nombre'];


--- Fin de la cita ---

Altareum:
Sí se puede, siempre y cuando la variable sea un array.

Por ejemplo:


--- Código: Text --- $lista = array();for($d=0, $d<20; $d++){    $lista[]=$d;}  
Generará un array de 20 posiciones, con los números de 0 a 19.
Lo que hace php es autoincrementar el puntero interno del array, eso como hacer un "push". Obviamente no sirve si utilizas el array como una Tabla de Hash, o mejor dicho, si sirve, pero empieza colocando desde el índice 0.


Altareum.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa