Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos, boa noite.
Eu tentei seguir o exemplo do manual do php, sobre mysqli::multiple_query , mas não consegui. Por isso venho aqui pedir ajuda.
Criei uma página simples, para que o usuário cadastrasse uma senha para ter acesso a internet.
O primeiro modelo dela,funciona OK, tudo é gravado perfeitamente.
Hoje percebi a necessidade de, caso seja o primeiro acesso do usuário, ele terá de digitar o nome de usuário que deseja ter, juntamente com a senha.
Até aí tudo bem...mas como farei para gravar a senha dele também ?
Exemplo, é meu primeiro acesso, cadastro o usuário pablo , senha 12345678.
Tenho a tabela "users", na qual armazeno os usuários. Essa tabela tem duas colunas:
id(pk , ai) e login
Inserir o usuário pablo nela, não é a dificuldade...afinal é um insert simples. O ID será gerado automaticamente, e o nome será gravado no login.
Porém, tenho também a tabela "senhas", onde armazeno as senhas.
Essa tabela tem duas colunas:
id_usr (chave estrangeira, referencia a coluna ID da tabela "users").
senha(armazena a senha).
O que não entendo é: Como farei agora, para armazenar a senha dele também ? O método que tentei via mysqli::multiple_query não deu certo. E também, preciso ter uma "alternativa", para caso não seja o primeiro acesso dele, prosseguir com o cadastro normal.
Estou enviando meu código comentado aqui HTML e PHP. Quem puder ajudar eu agradeço.
Atenciosamente,
Pablo Costa.
Código PHP:
<?php
$senha = $_POST['senhanova'];
$id_usr = $_POST['nomeusuario'];
$nomeusuario = $_POST['nomeusuario_2'];
// connect to the "tests" database
$conn = new mysqli('localhost', 'intrapharma', 'mceugg5', 'intrapharma');
// check connection
if (mysqli_connect_errno()) {
exit('Erro na conexão com o banco de dados: '. mysqli_connect_error());
} $sql = "INSERT INTO users(login) VALUES($nomeusuario)";
$last = $conn->insert_id; // Tentando pegar o último ID inserido. Também tentei fazer um insert com SELECT MAX no lugar de $last, não consegui.
$sql .= "INSERT INTO senhas(id_usr,senha) VALUES($last,'$senha')";
if($conn->multi_query($sql)) //Deveria rodar as queries ?
{
echo "Cadastro realizado com sucesso2";
}
else {
// sql query for INSERT INTO users (seguindo o padrão)
$sql="INSERT INTO senhas(id_usr,senha) VALUES($id_usr,'$senha')";
// Performs the $sql query and get the auto ID
if ($conn->query($sql) == TRUE) {
echo "Cadastro realizado com sucesso";
} else {
echo "Erro ao gravar no banco de dados";
echo "$conn->error";
echo $nomeusuario;
}
}
}
$conn->close();
?>
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css"></style>
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<link rel="stylesheet" type="text/css" href="css/formalize.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript">
$(document).ready( function() {
$('#digitausuario').hide();
$('#1st_sim').click(function() {
$('#usuario_select').hide('fast');
$('#digitausuario').show('slow');
return false;
});
$('#1st_nao').click(function() {
$('#usuario_select').show('fast');
$('#digitausuario').hide('fast');
return false;
});
$("#form1").validate({
// Define as regras
rules:{
nomeusuario: {
required: function(){
if($('#1st_sim').is(':checked'))
{
required: false
}
else
{
required: true;
}
}
}, required: function(){
if($('#1st_sim').is(':checked')) {
required: true;
minlength: 5;
}
else
{
required: false;
}
}
},
senhanova:{
required: true, minlength: 6
},
senhanova_2:{
required: true, equalTo: "#senhanova", minlength: 6
}
},});
});
</script>
<meta http-equiv="Content-Type" content="text/html" charset="iso-8859-1" />
<title>Untitled Document</title>
</head>
<body><form id="form1" name="form1" method="post" action="cadastra.php">
Primeiro acesso ? <input type="radio" value="yes" name="primeiro_acesso" id="1st_sim" />Sim<input type="radio" value="no" name="primeiro_acesso" id="1st_nao" />Não
<p>
<div class="secret" id="digitausuario">
<p>Digite o nome de usuário a ser utilizado</p>
<p><input type="text" name="nomeusuario_2" /></p>
<p><font color=red>
<label for="nomeusuario" class="error" style="display: none;">Digite o nome do usuário</label></font></p>
</div>
<div id="usuario_select">
Selecione o seu usuário:
<p>
<?phpmysql_connect('localhost','intrapharma','mceugg5');
mysql_select_db('intrapharma');
//clausula sql
$sql = "SELECT * FROM users";
//executa a clausula sql
$result = mysql_query($sql)or die(mysql_error());
//imprimir um campo select
echo "<select name=\"nomeusuario\" id=\"nomeusuario\">";
//faz o loop para preencher o campo criado com os valores retornados na consulta
while($dados = mysql_fetch_array($result))
{
echo "<option value='".$dados['id']."'>".$dados['login']."</option>";
}
//fecha o campo select
echo "</select>";
?>
<font color=red>
<label for="nomeusuario" class="error" style="display: none;">Selecione o nome do usuário</label></font>
</div>
<p>Nova Senha:<br />
<input name="senhanova" type="password" id="senhanova" size="20" maxlength="35" />
</p>
<p>Confirmar Nova senha:</p>
<p>
<input name="senhanova_2" type="password" id="senhanova_2" size="20" maxlength="35" />
</p>
<p><input type="submit" value="Cadastra senha" action="cadastra.php" /> </p>
</form>
</body>
</html>Carregando comentários...