Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marostegan

Cadasto

Recommended Posts

Pessoal, boa noite!

Tudo bem?

 

Estou iniciando agora em PHP tentei fazer um cadastro mas não está funcionando, gostaria de saber o que tem de errado.

 

Segue abaixo o código: (Estou usando BD MySQL)

 

sql.php (arquivo de conexão)

 

<?php
ini_set('display_errors', 0);
$host = "localhost";//caso esteja usando o xampp ou wamp

$user = "root";// padrão para xampp ou wamp é root

$pass = "";// padrão para xampp ou wamp é ""

$db = "dbniver";// é o nome do banco que você criou no phpmyadmin

$conn = mysql_connect($host, $user, $pass) or die (mysql_error());

@mysql_select_db($db);

?>

 

cadastro.php

 

<?php
//criar a conexão com o banco
include "sql.php";

if(isset($_POST['done'])){

   $data_cadastro = $_POST['data'];

   $nome = $_POST['nome'];

   $data_niver = $_POST['aniversario'];

$endereco = $_POST['endereco'];

$n = $_POST['n'];

   $bairro = $_POST['bairro'];

$cidade = $_POST['cidade'];

$cep = $_POST['cep'];

$telefone = $_POST['telefone'];

$email = $_POST['email'];

$observacoes = $_POST['obs'];

  if(empty($data) || empty($nome)){

       $erro = "Verifique os campos Data de Cadastro e Telefone, eles não podem ficar em branco.";

   }else{        

      $sql = mysql_query("INSERT INTO `cadastro`(`nome`,`data_niver`, `endereco`, `n`, `bairro`, `cidade`, `cep`, `telefone`, `email`, `obs`) VALUES ('$nome', '$aniversario', '$endereco', '$n', '$bairro', '$cidade', '$cep', '$telefone', '$email', '$obs')") or die(mysql_error());

           if($sql){

               $erro = "Dados cadastrados com sucesso!";

             } else{

                 $erro = "Não foi possivel cadastrar os dados";

             }
   }
}

?>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
<!--
.style1 {
font-size: 13px;
font-weight: bold;
font-family: verdana;
}
.style6 {font-family: verdana; font-size: 11px; font-weight: bold; }
-->
</style>
<form name="form1" method="post" action="cadastro.php">
 <div align="center">
   <span style="padding-top:40px;">
   <?php

if(isset($erro)){

   print '<div style="width:80%; background:#ff6600; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro.'</div>';

}

?>
   </span>
   <table width="67%" border="0" cellspacing="2">
     <tr>
       <td colspan="2"><div align="center" class="style1">FICHA DE CADASTRO</div></td>
     </tr>
     <tr>
       <td width="20%"><span class="style6">Data do Cadastro</span></td>
       <td width="80%"><label>
         <input name="data" type="text" id="data" size="15" maxlength="10">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Nome</span></td>
       <td><label>
         <input name="nome" type="text" id="nome" size="50" maxlength="50">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Data de Aniversário</span></td>
       <td><label>
         <input name="aniversario" type="text" id="aniversario" size="15" maxlength="10">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Endereço</span></td>
       <td><label>
         <input name="endereco" type="text" id="endereco" size="80" maxlength="80">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">N</span></td>
       <td><label>
         <input name="n" type="text" id="n" size="10" maxlength="10">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Bairro</span></td>
       <td><label>
         <input name="bairro" type="text" id="bairro" size="35" maxlength="35">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Cidade</span></td>
       <td><label>
         <input name="cidade" type="text" id="cidade" size="40" maxlength="40">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">CEP</span></td>
       <td><label>
         <input name="cep" type="text" id="cep" size="10" maxlength="10">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">Telefone</span></td>
       <td><label>
         <input name="telefone" type="text" id="telefone" size="16" maxlength="15">
       </label></td>
     </tr>
     <tr>
       <td><span class="style6">E-Mail</span></td>
       <td><label>
         <input name="email" type="text" id="email" size="50" maxlength="50">
       </label></td>
     </tr>
     <tr>
       <td><p class="style6">Observações</p>
       <p class="style6"> </p>
       <p class="style6"> </p>
       <p class="style6"> </p>
       <p class="style6"> </p></td>
       <td><label>
         <textarea name="obs" id="obs" cols="90" rows="10"></textarea>
       </label></td>
     </tr>
     <tr>
       <td colspan="2"><div align="right">
         <label>
         <input type="hidden" name="done" value="" />
         <input type="submit" value="Cadastrar">
         </label>
       </div></td>
     </tr>
     </table>  
 </div>
</form>

 

Valew pessoal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então ele não grava nada no BD e retonar aquela linha de erro que coloquei no código "Verifique os campos Data de Cadastro e Nome, eles não podem ficar em branco." e todos os dados do formulário somem.

 

O que será que estou fazendo de errado?

 

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

To analisando teu codigo aqui, só uma dica cara:

 

 <input type="hidden" name="done" value="" />
<input type="submit" value="Cadastrar">

 

não precisa de um campo extra só pra verificar se o form foi enviado. poe um name no type="submit" que ja serve.

 

 
<input type="submit" name="done" value="Cadastrar">

 

 

da um echo nas tuas variaveis, ve se esta pegando todo os dados certos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

 

fiz essa alteração no meu código mais ainda assim ele não funciona, será que a programação está tudo certa?

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

preenche todo o formulário e vê oque as variaveis estão retornando.. imiprimindo ..

 

 

