d4v1 0 Denunciar post Postado Novembro 16, 2017 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. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Novembro 16, 2017 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 Compartilhar este post Link para o post Compartilhar em outros sites
d4v1 0 Denunciar post Postado Novembro 16, 2017 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 ? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Novembro 16, 2017 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. Compartilhar este post Link para o post Compartilhar em outros sites
d4v1 0 Denunciar post Postado Novembro 17, 2017 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 ? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Novembro 17, 2017 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 Compartilhar este post Link para o post Compartilhar em outros sites
d4v1 0 Denunciar post Postado Novembro 18, 2017 - Compartilhar este post Link para o post Compartilhar em outros sites