Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou precisando de ajuda com meu código PHP junto com o SQL, pois preciso gerar um protocolo a partir do ultimo registro, preciso de uma sequencia exemplo: 2017001 <-- protocolo 1, 2017002 e assim por diante, seguir uma sequencia de acordo com o que gerado um novo registro.
da forma que fiz, não esta dando certo.
tenho 2 problemas.
1- Aparentemente as informações estão sendo gravadas no banco de dados, mas quando acesso o BD, esta em branco, mas existe uma sequencia. Tipo, foi gravado algo em branco, eu inseri dados no formulário, mas no BD os campos estão em branco. foto em anexo.
2- Tentei retornar a ID, com o comando $id = mysql_insert_id (); mas não da em nada.
Ajuda por favor.
<?php
//arquivo php sac.php
//Variáveis
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$City = $_POST['City'];
$cep = $_POST['cep'];
$Message = $_POST['Message'];
$data_envio = date('d/m/Y');
$hora_envio = date('H:i:s');$IP = $_SERVER['REMOTE_ADDR'];
$ERRO =0;
if (empty($Name) OR strstr($Name, ' ')==false) {
echo "favor digitar o seu nome corretamente.<br>";
$erro = 1;
}
//Verifica se o campo email está preenchido corretamente
if (strlen($Email)< 8 || strstr($Email, '@')==false) {
echo "Favor digitar o seu email corretamente.<br>";
$erro = 1;
}
//Verifica se o campo cidade está em branco
if (empty($City)) {
echo "Favor digitar sua cidade.<br>";
$erro = 1;
}
//Verifica se o campo comentarios está vazio
if (empty($Message)) {
echo "Favor entre com algum comentário.<br>";
$erro = 1;
}
//Verifica se o campo comentarios está vazio
if (empty($cep)) {
echo "coloque um estado.<br>";
$erro = 1;
}
//Obtém o ano para ser utilizado no número de protocolo
$anoprotocolo = date ("Y");
$servername = 'localhost:3306';
$username = '--';
$password = '--';
$dbname = '--';
$id = mysql_insert_id ();
//Preenche, com zeros a esquerda, o número do protocolo obtido através da função mysql_insert_id
$idprotocolo = str_pad($id, 2, "0", STR_PAD_LEFT);
// Gera o número de protocolo
$protocolo = $idprotocolo.$id.$anoprotocolo;
echo"<center><h1>Sua solicitação foi cadastrada com sucesso.</h1></center>";
echo"<center><h1>O número de protocolo é </h1></center> ";
echo"<center><h2>$protocolo</h2></center>";
echo"<center><h1>Anote-o para pesquisar o andamento da sua solicitação.</h1></center>";
if ($erro == 0) {
echo "Todos os dados foram digitados corretamente.<br>";
include 'insere.inc';
}
?>
<?php
//arquivo insere.inc
include 'conecta_mysql.inc';
$Name =$_post['Name'];
$Email =$_post['Email'];
$City =$_post['City'];
$cep =$_post['cep'];
$Message =$_post['Message'];
$sql = "insert into cadastro values";
$sql .= "('$Name', '$Email', '$City', '$cep', '$Message')";
if ($conexao->query($sql) === TRUE) {
echo "Usuário incluído com sucesso!";
} else {
echo "Erro: " . $sql . "<br>" . $conexao->error;
}
$conexao->close();
?>
<?php$conexao = mysqli_connect('localhost:3306', '--', '--', '--');
mysqli_set_charset($conexao, 'utf8');
if ($conexao->connect_error) die("falha ao realizar a conexão.: " . $conexao->connect_error);
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>sac</title>
<meta charset="UTF-8">
</head>
<body>
<h1>sac</h1>
<br>
<form method="POST" action="sac.php">
<pre>Nome: <input type="text" size="35" maxlength="256" name="Name">
E-mail: <input type="text" size="35" maxlength="256" name="Email">
Cidade: <input type="text" size="35" maxlength="256" name="City">
Estado: <input type="text" size="2" maxlength="2" name="cep">
Digite sua opnião sobre o site no espaço abaixo:
<textarea name="Message" cols="42" rows="5"></textarea>
<input type="submit" value="Efetuar Cadastro" name="enviar">
</pre>
</form>
</body>
</html>
Imagem do banco, com os as informações gravadas em branco.
/monthly_2017_11/Capturar.PNG.15fe9b62cb2302ab2611ae484b5c4de5.PNG" />>
Agora, Matheus Tavares disse:
Cadê o ID na sua tabela do banco?
Pela foto que você postou existe apenas Name/Email/City/cep/Message.
Coloque uma coluna "id" PRIMARY com auto_increment.
Veja o manual do mysql_insert_id(): http://php.net/manual/pt_BR/function.mysql-insert-id.php
Eu fiz isso, dai eu apaguei porque tava retornando esse erro " Todos os dados foram digitados corretamente.Erro: insert into cadastro values('', '', '', '', '')Column count doesn't match value count at row 1",
dai eu entendi que se apagar essa coluna, vai parar de dar o erro, como eu resolvo ?Isso é por causa da sintaxe do seu INSERT.
Use a sintaxe que especifica as colunas ou passe NULL / 0 para a coluna ID.
Exemplos:
INSERT INTO tabela SET nome = 'teste', 'peso' = 70;
INSERT INTO tabela (nome, peso) VALUES ('teste', 70);
INSERT INTO tabela (id, nome, peso) VALUES (null, 'teste', 70);
Se você criou a coluna corretamente no seu banco, deve funcionar.>
14 horas atrás, Matheus Tavares disse:
Isso é por causa da sintaxe do seu INSERT.
Use a sintaxe que especifica as colunas ou passe NULL / 0 para a coluna ID.
Exemplos:
INSERT INTO tabela SET nome = 'teste', 'peso' = 70;
INSERT INTO tabela (nome, peso) VALUES ('teste', 70);
INSERT INTO tabela (id, nome, peso) VALUES (null, 'teste', 70);
Se você criou a coluna corretamente no seu banco, deve funcionar.
criei a coluna "id" no BD, testei todas os exemplos, nem um deu certo, retorna um erro "**Parse error**: syntax error, unexpected 'into' (T_STRING) in **/home2/medfar/public_html/insere.inc** on line **12"**
a linha 12 esta assim :
$sql = insert into cadastro set (Name, Email, City, cep, Message) values ('nome pessoa', 'email@pessoa', 'cidadedoindividuo', '74940', 'olap', 70);
o ultimo que testei foi o segundo exemplo, que é este a cima.
tire a linha "$id = mysql_insert_id ();" pois estava retornando um erro de "**Warning**: mysql_insert_id(): Access denied for user ''@'localhost' (using password: NO) in **/home2/medfar/public_html/sac.php** on line **60"**
O que fiz de errado ?Olá @d4v1.
>
8 horas atrás, d4v1 disse:
criei a coluna "id" no BD, testei todas os exemplos, nem um deu certo, retorna um erro "Parse error: syntax error, unexpected 'into' (T_STRING) in /home2/medfar/public_html/insere.inc on line 12"
Qualquer string no PHP precisa estar entre aspas. Da forma que você construiu a sua string nunca iria funcionar.
Veja sobre strings: https://secure.php.net/manual/pt_BR/language.types.string.php
Tente assim:
$sql = "insert into cadastro (Name, Email, City, cep, Message) values ('nome pessoa', 'email@pessoa', 'cidadedoindividuo', '74940', 'olap');
Outra coisa... você estava fazendo [...]cadastro **SET** (Name[...]. Essa sintaxe estava incorreta. Não é nenhum dos exemplos que postei.
A keyword SET você utiliza apenas quando fizer coluna=valor, coluna2=valor, que não é o caso da sintaxe acima.
Procure por tutoriais sobre INSERT no php.
>
8 horas atrás, d4v1 disse:
tire a linha "$id = mysql_insert_id ();" pois estava retornando um erro de "Warning: mysql_insert_id():
Você está utilizando mysqli, e não mysql (o que deve ser mantido assim).
Isso significa que você deve usar mysqli_insert_id( $conexao ) e não mysql_insert_id().
Veja o manual da função: http://php.net/manual/pt_BR/mysqli.insert-id.php
-
>
5 minutos atrás, d4v1 disse:
2- Tentei retornar a ID, com o comando $id = mysql_insert_id (); mas não da em nada.
Cadê o ID na sua tabela do banco?
Pela foto que você postou existe apenas Name/Email/City/cep/Message.
Coloque uma coluna "id" PRIMARY com auto_increment.
Veja o manual do mysql_insert_id(): http://php.net/manual/pt_BR/function.mysql-insert-id.php