Jump to content

Recommended Posts

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');
// define o IP de envio da mensagem
$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
//arquivo conecta_mysql.inc
//cria a conexao mysqli_connect('localizacao BD', 'usuario de acesso', 'senha', 'banco de dados')
$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>
Insira as informações para efetuar o sac e deixe seu comentário.

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.

Capturar.PNG.15fe9b62cb2302ab2611ae484b5c4de5.PNG

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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 ?

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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 ? 

 

Share this post


Link to post
Share on other sites

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

 

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.