Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema usuario repetido

Estas en el tema de Problema usuario repetido en el foro de PHP en Foros del Web. Buenas tardes foreros , estoy tratando de hacer una validación en AJAX para que no se repitan usuarios pero no consigo hacerlo funcionar , la ...
  #1 (permalink)  
Antiguo 13/08/2014, 12:45
 
Fecha de Ingreso: agosto-2014
Mensajes: 13
Antigüedad: 10 años, 3 meses
Puntos: 0
Problema usuario repetido

Buenas tardes foreros , estoy tratando de hacer una validación en AJAX para que no se repitan usuarios pero no consigo hacerlo funcionar , la parte de ajax funciona y creo que hace la llamada a php pues no da error y carga la imagen, pero se queda en una especie de bucle que cada segundo vuelve ha aparecer la imagen de cargando pero no obtiene resultados del archivo comprobar.php

Gracias de antemano ;)

Código HTML:
<script type="text/javascript"> 
$(document).ready(function(){
                         
      var consulta;
             
     
      $("#usuarios").focus();
    
      $("#usuarios").keyup(function(e){
           
             consulta = $("#usuario").val();
                                      
             $("#resultado").delay(1000).queue(function(n) {      
                                        
                  $("#resultado").html('<img src="botones_img/ajax-loader.gif" />');
                                           
                        $.ajax({
                              type: "POST",
                              url: "comprobar.php",
                              data: "b="+consulta,
                              dataType: "html",
                              error: function(){
                                    alert("error petición ajax");
                              },
                              success: function(data){                                                      
                                    $("#resultado").html(data);
                                    n();
                              }
                  });
                                           
             });
                                
      });
                          
});</script> 
El html:

Código HTML:
<input type="text" id="usuarios" name="usuarios" value="" size="32" /><div id="resultado"></div> 
y comprobar.php

Código PHP:
<?php  if (is_file("Connections/conexion.php")) {
    require_once(
'Connections/conexion.php');
}
else {
    require_once(
'../Connections/conexion.php');
}
?>

<?php





      $user 
$_POST['b'];
       
      if(!empty(
$user)) {
            
comprobar($user);
      }
       
      function 
comprobar($b) {
            
$con mysql_connect($hostname_conexion$username_conexion$password_conexion);
            
mysql_select_db($database_conexion);
       
           
               
$sql mysql_query("SELECT * FROM busuarios WHERE usuarios = '".$b."'",$con);
             
            
$contar mysql_num_rows($sql);
             
            if(
$contar == 0){
                  echo 
"<p>Disponible.</p>";
            }else{
                  echo 
"<p>El nombre de usuario ya existe.</p>";
            }
      }     
?>
Saludos

Última edición por jotacheca; 13/08/2014 a las 13:07
  #2 (permalink)  
Antiguo 13/08/2014, 13:48
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Problema usuario repetido

Sin analizar más tu código te digo que tienes un fallo en la linea que coges el valor del campo "usuarios", así que es probable que no estés obteniendo el valor del input.

Esta es tu linea

Código Javascript:
Ver original
  1. consulta = $("#usuario").val();

Y así debería estar:

Código Javascript:
Ver original
  1. consulta = $("#usuarios").val();

Segundo creo que estás pasando mal el data en la función ajax. Tengo entendido y no soy un experto en ajax que el valor que se le pasa al data type POST tiene que ser un objeto no una variable como si fuese en una URL.

Prueba con esto y me cuentas:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.                          
  4.       var consulta;
  5.              
  6.      
  7.       $("#usuarios").focus();
  8.    
  9.       $("#usuarios").keyup(function(e){
  10.            
  11.              consulta = $("#usuarios").val();
  12.                                      
  13.              $("#resultado").delay(1000).queue(function(n) {      
  14.                                        
  15.                   $("#resultado").html('<img src="botones_img/ajax-loader.gif" />');
  16.                         var datos = {
  17.                             b:consulta
  18.                         }                
  19.                         $.ajax({
  20.                               type: "POST",
  21.                               url: "comprobar.php",
  22.                               data: datos ,
  23.                               dataType: "html",
  24.                               error: function(){
  25.                                     alert("error petición ajax");
  26.                               },
  27.                               success: function(data){                                                      
  28.                                     $("#resultado").html(data);
  29.                                     n();
  30.                               }
  31.                   });
  32.                                            
  33.              });
  34.                                
  35.       });
  36.                          
  37. });</script>
  #3 (permalink)  
