nbm 0 Denunciar post Postado Julho 11, 2012 Olá amigos,estou com um problema no meu código , eu tentei fazer um codigo que impedia a pessoa de criar 2 contas com msm usuario , mas nao deu certo e quando a pessoa faz o cadastro aparece duas contas iguais no BD . Segue abaixo o código <?php ob_start(); if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } $editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } // inserir cadastro inicio if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { //evitar cadastro duplicado $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '".$_POST['usuario']."'"); if(mysql_num_rows($insertSQL)>=1){ echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'> <script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; } else { $insertSQL = sprintf("INSERT INTO usuario (usuario, email, senha, assinatura) VALUES (%s, %s, %s, %s)", GetSQLValueString($_POST['usuario'], "text"), GetSQLValueString($_POST['email'], "text"), GetSQLValueString($_POST['senha'], "text"), GetSQLValueString(isset($_POST['assinatura']) ? "true" : "", "defined","'Y'","'N'")); mysql_select_db($database_f, $f); $Result1 = mysql_query($insertSQL, $f) or die(mysql_error()); $insertGoTo="logar.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); } } //inserir cadastro final if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO usuario (usuario, email, senha, assinatura) VALUES (%s, %s, %s, %s)", GetSQLValueString($_POST['usuario'], "text"), GetSQLValueString($_POST['email'], "text"), GetSQLValueString($_POST['senha'], "text"), GetSQLValueString(isset($_POST['assinatura']) ? "true" : "", "defined","'Y'","'N'")); mysql_select_db($database_f, $f); $Result1 = mysql_query($insertSQL, $f) or die(mysql_error()); } mysql_select_db($database_f, $f); $query_usuario = "SELECT * FROM usuario"; $usuario = mysql_query($query_usuario, $f) or die(mysql_error()); $row_usuario = mysql_fetch_assoc($usuario); $totalRows_usuario = mysql_num_rows($usuario); ?> Espero que possam me ajudar . Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 isso consta em algo simples, você deve antes de fazer o cadastro buscar no seu banco de dados se o dado existe seja de Email, CPF ou qualquer outra coisa se for TRUE já existe e não cadastra. e segunda coisa é colocar os campos do banco de dados uniq, mesmo que seu sistema falhe a sua sql não deixa repetir os dados. Compartilhar este post Link para o post Compartilhar em outros sites
fred silva 1 Denunciar post Postado Julho 11, 2012 Além do que o Vinícus falou você também pode criar um index no banco dados para o campo que você não quer que se repita. coloque-o como unique. T+ Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 isso consta em algo simples, você deve antes de fazer o cadastro buscar no seu banco de dados se o dado existe seja de Email, CPF ou qualquer outra coisa se for TRUE já existe e não cadastra. e segunda coisa é colocar os campos do banco de dados uniq, mesmo que seu sistema falhe a sua sql não deixa repetir os dados. fiz isso e deu certo a parte do BD mas agora aparece o seguinte erro : Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in cadastro_usu.php on line 46 Duplicate entry 'gabriel' for key 'usuario' como eu faço pra invez desse erro ele falar que o usuario ja existe ? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel_Moraes 11 Denunciar post Postado Julho 11, 2012 Excepction - try catch - Throw , Essas funções vai te ajudar Dá uma pesquisada. Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 poste seu novo code que agora já ficou mais fácil ajudar Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 poste seu novo code que agora já ficou mais fácil ajudar o code ta o mesmo do primeiro post eu so coloquei o unique dai apareceu o seguinte erro . Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/jose/public_html/cadastro_usu.php on line 46 Duplicate entry 'gabriel' for key 'usuario' Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '$_POST['usuario']'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; } tente isso. Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 nao foi :( Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 tente ser um pouco mais preciso nas informações, não foi por que? o mesmo erro? ou algo diferente? Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 tente ser um pouco mais preciso nas informações, não foi por que? o mesmo erro? ou algo diferente? o mesmo erro . Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 comente seu código e veja o que retorna de $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '".$_POST['usuario']."'"); Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 //evitar cadastro duplicado $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '".$_POST['usuario']."'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; } ficou assim mais continua dando o mesmo erro . Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/jose/public_html/cadastro_usu.php on line 46 Duplicate entry 'gabriel' for key 'usuario' eu tava vendo aqui o erro ta na linha 46 que é a seguinte: if(mysql_num_rows($insertSQL)>= 1){ Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 agora entendi, desculpe deixei passar algo. ele acusa o erro no num_rows mais o erro é justamente em cima $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '".$_POST['usuario']."'"); ele não executa essa consulta com sucesso pois como o campo esta unique ele retorna o erro. a dica do Daniel Moraes é muito bem vinda: trabalhe com try catch. http://php.net/manual/pt_BR/language.exceptions.php você vai conseguir manipular esse erro e mostrar o que precisa mais é necessário um pouco de estudo Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 11, 2012 ta bom entao , vou estudar . Valeu por tudo ai cara . Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2012 qualquer dúvida pode retornar, mandar mp.. fica a vontade. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel_Moraes 11 Denunciar post Postado Julho 11, 2012 Da um die nessa parte $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '$_POST['usuario']'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; } E Deixa assim $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '$_POST['usuario']'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; die(); } Compartilhar este post Link para o post Compartilhar em outros sites
nbm 0 Denunciar post Postado Julho 12, 2012 Da um die nessa parte $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '$_POST['usuario']'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; } E Deixa assim $insertSQL = mysql_query("SELECT * FROM usuario WHERE usuario = '$_POST['usuario']'"); if(mysql_num_rows($insertSQL)>= 1){ echo "<script type=\"text/javascript\"> alert(\"Este nome de usuário ja esta cadastrado!\"); </script>"; echo "<meta http-equiv='refresh' content='0;URL=cadastro_usu.php'>"; die(); } consegui cara , valeeeu mesmo . Compartilhar este post Link para o post Compartilhar em outros sites