Array con datos de mysql

suaveSHOW

Buenas, aquí estoy otra vez con mis preguntas :$

Bueno, el caso es que estoy haciendo un pequeño script para comprobar en el registro de usuarios si el nickname esta en uso o no, y va con jquery y php.

El listado de usuarios se carga un array, y funciona perfectamente con unos valores que les puse de ejemplo, pero el problema viene cuando quiero hacer la consulta sql para que cargue automáticamente el listado de usuarios en el array.
Os enseño el código.

$existing_users=array(listausuarios());

//Funcion para extraer usuarios
function listausuarios() {
		$select=mysql_query("SELECT * FROM user");
			while($show=mysql_fetch_array($select)) {
				echo "'".$show[nickname]."',";
			}
		echo "'admin'";
}

El problema es que el array lo muestra mal, haciendo unas pruebas con "echo" mostraba

esto:

Creo que me he explicado bien.
Saludos.

TBT

Para ese tipo de comprobaciones lo que suelo hacer es una select con el usuario a registrar, si te encuentra algo, ese usuario ya está tomado. Así te ahorras traerte todo eso a memoria, si tienes 100k usuarios como MV suerte

Fr4nk0

$existing_users=array(listausuarios());

Eso que intentas hacer funciona? porque yo creo que no se puede crear un array haciendo eso de echo.

Repito que creo q no se puede, pero ya por curiosidad, quiero saberlo xD

MaKi

Respecto al analisis, lo que quieres hacer, seguramente se pueda hacer solo a base de mysql.
En cuanto a la implementación puedes optimizarlo de una forma. Haz el recorrido secuencial en el orden de algún indice que tengas, de esa forma mysql te devolverá antes el resultado.
No gestionas ningún error, debes comprobar que el query ha tenido exito, o si no algún día, la linea del while te petará y no te acordarás del motivo.

Un saludo

l31m

a ver no entiendo, estoy un poco espeso hoy si pero mysql_fetch_array() ya es un array en sí que contiene los valores que buscas, porque hacer otro array? :S

Dod-Evers

Por qué no hace caso a #2 que le ha dado la solución correcta...?

NeB1

hazlo como dice #2 pon:

$query=mysql_query("SELECT * FROM `usuarios` WHERE `username`='".$nicknuevousuario."'");
if(mysql_num_rows($query)>0){
  echo "ese usuario ya existe";
}
else{
  echo "ese usuario no existe";
}

NO OBSTANTE, no veo el error en el ejemplo que pones, primero te hace un echo con todos los usuarios, lo haces bien y no tiene error, cuando no quedan resultados en el array, el "while(mysql_fetch_array...." se detiene y ejecuta el echo "admin" que tienes a continuación, hasta ahí todo bien, el resto que te imprime tiene que estar en otro trozo de código que no nos has pegado.

suaveSHOW

#2 Es que, me gustaba la pijería de que te ponga al instante a la derecha si esta disponible o no.
De todos modos se que no es la mejor opcion.
EDIT:

#7, el codigo que te he mostrado es todo el php, la funcion mas el array, y luego esta el archivo jquery.

Me he fijado que si ejecuto directamente el script.php con lo que os he mostrado me sale solo el resultado de la query repetido 3 veces. aunque yo solo llamo a la funcion dentro de la variable $existing_users, tendrá que ver con el echo al que te refieres #3.

NeB1

#8 no me había fijado que inicializabas un array con esa función, creia que solo era pa imprimir...

simplemente haz

$arrayusuarios=rellenaArray();

y en la funcion de rellenar el array haces

function rellenaArray(){
  $array=array();
  $query=mysql_query("SELECT * FROM `usuarios`");

  while($res=mysql_fetch_array($query)){
    $array[]=$res['nickname'];
  }
  return $array;
}

te vale esto?

suaveSHOW

Neb1, te quiero! esto ya funciona =).

De todos modos, para mas adelante para evitar de que se "pete" el while como me dijeron atras hare simplemente que se compruebe si el usuario esta en la bd.

NeB1

#10 :):) creo que es la primera vez que me hacen caso xD

suaveSHOW

pues ya tienes fan :D
<--

Usuarios habituales

  • suaveSHOW
  • NeB1
  • Dod-Evers
  • l31m
  • MaKi
  • Fr4nk0
  • TBT