Foros del Web » Programando para Internet » Javascript »

Consulta MySql con js

Estas en el tema de Consulta MySql con js en el foro de Javascript en Foros del Web. Hola buenos dias... Me gustaria hacer una validacion para verificar si un usuario no existe... Voy a postear el codigo y a continuacion explicar lo ...
  #1 (permalink)  
Antiguo 13/06/2012, 09:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Consulta MySql con js

Hola buenos dias... Me gustaria hacer una validacion para verificar si un usuario no existe... Voy a postear el codigo y a continuacion explicar lo que quiero:

Código Javascript:
Ver original
  1. function comprobarClave(form1){
  2.         var password1 = document.forms['form1'].elements['password'];
  3.         var password2 = document.forms['form1'].elements['password2'];
  4.  
  5.         if (password1.value == password2.value && password1.value!='' && password2.value!=''){
  6.             alert("La clave ha sido cambiada con exito");
  7.             return true;
  8.             document.location.href="index.php";
  9.         }
  10.         else{
  11.             alert("La contrase\u00F1a no coincide. Por favor, verifique e intente nuevamente");
  12.             return false;          
  13.         }
  14. }

Lo anterior se encuentra dentro de la etiqueta script de html y funciona bien... Y tengo esto en la etiqueta form:

Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="" onSubmit="return comprobarClave(this)">

Pero quiero hacer algo como esto (que esta en php actualmente) pero con javascript:

Código PHP:
Ver original
  1. $usuarios="SELECT nombre_usuario from users where nombre_usuario='{$_POST['usuarioE']}'";
  2.     $select=mysql_query($usuarios,$con);
  3.     $total_usuarios=mysql_num_rows($select);
  4.     if($total_usuarios<=0)
  5.     {
  6.         echo '<script type="text/javascript">alert("El usuario no existe");</script>';
  7.     }

Es decir, que con javascript se verifique si existe el usuario en la base de datos... Porque si lo dejo asi mostraria primero el alert de la funcion comprobarClave y luego iria al de php, lo que no tiene sentido... Espero haberme explicado... Muchas gracias
  #2 (permalink)  
Antiguo 13/06/2012, 12:16
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Consulta MySql con js

Ninguna sugerencia?
  #3 (permalink)  
Antiguo 13/06/2012, 12:31
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Consulta MySql con js

Cita:
Iniciado por dragonfire256 Ver Mensaje
Ninguna sugerencia?
La sugerencia es que del lado de PHP guardes en variables de sesión el nombre del usuario y compruebes mediante AJAX su existencia en base a si retorna 0 ó 1.

Código PHP:
Ver original
  1. $nombreusuario = $_SESSION['nombreusuario'];
  2.  
  3. $r = mysql_query("SELECT nombre_usuario FROM users WHERE nombre_usuario='".$nombreusuario."'") or die("0");
  4.  
  5. if($r){
  6. if(mysql_num_rows($r) == 1){
  7. echo "1";
  8. } else if(mysql_num_rows($r) > 1 OR mysql_num_rows($r) == 0){
  9. echo "0";
  10. }
  11. } else {
  12. exit("0");
  13. }

Ahora bien, si el registro existe, retornará 1; una vez recibidos los datos de la petición AJAX y suponiendo que estén en la variable data

Código Javascript:
Ver original
  1. if(data == 0){
  2.  alert("el usuario no existe");
  3. } else if(data ==1){
  4. alert("el usuario existe");
  5. }

Última edición por dontexplain; 13/06/2012 a las 12:38
  #4 (permalink)  
Antiguo 13/06/2012, 12:40
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Consulta MySql con js

Cita:
Iniciado por dontexplain Ver Mensaje
La sugerencia es que del lado de PHP guardes en variables de sesión el nombre del usuario y compruebes mediante AJAX su existencia en base a si retorna 0 ó 1.

Código PHP:
Ver original
  1. $nombreusuario = $_SESSION['nombreusuario'];
  2.  
  3. $r = mysql_query("SELECT nombre_usuario FROM users WHERE nombre_usuario='".$nombreusuario."'") or die("0");
  4.  
  5. if($r){
  6. if(mysql_num_rows($r) == 1){
  7. echo "1";
  8. } else if(mysql_num_rows($r) > 1 OR mysql_num_rows($r) == 0){
  9. echo "0";
  10. }
  11. } else {
  12. exit("0");
  13. }

Ahora bien, si el registro existe, retornará 1; una vez recibidos los datos de la petición AJAX y suponiendo que estén en la variable data

Código Javascript:
Ver original
  1. if(data == 0){
  2.  alert("el usuario no existe");
  3. } else if(data ==1){
  4. alert("el usuario existe");
  5. }
Tengo un par de dudas... Por que preguntas si es mayor a 1 o igual a 0, y luego haces otro else???... No podria resultar preguntando mayor o igual al principio??? ... Como utilizaria Ajax??? Lo que pasa es que no conozco absolutamente nada de Ajax... Gracias por tu tiempo
  #5 (permalink)  
Antiguo 13/06/2012, 12:55
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Consulta MySql con js

