Foros del Web » Programando para Internet » PHP »

Mala condicion?

Estas en el tema de Mala condicion? en el foro de PHP en Foros del Web. Estoy intentando hacer que compruebe si el usuario existe en la base de datos, pero nunca lo comprueba, siempre lo agrega, sé que el fallo ...
  #1 (permalink)  
Antiguo 19/02/2010, 15:44
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Mala condicion?

Estoy intentando hacer que compruebe si el usuario existe en la base de datos, pero nunca lo comprueba, siempre lo agrega, sé que el fallo tiene que estar en el if pero no me doy cuenta.

Código PHP:
<?php

// Boton

if (isset($_POST["boton"])) {  

        
$nombre $_POST['nombre'];
        
$apellidos $_POST['apellidos'];
        
$email $_POST['email'];
        
$departamento $_POST['departamento'];
        
$login $_POST['login'];
        
$pass $_POST['pass'];
        
$acceso $_POST['acceso'];
        
$titulo $_POST['titulo'];


$sql="SELECT login FROM usuarios";

    
$result=mysql_query($sql);

$fila=mysql_fetch_assoc($result);

        if (
$login==$fila["login"]){

            echo 
"El usuario ya existe";

            echo 
"<a href='./index.php'>Regresar</a>";

            }

        else{    
        
$sSQL="INSERT INTO usuarios (login,nombre,apellidos,password,email,rango,titulo,departamento) VALUES ('$login','$nombre','$apellidos','$pass','$email','$acceso','$titulo','$departamento')";

$result=mysql_query($sSQL) or die("<b>Error. El servidor dijo: </b> " mysql_error());  
    }
}
?>
  #2 (permalink)  
Antiguo 19/02/2010, 15:51
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Mala condicion?

creo que sería más rápido si pusieras

Código PHP:

$sql
="SELECT login FROM usuarios where login=".$login
$rs=mysql_query($sql,$c);
$existe=mysql_num_rows($rs);

if(
$existe>0){
 echo 
"El usuario ya existe";
}
else{
//lo que quieras;

__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 19/02/2010, 16:47
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Mala condicion?

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\AppServ\www\proyectougr2\includes\Submenus\agre garu.php on line 209

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\proyectougr2\includes\Submenus\agre garu.php on line 210
  #4 (permalink)  
Antiguo 19/02/2010, 21:09
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Mala condicion?

Estas copiando tal cual el codigo que te dio cesarpunk, minimo adaptalo a tus necesidades/variables, no quieras todo hecho...

el primer error dice que la conexion indicada es erronea, porque la variable $C no tiene nada, la segunda es causada por la primera

Código PHP:
Ver original
  1. $c = mysql_connect($servidor,$usuario,$password);
  2. mysql_select_db($base_de_datos);
  3.  
  4. $sql='SELECT login FROM usuarios where login="'.$login'"';
  5. $rs=mysql_query($sql,$c);
  6. $existe=mysql_num_rows($rs);
  7.  
  8. if($existe>0){
  9.  echo "El usuario ya existe";
  10. }
  11. else{
  12. //lo que quieras;
  13. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 20/02/2010, 00:04
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Mala condicion?

cesarpunk y nemutagk te dieron la solucion.
Nada mas para aclararte un poco, la causa de que siempre se agregue el usuario, es porque en el query
Cita:
$sql="SELECT login FROM usuarios";
estas trayendo TODA la columna login de la tabla usuarios, y luego estas usando solo EL PRIMER renglon, que es el que comparas con tu variable $login. Por lo tanto, a menos que $login coincida con el valor del primer renglon de la base de datos, la condicion nunca se cumplira, y siempre ira a agregar al usuario.
Para traer solamente el renglon en el que coincide el usuario con el valor de $login, se usa la clausula WHERE, que implica una condicion que debe de cumplirse para que nos regrese solamente lo que necesitamos.

Espero que te quede mas claro!

Suerte!
  #6 (permalink)  
Antiguo 20/02/2010, 03:37
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Mala condicion?

esto sigue sin andar borre la variable c ya que la conexión a hago más atras pero nada ni sand el where ni nada detecta el user....

Ahroa tira esto:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in


Cambio esto:

$sql='SELECT login FROM usuarios where login="'.$login'"';

por esto:

$sql="SELECT login FROM usuarios where login=$login'';

Y nada de nada.
  #7 (permalink)  
Antiguo 20/02/2010, 09:41
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Mala condicion?

Porque quitaste las dobles comillas, si lo estas comparando contra un string, si las quitas nunca te va a funcionar y el error es porque faltaba un '.' en la sentencia sql,

Código PHP:
Ver original
  1. $sql='SELECT login FROM usuarios where login="'.$login.'"';

Por lo que veo no tienes idea de PHP, mejor lee un buen tutorial =/
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 20/02/2010, 10:05
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Mala condicion?

Edito: no he dicho nada XD
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #9 (permalink)  
Antiguo 20/02/2010, 10:09
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Mala condicion?

Arreglado, lo hice asi:

Código PHP:
<?php

// Boton

if (isset($_POST["boton"])) {  

        
$nombre $_POST['nombre'];
        
$apellidos $_POST['apellidos'];
        
$email $_POST['email'];
        
$departamento $_POST['departamento'];
        
$login $_POST['login'];
        
$pass $_POST['pass'];
        
$acceso $_POST['acceso'];
        
$titulo $_POST['titulo'];

 

$sql="SELECT login FROM usuarios where login='$login'";

$result=mysql_query($sql);

$fila=mysql_fetch_assoc($result);

        if (
$login==$fila["login"]){

            echo 
"El usuario ya existe";
            }
            
            else{
        
$sSQL="INSERT INTO usuarios (login,nombre,apellidos,password,email,rango,titulo,departamento) VALUES ('$login','$nombre','$apellidos','$pass','$email','$acceso','$titulo','$departamento')";

$result=mysql_query($sSQL) or die("<b>Error. El servidor dijo: </b> " mysql_error());  
    }
}
?>
  #10 (permalink)  
Antiguo 20/02/2010, 11:37
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: Mala condicion?

loading............


Siempre lo he dicho, si no esta mal la programación est'a mal el comportamiento! DEPUREN DEPUREN y DEPURENNNNN.

podrias poner.

print_r($fila);

para empezar para ver como se est'a validando el usuario.


connection closed.
__________________

Maborak Technologies

Etiquetas: Ninguno
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 17:08.