TheNight 1 Denunciar post Postado Março 10, 2015 Galera tenho problemas em verificar se já existe cadastrado no sistema(database) o email ou usuário, como posso fazer isso usando este código: <?php session_start(); include("configs/config.php"); ?> <h3 class="h3users">CADASTRE-SE</h3> <hr class="hr"/> <h4 class="h4users">Formulário de cadastro</h4> <div class="box_painel"> <form method="post" action=""> <input type="text" name="nome_c" placeholder="Digite seu nome" class="input_style"> <input type="text" name="email_c" placeholder="E-Mail" class="input_style"> <input type="text" name="username_c" placeholder="Nome de usuário" class="input_style"> <input type="password" name="password_c" placeholder="Senha" class="input_style"> <label> <input type="checkbox" name="remember_me" id="remember_me" class="remember_me"> <a href="#">Aceito os termos</a> </label> <input type="submit" name="cadastrar" value="Cadastrar" class="btn"> </form> </div> <br> <?php //INSERT INTO table_name (column1,column2,column3,...) //VALUES (value1,value2,value3,...); if(isset($_POST['cadastrar'])){ $nomec = strip_tags(trim($_POST['nome_c'])); $emailc = strip_tags(trim($_POST['email_c'])); $usernamec = strip_tags(trim($_POST['username_c'])); $passwordc = strip_tags(trim($_POST['password_c'])); $sql_query = 'INSERT INTO dks_login (nome, email, username, password)'; $sql_query .= 'VALUES (:nome,:email,:username,:password)'; try{ if(empty($nomec)|| empty($emailc)|| empty($usernamec)|| empty($passwordc)){ echo '<br><div class="restore" style="width:288px;">Por favor complete todos os campos.</div>';exit; } $sql_query = $conn->prepare($sql_query); $sql_query->bindValue(':nome',$nomec,PDO::PARAM_STR); $sql_query->bindValue(':email',$emailc,PDO::PARAM_STR); $sql_query->bindValue(':username',$usernamec,PDO::PARAM_STR); $sql_query->bindValue(':password',$passwordc,PDO::PARAM_STR); $sql_query->execute(); echo '<br><div class="info" style="width:288px;">Cadastrado com sucesso!</div>'; }catch(PDOException $e){ echo 'Cadastro erro! '.$e->getMessage(); } ?> Desculpe a má organização do código não manjo mto com fórum e organizei usando a tecla space e não tab :/ Help to my web work! :) Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Magno 6 Denunciar post Postado Março 10, 2015 Bom dia. faça uma verificação no banco de dados antes ou coloque essa logica em uma procedure. exemplos: --"select top 1 idusuario from dks_login where username = '$usernamec' or email = '$emailc';" --Execute essa query e se retornar algo é pq o usuário existe. --ou você pode colocar essa lógica em uma procedure, ai quando um usuário existir altera as informações ou algo do tipo. --SQL_SERVER CREATE PROCEDURE sp_cadastrar( @nome varchar(200), @email varchar(100), @username varchar(100), @senha varchar(50) ) AS BEGIN IF(EXISTS(select id from dks_login where username = @username or email = @email)) BEGIN UPDATE dks_login SET nome = @nome, WHERE email = @email or username = @username END; ELSE BEGIN INSERT INTO dks_login (nome, email, username, password) VALUES (@nome, @email, @username, @password); END; END; acho que ficaria mais ou menos assim. espero ter ajudado Compartilhar este post Link para o post Compartilhar em outros sites
TheNight 1 Denunciar post Postado Março 10, 2015 Luiz Magno, eu tentei isso que você falou porém nada mudou... a verificação ficou + ou - assim: <?php //INSERT INTO table_name (column1,column2,column3,...) //VALUES (value1,value2,value3,...); if(isset($_POST['cadastrar'])){ $select ="select top 1 idusuario from dks_login where username = '$usernamec' or email = '$emailc';"; //$select = $conn->prepare($select); $result->execute(); $count = $result->rowCount(); if($count>0){ echo 'erro: existem na db o usuário ou email já registrados.'; }else{ $nomec = strip_tags(trim($_POST['nome_c'])); $emailc = strip_tags(trim($_POST['email_c'])); $usernamec = strip_tags(trim($_POST['username_c'])); $passwordc = strip_tags(trim($_POST['password_c'])); $sql_query = 'INSERT INTO dks_login (nome, email, username, password)'; $sql_query .= 'VALUES (:nome,:email,:username,:password)'; try{ if(empty($nomec)|| empty($emailc)|| empty($usernamec)|| empty($passwordc)){ echo '<br><div class="restore" style="width:288px;">Por favor complete todos os campos.</div>';exit; } $sql_query = $conn->prepare($sql_query); $sql_query->bindValue(':nome',$nomec,PDO::PARAM_STR); $sql_query->bindValue(':email',$emailc,PDO::PARAM_STR); $sql_query->bindValue(':username',$usernamec,PDO::PARAM_STR); $sql_query->bindValue(':password',$passwordc,PDO::PARAM_STR); $sql_query->execute(); echo '<br><div class="info" style="width:288px;">Cadastrado com sucesso!</div>'; }catch(PDOException $e){ echo 'Cadastro erro! '.$e->getMessage(); } } } ?> Porem não está verificando nada :( Alguma luz ? já fazem 3 dias e meu código não funciona! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago - Bulfaitelo 6 Denunciar post Postado Março 10, 2015 aparentemente a query está correta, Ffaz o seguinte teste, Simule com essa query os valores manuais e execute diretamente no banco de dados, verifique se ira retornar algum valor caso sim cole exatamente a query de teste novamente no código e veja o resultado se não obter um resultado quer dizer que algo está errado na sua lógica (mesmo aparentemente estando certa) A única coisa que reparei logo de cara que a prepare() está comentada, mas imagino que não seja isso. :assobiando: Compartilhar este post Link para o post Compartilhar em outros sites
TheNight 1 Denunciar post Postado Março 11, 2015 é eu tinha comentado pra ver o que estava acontecendo, mas continuava com o mesmo erro, mas consegui resolver refiz meu código de outra forma, podem fechar o tópico e obrigado á quem me ajudou!!! Compartilhar este post Link para o post Compartilhar em outros sites