Antiguo 13/08/2014, 14:20
 
Fecha de Ingreso: agosto-2014
Mensajes: 13
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problema usuario repetido

Gracias manuparquegiralda , he cambiado ya ambas cosas y nada , sigue sin funcionar :(
  #4 (permalink)  
Antiguo 13/08/2014, 15:06
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Problema usuario repetido

A ver prueba a hacerlo así. Así hago yo mis funciones y siempre me funcionan.

- No entiendo porque haces el delay ese en la función, yo lo quitaría para probar.

- Obviamente el fallo de la imagen es porque cada vez que levantas la tecla, se vuelve a poner la imagen.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.       $("#usuarios").focus(function(){
  4.           $("#resultado").html('<img src="botones_img/ajax-loader.gif" />');
  5.       });
  6.       $("#usuarios").keyup(function(e){
  7.           var consulta = $("#usuarios").val();
  8.           if(consulta){
  9.               var datos = {
  10.                   b:consulta
  11.               }                
  12.               $.ajax({
  13.                   type: "POST",
  14.                   url: "comprobar.php",
  15.                   data: datos ,
  16.                   error: function(){
  17.                       alert("error petición ajax");
  18.                   },
  19.                   success: function(data){                                                      
  20.                       $("#resultado").html(data);
  21.                       n();
  22.                   }
  23.               });
  24.           }
  25.       });                    
  26. });</script>


Código PHP:
Ver original
  1. <?php  
  2.  
  3. if (is_file("Connections/conexion.php")) {
  4.     require_once('Connections/conexion.php');
  5. }else {
  6.     require_once('../Connections/conexion.php');
  7. }
  8.  
  9. $user = $_POST['b'];
  10. if($user) {
  11.     comprobar($user);
  12. }else{
  13.     echo "No han llegado datos"
  14. }
  15.        
  16. function comprobar($b) {
  17.     $con = mysql_connect($hostname_conexion, $username_conexion, $password_conexion);
  18.     mysql_select_db($database_conexion);
  19.     $sql = mysql_query("SELECT * FROM busuarios WHERE usuarios = '".$b."'",$con);
  20.     $contar = mysql_num_rows($sql);
  21.     if($contar == 0){
  22.         echo "<p>Disponible.</p>";
  23.     }else{
  24.         echo "<p>El nombre de usuario ya existe.</p>";
  25.     }
  26. }      
  27. ?>


Prueba con esto, debería de funcionarte seguro, en el PHP hemos añadido un aviso por si no llegasen datos desde la función javascript, pero si se esta ejecutando la petición.

A partir de ahí ve jugando con las opciones, si quieres que tenga un retraso por alguna cosa en concreta puede hacerse de alguna otra manera.

Última edición por manuparquegiralda; 13/08/2014 a las 15:12
  #5 (permalink)  
Antiguo 13/08/2014, 16:37
 
Fecha de Ingreso: agosto-2014
Mensajes: 13
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problema usuario repetido

Muchisimas gracias manu¡¡

Gracias a ese echo vi claramente que si que llegaban datos , osea que no estaba conectando a la base en la funcion comprobar , he incluido los datos de la conexion directamente y no se porque ahora lo tengo ya funcionando perfectamente. :D

El retraso es nada más que visual, pues sí lo hace directamente para mi gusto el efecto es mucho más practico pero menos llamativo , bajo mi punto de vista :)
como puedes ver si.. soy frontend y no backend .. pero de todo hay que saber :D

Gracias nuevamente por tu tiempo

Etiquetas: html, mysql, repetido, select, sql, usuario, usuarios
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 09:22.