Cita:
Iniciado por dragonfire256 Ver Mensaje
Tengo un par de dudas... Por que preguntas si es mayor a 1 o igual a 0, y luego haces otro else???... No podria resultar preguntando mayor o igual al principio??? ... Como utilizaria Ajax??? Lo que pasa es que no conozco absolutamente nada de Ajax... Gracias por tu tiempo
Si haces una consulta con mysql_query, esta retorna TRUE en caso de éxito o FALSE en caso de error. Es lo primero que se ha de comprobar.

Si mysql_num_rows es mayor a 1 ó 0 es erróneo, primero porque habría más de un resultado asociado o, en su defecto, ninguno. O sea, distinto es que la consulta de error a que el número de filas recuperadas sea 0.

Para que lo entiendas más limpiamente:

1) Mysql_query retorna TRUE o FALSE si es erróneo o satisfactorio
2) Si mysql_queyr retorna TRUE, el "resource" puede tener 0 resultados, 1 o más 1.
3) Si el resource tiene 1 resultado todo bien, si tiene más de 1 ó 0, algo falla.

Para manejar AJAX es más sencillo que uses JQuery. En jQuery se hace así:

Código Javascript:
Ver original
  1. $.ajax({
  2.       url:'script.php',
  3.       type: 'GET',
  4.       success: function(data, textStatus, xhr) {
  5.  
  6. /* en este punto data contiene la respuesta dada por el servidor (0 ó 1) */
  7.  
  8. comprobacionresultado(data);
  9.  
  10. }
  11.  
  12.     });

Como data contiene la respuesta, ya es cosa de usar javascript (un if). Y asunto arreglado. Le pasas data como argumento si quisieras comprobarlo en otra función.

Código Javascript:
Ver original
  1. function comprobacionresultado(d){
  2.  
  3. if(d == 0){
  4.  alert("el usuario no existe");
  5. } else if(d ==1){
  6. alert("el usuario existe");
  7. }
  8. }

Última edición por dontexplain; 13/06/2012 a las 13:01
  #6 (permalink)  
Antiguo 13/06/2012, 13:14
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Consulta MySql con js

Cita:
Iniciado por dontexplain Ver Mensaje
Si haces una consulta con mysql_query, esta retorna TRUE en caso de éxito o FALSE en caso de error. Es lo primero que se ha de comprobar.

Si mysql_num_rows es mayor a 1 ó 0 es erróneo, primero porque habría más de un resultado asociado o, en su defecto, ninguno. O sea, distinto es que la consulta de error a que el número de filas recuperadas sea 0.

Para que lo entiendas más limpiamente:

1) Mysql_query retorna TRUE o FALSE si es erróneo o satisfactorio
2) Si mysql_queyr retorna TRUE, el "resource" puede tener 0 resultados, 1 o más 1.
3) Si el resource tiene 1 resultado todo bien, si tiene más de 1 ó 0, algo falla.

Para manejar AJAX es más sencillo que uses JQuery. En jQuery se hace así:

Código Javascript:
Ver original
  1. $.ajax({
  2.       url:'script.php',
  3.       type: 'GET',
  4.       success: function(data, textStatus, xhr) {
  5.  
  6. /* en este punto data contiene la respuesta dada por el servidor (0 ó 1) */
  7.  
  8. comprobacionresultado(data);
  9.  
  10. }
  11.  
  12.     });

Como data contiene la respuesta, ya es cosa de usar javascript (un if). Y asunto arreglado. Le pasas data como argumento si quisieras comprobarlo en otra función.

Código Javascript:
Ver original
  1. function comprobacionresultado(d){
  2.  
  3. if(d == 0){
  4.  alert("el usuario no existe");
  5. } else if(d ==1){
  6. alert("el usuario existe");
  7. }
  8. }
Entendido la parte de php... Ahora vamos como con js... Supongo que el type get debe tener algo que ver $_GET... Si eso es asi, podria utilizarse el metodo post?
  #7 (permalink)  
Antiguo 13/06/2012, 13:23
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Consulta MySql con js

Cita:
Iniciado por dragonfire256 Ver Mensaje
Entendido la parte de php... Ahora vamos como con js... Supongo que el type get debe tener algo que ver $_GET... Si eso es asi, podria utilizarse el metodo post?
Se puede usar GET o POST (hay otros tipos aceptados pero no corresponde). Para este ejemplo, basta con GET. La idea que te propuse era almacenar el nombre de usuario en $_SESSION, pero si quieres enviarlo en la petición, pues...

Si usas GET, en jQuery puedes introducir los datos simplemente usando:

data : {"variable1":"dato1"},

o también, en url:

url:'script.php?variable1='+variableconeldato1,

Si usas POST cambias el type a POST y los datos los introduces en data de la misma manera, pero no podrías añadir los datos en la misma URL.

Resumiendo, suponiendo que el nombre de usuario está almacenado en la variable nombreusuario:

Código Javascript:
Ver original
  1. $.ajax({
  2.       url:'script.php',
  3.       type: 'GET',
  4.       data: {"usuario":nombreusuario}
  5.       success: function(data, textStatus, xhr) {
  6.  
  7. /* en este punto data contiene la respuesta dada por el servidor (0 ó 1) */
  8.  
  9. comprobacionresultado(data);
  10.  
  11. }
  12.  
  13.     });

El Script PHP recibirá la variable en $_GET['usuario'].

Etiquetas: funcion, html, js, mysql, php
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 06:04.