miranda121 Posted May 11, 2012 at 01:31 PM Report #454578 Posted May 11, 2012 at 01:31 PM Boa tarde Sr. Programadores, Estou com o seguinte problema, eu criei uma pagina de registo que guarda numa BD ate ai tudo bem. Eu queria era que antes de fazer insert na base de dados ele fosse confirmar se o "Utilizador" ja existe. Poderiam ajudar sff? $nome = $_POST['nome']; $utilizador = $_POST['utilizador']; $data = $_POST['data']; $email = $_POST['email']; $senha = md5($_POST['senha']); include 'config.php'; include 'connect.php'; if(empty($nome) OR empty($utilizador) OR empty($data) OR empty($email) OR empty($senha)){ ?> <div id="content_jogo"> <div class=""> <h1><b>Todos os campos</b> </h1> são obrigatórios, por favor preencher. <br/> </div> </div> <script> setTimeout( function() { history.go(-1);}, 3000); </script> <? exit; } mysql_query("INSERT INTO usuarios (id, nome, utilizador, data, email, senha) VALUES (NULL, '$nome', '$utilizador', '$data','$email','$senha')"); echo "<meta http-equiv='refresh' content='0; URL=index_game.php?page=entrar'>"; Obrigado, Cmpts Helder Miranda
AndreLC Posted May 11, 2012 at 01:52 PM Report #454586 Posted May 11, 2012 at 01:52 PM Boa tarde, Basta fazer um select antes para verificar se o nome já existe e verificares o retorno através do número de linhas. Um exemplo: //verifica se o registo já existe $sql_nome = mysql_query("SELECT nome FROM utilizador WHERE nome = '$nome' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador //conta quantos registos foram encontrados na query anterior $verifica_nome = mysql_num_rows($sql_nome); if ($verifica_nome > 0) { echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!"; } else { mysql_query("INSERT INTO utilizador (nome, login, senha) VALUES ('$nome', '$login', '$senha')"); echo "O utilizador foi registado com sucesso!"; } Cumprimentos, AndreLC echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";
miranda121 Posted May 11, 2012 at 02:19 PM Author Report #454600 Posted May 11, 2012 at 02:19 PM Muito Obrigado B) Ajudou Bastante
dash Posted May 11, 2012 at 04:12 PM Report #454663 Posted May 11, 2012 at 04:12 PM E também é boa política ter esse campo na base de dados como UNIQUE, just in case...
AndreLC Posted May 11, 2012 at 04:42 PM Report #454678 Posted May 11, 2012 at 04:42 PM Exactly. Bom reparo a acrescentar e que me esqueci de mencionar. echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";
inVision Posted June 4, 2012 at 11:06 AM Report #460232 Posted June 4, 2012 at 11:06 AM Ok, estou com o mesmo problema, mas devido as minhas dificuldades em programação não fui capaz de resolver o mesmo sendo que continua a aceitar dois ou mais registos iguais. Abaixo o meu código. <?php require_once "config.php"; //conexão a database if(!isset($_POST['join'])){ echo " <form method=\"post\" action=\"registar.php\"> <label>Nome de Utilizador</label><br/><input name=\"username\"/><br/> <label>Email</label><br/><input name=\"email\"/><br/> <label>Password</label><br/><input name=\"password\" type=\"password\"/><br/> <input type=\"submit\" name=\"join\" value=\"Registar\"/> </form> "; } else { $sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador $verifica_nome = mysql_num_rows($sql_user); //conta quantos registos foram encontrados na query anterior $user = mysql_real_escape_string($_POST['username']); $pass = sha1($_POST['password']); //$email = $_POST; if ($verifica_nome > 0) { echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!"; } else { mysql_query("INSERT INTO users (id, username, email, password) VALUES (NULL, '$user', '$email', '$pass')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error()); echo "Registo Completo - <a href=\"login.html\">Entrar na Conta</a>."; } } ?>
brunoais Posted June 4, 2012 at 11:45 AM Report #460242 Posted June 4, 2012 at 11:45 AM Experimentem meter essa restrição na DB, se o fizerem nunca terão duplicados mesmo que o código php esteja mal. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Rui Carlos Posted June 4, 2012 at 01:13 PM Report #460256 Posted June 4, 2012 at 01:13 PM $sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador ... $user = mysql_real_escape_string($_POST['username']); É de mim ou só estás a definir a variável user depois de a teres usado na query? Rui Carlos Gonçalves
inVision Posted June 4, 2012 at 01:32 PM Report #460264 Posted June 4, 2012 at 01:32 PM $sql_user = mysql_query("SELECT nome FROM users WHERE nome = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador ... $user = mysql_real_escape_string($_POST['username']); É de mim ou só estás a definir a variável user depois de a teres usado na query? Como disse as minhas capacidades de programação estão muito a quem das expectativas, qual seria a solução? Onde deveria por esse código aqui fornecido?
Rui Carlos Posted June 4, 2012 at 02:03 PM Report #460274 Posted June 4, 2012 at 02:03 PM Convém definir o valor das variáveis antes de as usares. Ou seja, convém trocar a ordem das duas linhas que indiquei. Rui Carlos Gonçalves
inVision Posted June 4, 2012 at 02:04 PM Report #460276 Posted June 4, 2012 at 02:04 PM (edited) Convém definir o valor das variáveis antes de as usares. Ou seja, convém trocar a ordem das duas linhas que indiquei. Vou testar e darei feedback. Obrigado pela dica. Ok, troquei as ordens continua a não funcionar 😞 Edited June 4, 2012 at 10:52 PM by brunoais 2x post junto
brunoais Posted June 4, 2012 at 10:52 PM Report #460420 Posted June 4, 2012 at 10:52 PM Como é que ficou quando alteraste a ordem? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
inVision Posted June 5, 2012 at 08:01 AM Report #460449 Posted June 5, 2012 at 08:01 AM (edited) <?php require_once "config.php"; //conexão a database if(!isset($_POST['join'])){ echo " <form method=\"post\" action=\"registar.php\"> <label>Nome de Utilizador</label><br/><input name=\"username\"/><br/> <label>Email</label><br/><input name=\"email\"/><br/> <label>Password</label><br/><input name=\"password\" type=\"password\"/><br/> <input type=\"submit\" name=\"join\" value=\"Registar\"/> </form> "; } else { $user = mysql_real_escape_string($_POST['username']); $pass = sha1($_POST['password']); //$email = $_POST['email']; $sql_user = mysql_query("SELECT name FROM users WHERE username = '$user' LIMIT 1"); //seleciona todos os nomes que existem com o nome digitado pelo utilizador $verifica_nome = mysql_num_rows($sql_user); //conta quantos registos foram encontrados na query anterior if ($verifica_nome > 0) { echo "O Utillizador já se encontra registado no sistema. Por favor, utilize outro nome!"; } else { mysql_query("INSERT INTO users (id, username, email, password) VALUES (NULL, '$user', '$email', '$pass')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error()); echo "Registo Completo - <a href=\"login.html\">Entrar na Conta</a>."; } } ?> É assim q se encontra de momento. _____________________________________________________________________________ Edit: Solved, o problema estava no select. Edited June 5, 2012 at 09:20 AM by brunoais não é quote, é code.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now