Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Comprobar existencia de usuarios en DB

7 de mayo de 2014

Hola, llevo tiempo dándole vueltas al asunto y no soy capaz de descubrir qué es lo que hago mal. Mi intención es poner una casilla que al salir del cuadro te texto compruebe en una base de datos si el usuario existe o no. Aquí estan los ejemplos del código.

Mi problema es que siempre que lo ejecuto aparece el mensaje "Usuario disponible" ya esté disponible o no...

Este es el formulario

<html>
  <header></header>
  <body>
    <script src="skps/prototype.js" type="text/javascript"></script>
    <script type="text/javascript">
        function validarusuario(usuario) {
            var url='validarusuario.php';
            var parametros='usuario='+usuario.value;
            var ajax = new Ajax.Updater('comprobarusuario',url,{method: 'post', parameters: parametros});
        }
    </script>
  <form action="registre.php" method="post"> USUcomp: <input type="text" name="usuario" onblur="validarusuario(this);"> <span id="comprobarusuario"></span><br> Usuario: <input type="text" name="user" ><br> Clave: <input type="password" name="pass"><br> Correo: <input type="text" name="mail"><br> <input type="submit" value="Registrarse"> </form> </body> </html>

Esto es el archivo validarusuario.php

<?php
 
require_once('funcions.php');
conectar('localhost', 'reg_usu', '????????', 'ajax_reunions');
 
//Rebre info
$usuario = strip_tags($_POST['usuario']);
 
$query = @mysql_query('SELECT user FROM ajxp_users WHERE user="'.mysql_real_escape_string($usuario).'"');
if($existe = @mysql_fetch_object($query))
{
    echo 'El usuario ya existe.';
} else {
    echo "Usuario disponible.";
}
 
?>

Y este es el archivo functions.php

<?php
function conectar($servidor, $user, $pass, $name)
{
    $con = @mysql_connect($servidor, $user, $pass);
    @mysql_select_db($name, $con);
}
?>

¿Alguna sugerencia?? :S muchas gracias de antemano, saludos.


Respuestas

#1

Hace mucho que no miro php a secas sin usar Aymfony2 pero ¿y si usas el número de filas que te devuelve? Es decir

if (mysql_num_rows($query) > 0) {

Según la documentación de PHP, la función mysql_fetch_object() está obsoleta en versiones actuales.

De todas formas, deberías debuguear la aplicación: ¿qué información tiene la variable $usuario en tus llamadas? Es que ya te digo que sin tocar PHP a pelo, no puedo ayudarte mucho jeje

@aprendizenlared

7 mayo 2014, 18:09
#2

Gracias por la respuesta, he probado de cambiar la línea que me has indicado y hace exactamente lo mismo. Incluso he modificado el archivo validarusuario.php completamente de manera que quede así (con números de filas):

<?php
$usuario=$_REQUEST['usuario'];
 
$db=new mysqli("localhost", "reg_usu", "????????", "ajax_reunions");
$query="SELECT user FROM ajxp_users WHERE user='$usuario'";
$db->query($query);
 
if ($db->affected_rows==0) {
    echo 'El usuario ya existe.';
} else {
    echo "Usuario disponible";
}
 
?>

Pero me pasa lo mismo, sale lo de usuario disponible ponga el valor que ponga y se queda tan ancho.

Supuestamente la información de la variable $usuario contiene el valor introducido en el formulario. Este valor es el que quiero que compruebe si existe en la base de datos.

Mi intención es introducir un nombre de usuario en el formulario y que al quitar el cursor (es decir, en el evento onblur) salga al lado un mensaje que diga si este usuario existe/coincide en la columna user de la base de datos o no. Simplemente eso. Pienso que es muy sencillo pero como no se mucho pues me trabo y no soy capaz de encontrar el error ya que haciéndolo de esta segunda manera que te he indicado ahora, me pasa exactamente lo mismo TT.

@Fruithg

7 mayo 2014, 23:29