Programación Web y Scripting > PHP
Problema Con Consulta
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
[#] Página Siguiente
Ir a la versión completa