Foros del Web » Programando para Internet » PHP »

Problema con query

Estas en el tema de Problema con query en el foro de PHP en Foros del Web. Hola a todos, no logro que el archivo que procesa los datos verifique el login en dos tablas del mysql. Las tablas son "accounts" y ...
  #1 (permalink)  
Antiguo 10/02/2011, 05:44
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con query

Hola a todos, no logro que el archivo que procesa los datos verifique el login en dos tablas del mysql. Las tablas son "accounts" y "accounts_confirm" de las cuales las dos tienen las los campos "login" y "email".
Lo que quiero lograr es que verifique si existe el login y el email en las dos tablas a al mismo tiempo pero en un mismo select si es posible.

Código PHP:
<?php
if ($_GET['act'] == 'register')
{
    
$user anti_injection($_POST['account']);
    
$pass1 anti_injection($_POST['pass1']);
    
$pass2 anti_injection($_POST['pass2']);
    
$email anti_injection($_POST['email']);
    
    if (
valida(Array($user,$pass1,$pass2,$email)) == true)
    {
        if (
$pass1 == $pass2)
        {
            if (
ereg("([0-9,a-z,A-Z])"$user))
            {
                if (
ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$"$email))
                {
                    
$query mysql_query("SELECT * FROM accounts WHERE login='$user'");
                    
$num_rows mysql_num_rows($query);
                    if (
$num_rows == 0)
                    {
                        
$query mysql_query("SELECT * FROM accounts WHERE email='$email'");
                        
$num_rows mysql_num_rows($query);
                        if (
$num_rows == 0)
                        {
                            
$query mysql_query("INSERT INTO accounts_confirm (login, password, email, codigo) VALUES ('$user','$pass1','$email','$codigo')");
                            if (!
$query)
                            {
                                echo 
"No se pudo registrar la cuenta";
                            }
                            else
                            {
                                echo 
"Bien, se ha enviado un mensaje a tu correo";
                            }
                        }
                        else
                        {
                            echo 
"El correo ya esta registrado";
                        }
                    }
                    else
                    {
                        echo 
"La cuenta ya esta registrada";
                    }
                }
                else
                {
                    echo 
"El tipo de correo no es valido";
                }
            }
            else
            {
                echo 
"Usa solo numeros(0-9) y letras(a-z)";
            }
        }
        else
        {
            echo 
"Las contraseñas no son iguales";
        }
    }
}

function 
anti_injection($sql)
{
$sql preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql trim($sql);
$sql strip_tags($sql);
$sql addslashes($sql);
return 
$sql;
}

function 
valida($campos){
  foreach(
$campos as $c){
      if(empty(
$c)){
        echo 
"Debes completar todos los campos";
        return 
false;
      }else{
        return 
true;
      }
  }
}
?>
  #2 (permalink)  
Antiguo 10/02/2011, 06:07
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: sadasdasd

Creo que deberias empezar cambiando el nombre de tu pregunta, sadasdasd no dice nada
  #3 (permalink)  
Antiguo 10/02/2011, 11:23
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: sadasdasd

Fue un error al estar visualizando para ver como quedaba el tema y no me di cuenta del titulo, pero es que no se como cambiarlo por que no me aparece el botón de editar. ¡Saludos!
  #4 (permalink)  
Antiguo 10/02/2011, 11:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: sadasdasd

Cita:
Iniciado por Erythnul Ver Mensaje
Lo que quiero lograr es que verifique si existe el login y el email en las dos tablas a al mismo tiempo pero en un mismo select si es posible.
además del pésimo titulo de tu tema, ¿te has puesto a pensar que una consulta de SQL no es precisamente problema de código PHP?

porque vamos, si tu única cuestión es como realizar todas las comparaciones con una misma consulta, ¿que tiene que ver con PHP?

creo que debiste preguntar en el foro mas adecuado...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/02/2011, 12:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: sadasdasd

Tu problema es en la consulta, si cambias la consulta simplificas tu código
Código PHP:
Ver original
  1. "SELECT * FROM accounts WHERE login='$user' and email = '$email'"

Te aconsejo que tomes un curso de SQL.
__________________
Saludos.
  #6 (permalink)  
Antiguo 11/02/2011, 01:52
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Hola JaimeSavines, muchas gracias por responder. Lo que pasa con ese código es que estas uniendo las dos consultas y en realidad necesito que seleccione las dos tablas y se fije si el usuario existe en alguna de las dos tablas.

Ejemplo: Este me funciona pero solo selecciona y verifica una sola tabla.
Código PHP:
Ver original
  1. "SELECT * FROM accounts WHERE login='$user'"

Ejemplo: Este no me funciona, me cancela la consulta y sigue de largo.
Código PHP:
Ver original
  1. "SELECT * FROM accounts, accounts_confirm WHERE login='$user'"

EDITO: Perdón por los problemas ocasionados, no se puede mover a su lugar correspondiente? ¡Saludos!

Última edición por Erythnul; 11/02/2011 a las 02:43
  #7 (permalink)  
Antiguo 11/02/2011, 06:25
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Problema con query

Erythnul probaste imprimiendo esta consulta:

Código PHP:
Ver original
  1. $consulta="SELECT * FROM accounts, accounts_confirm WHERE login='$user'";
  2.  
  3. echo $consulta;

creo que por ahi puedes partir para ver si en la consulta pregunta por el campo '$user',saludos
  #8 (permalink)  
Antiguo 11/02/2011, 08:23
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con query

Hola bUllan9ebrio, la verdad no sabría que hacer con eso por que ese mismo código no me funcionaba. ¡Saludos!
  #9 (permalink)  
Antiguo 11/02/2011, 09:31
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Problema con query

Si me late que esta onda va mas en un foro de sql


que creo lo que quieres hacer es un join

http://www.w3schools.com/sql/sql_join.asp

"SELECT * FROM accounts as a, accounts_confirm as ac WHERE and a.login=ac.login a.login='$user'"
  #10 (permalink)  
Antiguo 11/02/2011, 10:42
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con query

Hola mogurbon, no me funciono tu código. Necesito que seleccione las dos tablas y se fije si la cuenta que ingreso el usuario existe en alguna de las dos tablas.

La tabla "accounts" es donde están las cuentas creadas.
La tabla "accounts_confirm" es donde están las cuentas que no confirmadas.

¿Como se hace para que se fije si en en la fila "login" de las dos tablas existe el "$user"?

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM accounts WHERE login='$user'");
  2. $num_rows = mysql_num_rows($query);
  3. if ($num_rows == 0)
  4. {
  5. }
Este código lo que hace es fijarse solo en la tabla "accounts" y yo quiero que se fije si existe el usuario en las dos tablas. ¡Saludos!
  #11 (permalink)  
Antiguo 11/02/2011, 10:55
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Problema con query

Si el concepto es mas de sql , va por un full join

http://www.w3schools.com/sql/sql_join_full.asp

http://www.artfulsoftware.com/infotree/queries.php#690


ojo no se si actualmente se soporte con mysql
  #12 (permalink)  
Antiguo 11/02/2011, 11:45
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con query

La verdad que me lo veo difícil, no hay alguna manera mas sencilla para resolver este problema? ¡Saludos!
  #13 (permalink)  
Antiguo 11/02/2011, 19:23
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Problema con query

Pues se me ocurre que fuera checando en las dos tablas a ver si existe el login y si en ninguna esta , entonces ya proceder


Código PHP:
 $cuerito1 mysql_query("SELECT * FROM accounts WHERE login='$user'");
        
$num_rows1 mysql_num_rows($cuerito1);
        
         
$cuerito12mysql_query("SELECT * FROM accounts_confirm WHERE login='$user'");
         
$num_rows2 mysql_num_rows($cuerito2);
      if (
$num_rows1 == and $num_rows2==0)
   
      {
   
      } 
  #14 (permalink)  
Antiguo 12/02/2011, 19:19
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con query

Gracias mogurbon, por todo, me funciono de maravillas ese código. ¡Saludos!

Etiquetas: query
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 21:54.