$data_cadastro = $_POST['data'];

 

$nome = $_POST['nome'];

 

$data_niver = $_POST['aniversario'];

 

$endereco = $_POST['endereco'];

 

$n = $_POST['n'];

 

$bairro = $_POST['bairro'];

 

$cidade = $_POST['cidade'];

 

$cep = $_POST['cep'];

 

$telefone = $_POST['telefone'];

 

$email = $_POST['email'];

 

$observacoes = $_POST['obs'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º erro: nomes de tabelas e colunas entre aspas...

procure saber o q significam palavras entre aspas..

2. se for PHP 5 ou superior verifique se instalou a extensão ao mysql;

3. verifique se não está tentando inserir valores nulos em campos de preeenchimento obrigatório (not null)

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º erro: nomes de tabelas e colunas entre aspas...

procure saber o q significam palavras entre aspas..

2. se for PHP 5 ou superior verifique se instalou a extensão ao mysql;

3. verifique se não está tentando inserir valores nulos em campos de preeenchimento obrigatório (not null)

 

Amigo, desculpe a pergunta, mas estou começando agora e tenho ainda dúvidas (já estou providenciando também livros pra estudar)...

 

Mas aproveitando uma citação sua, você poderia explicar pra mim sobre o PHP5 e instalar extensão MySQL. O que seria isso e porque tem que isntalar essa extensão?

 

Obrigado pelas dicas! Vou testar aqui e depois posto o resultado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Então ele não grava nada no BD e retonar aquela linha de erro que coloquei no código "Verifique os campos Data de Cadastro e Nome, eles não podem ficar em branco." e todos os dados do formulário somem.

 

simples, erro de validacao, você esta preenchendo estes campos? se sim, você esta pegando os campos com nomes errados...

 

outra coisa, como o amigo disse pra retirar o campo hidden la, eu aconselho a verificar se o formulario foi submetido, pois a pagina pode ser acessada por get e inserir em branco

 

if($_SERVER['REQUEST_METHOD'] == 'POST')...

 

o mysql_error() nao retorna nada nao?

 

pega esta linha

$sql = mysql_query("INSERT INTO `cadastro`(`nome`,`data_niver`, `endereco`, `n`, `bairro`, `cidade`, `cep`, `telefone`, `email`, `obs`) VALUES ('$nome', '$aniversario', '$endereco', '$n', '$bairro', '$cidade', '$cep', '$telefone', '$email', '$obs')") or die(mysql_error());

 

pega a string do sql, e joga na tela depois do submit e joga no sql do phpmyadmin, deve ter erro na query, verifiquei ae um campo chamado 'n', e sinceramente nao disse nada...deve ter campos a mais...o phpmyadmin dira isto..

 

mais outro conselho, validacao de formulario faça no cliente...eh mais pratico, exite plugin do jquery q faz isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º Variavel data errada!

Você pegou pela var $data_cadastro

if(isset($_POST['done'])){
   $data_cadastro = $_POST['data'];

e está tentando validar como $data

if(empty($data) || empty($nome)){

2º Mensagem de Erro

Você deu a mensagem Data Cadastro e Telefone

$erro = "Verifique os campos Data de Cadastro e Telefone, eles não podem ficar em branco.";

Enquanto está tentando validar o nome

[code]
if(empty($data) || empty($nome)){

 

PS: Aconcelho a remover o campo Data de Cadastro e utilizar assim:

if(isset($_POST['done'])){
   $data_cadastro = date('Y-m-d');

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo...

 

no caso você citou para eu utilizar assim:

 

if(isset($_POST['done'])){

$data_cadastro = date('Y-m-d');

 

mas isso pegaria a data de hoje, certo?

 

 

* O problema é que meu cliente já tem muitos cadastrados em papel e precisa passar para o sistema, nesse caso a data de cadastro não pode ser atual.

 

Sendo assim, está certo a forma que vou usar ou terei problema?

 

 

*** Vi que no MySQL ele salva a data no padrão americano, mas no meu cadastro quando eu utilizo o campo do tipo DATE, pode ser preenchido normalmente ou tem que fazer alguma coisa para não ter nenhum conflito (da forma como digitamos para a forma como será gravada... e depois para exibir os dados gravados...?

 

 

Obrigado mais uma vez!

 

Fiz essas correções e agora deu certo!

 

Porém...

 

** Acabei de fazer o teste e como o campo está definido como DATE quando gravei fui ver como ficou no BD os campos de data mas não deu certo... ficou assim gravado: 0000-00-00

 

Porque isso? E como posso corrigir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque isso? E como posso corrigir?

simples, grava no formato dele, aaaa-mm-dd

 

depois você recupera com uma funcao simples

 

function revertDate($date,$sep='-')
{
$data = explode($sep,$date);
array_reverse($data);
return implode($sep,$data);
}
echo revertDate(date('Y-m-d')).' -> ano mysql->portugues : ';
echo revertDate(date('d-m-Y')).' -> ano portugues->mysql';

 

com a funcao acima você pode tanto usar para passar do formato brasileiro pra mysql, e vice-versa...

 

se você pesquisar, vai achar artigos q mostram como fazer esta conversao direto na query, la no mysql...

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, você poderia me dar um exemplo de como criar uma query lá no mysql desse jeito que você falou?

 

Obrigado.

 

PS> Estou usasndo PHPMyAdmin para trabalhar com MySQL. (WampServer)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.