Jump to content
  • 0
Kerollin

Banco de dados e php

Question

Gente, eu tive que criar um site para um trabalho de escola e criar um formulário cujo os dados vão para o banco de dados, eu fiz tudo certinho, o banco de dados ta conectado ao php do site, e as informações que eu coloco para preencher o formulário aparecem no bd normalmente, porém quando eu inicio a página, antes de inserir as informações, a página mostra que tem erro no código (porque os campos estão vazios), o ideal seria fazer uma condição enquanto os campos estiverem vazios né? Mas não faço a minima ideia de como, já tentei várias formas que vi por aqui..

Na página aparece assim: Notice: Undefined index: Nome in C:\xampp\htdocs\Site\PagContato.php on line 7 (junto com as outras linhas de dado, como email, ddd, telefone e etc)
                                               Erro:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'Nome' cannot be null

 

Meu código ta assim

 

<?php
    $nome_bd ='teste';
    $usuario_bd = 'root';
    $senha_bd = '';
    $host_bd = 'localhost';

 

    $Nome = $_POST ['Nome'];
    $Email = $_POST ['Email'];
    $DDD = $_POST ['DDD'];
    $Telefone = $_POST ['Telefone'];
    $Assunto = $_POST ['Assunto'];
    $Mensagem = $_POST ['Mensagem'];
    include 'Template.php';
    include 'Conexao.php';
    $conexao = new Conexao();
    $template = new Template();
    

        try{
            $conexao = new PDO("mysql:host=$host_bd;dbname=$nome_bd", $usuario_bd,$senha_bd);
            $conexao->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $conexao -> prepare(
                        'INSERT INTO contato(Nome, Email, DDD, Telefone, Assunto, Mensagem) VALUES (:Nome, :Email, :DDD, :Telefone, :Assunto, :Mensagem)'
                        );
            $stmt->bindValue(":Nome", $Nome);
            $stmt->bindValue(":Email", $Email);
            $stmt->bindValue(":DDD", $DDD);
            $stmt->bindValue(":Telefone", $Telefone);
            $stmt->bindValue(":Assunto", $Assunto);
            $stmt->bindValue(":Mensagem", $Mensagem);
            $stmt->execute();
            echo $stmt->rowCount()."linha(s) inseridas";
        }catch(PDOException $e){
            echo "Erro:".$e->getMessage();
        }
    
        

    echo $template->topo();
?>

 

<form method = "post" action = "PagContato.php" id = "contato" form id = "teste">
        
        <fieldset>
            <legend> Contato </legend>
                <label for = "Nome">
                    Nome: (<span> * </span>)
                </label>
                
                <input data-progression type = "text"  name = "Nome" id = "Nome" value = "" placeholder = "" />
                <label for = "Email">
                    E-mail: (<span> * </span>)
                </label>
                <input data-progression type = "text" name = "Email" id = "Email" value = "" placeholder = "" />
                <article id = "ddd-telefone">
                    <p class = "um">
                        <label for = "DDD">
                            DDD:
                        </label>
                        <input data-progression type = "text" name = "DDD" id = "DDD" value = "" placeholder = "" />
                    </p>
                    <p class = "dois">
                        <label for = "Telefone">
                            Telefone:
                        </label>
                        <input data-progression type = "text" name = "Telefone" id = "Telefone" value = "" placeholder = ""/>
                </article>
                    <label for = "Assunto">
                        Assunto: (<span> * </span>)
                    </label>
                <select name = "Assunto" id = "Assunto">
                    <option value = "">
                        Escolha um assunto
                    </option>
                    <option value = "Descrição do produto">
                        Descrição do produto
                    </option>
                    <option value = "Como funciona o produto">
                        Como funciona o produto
                    </option>
                    <option value = "Manutenção">
                        Manutenção
                    </option>
                    <option value = "Outros">
                        Outros
                    </option>
                </select>
                    <label for = "Mensagem">
                        Mensagem: (<span> * </span>)
                    </label>
                    <textarea name = "Mensagem" id = "Mensagem" cols = "" rows = ""></textarea>
                    <input data-progression type = "submit" name = "enviar" id = "enviar" value = "Enviar"/>
        </fieldset>

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

O alerta é porque o está vazio ou o valor é nulo no índice da super-global $_POST

 

Então levantarei uma dúvida:

Esse é um único arquivo, ao qual você insere os dados e o mesmo registra?

Porque se form está requisitando a validação em outro arquivo PagContato.php

action = "PagContato.php" 

No caso é nesse arquivo que as informações de registro deve ficar.

 

Como você disse que era um trabalho escolar seu professor deveria ter lhe falado sobre verificar valores antes de validar-los.

Spoiler

if (!isset($_POST['Nome'])) {
    echo "Nome não foi definido";
} else if (!isset($_POST['Email'])) {
    echo "Email não foi definido";
} else if (isset($_POST['DDD'])) {
    echo "DDD não foi definido";
} else if (!isset($_POST['Telefone'])) {
    echo "Telefone não foi definido";
} else if (!isset($_POST['Assunto'])) {
    echo "Assunto não foi definido";
} else if (!isset($_POST['Mensagem'])) {
    echo "Mensagem não foi definida";
} else {
   // Execução do código dentro desse laço.....
}

 

 

Lógico isso que coloquei acima não é uma validação é apenas uma checagem se os valores realmente existem.

 

Detalhe, não use $_POST ['VALOR'] use assim: $_POST['VALOR'], sem dar espaço entre a índice da array e seu valor.

 

E se for fazer a validação do post no mesmo arquivo que contém o formulário use lógica de exitência como mostrei acima:

Spoiler

<?php
if (isset($_POST)) {
    echo "Recebido POST: {$_POST['inputTXT']}";
}
?>

<form method="POST">
    <input type="text" maxlength="30" name="inputTXT" />
    <button type="submit"> Enviar </button>
</form>

 

 

 

Share this post


Link to post
Share on other sites
  • 0

@Omar~, É um único arquivo onde eu requisito e insiro os dados, tinha feito a condição assim:

if(isset($_POST['Enviar'])){
        if(isset($_POST["submit"]) || empty($_POST['Nome']) || empty($_POST['Email']) || empty($_POST['DDD']) || empty($_POST['Telefone']) || empty($_POST['Assunto']) || empty($_POST['Mensagem'])){
            $error = true;
        }
        else{
            $Nome = $_POST['Nome'];
            $Email = $_POST['Email'];
            $DDD = $_POST['DDD'];
            $Telefone = $_POST['Telefone'];
            $Assunto = $_POST['Assunto'];
            $Mensagem = $_POST['Mensagem'];
        }
    }

Mas aí aparece o erro "Erro:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'Nome' cannot be null"

 

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

  • Similar Content

    • By fabioamorais
      Ola pessoal, sou novo aqui no fórum e também no mundo da programação. 

      Estou criando um sistema de cadastro de clientes em PHP 7 e mysql
      para meu serviço para fins de organização, tenho ja pronto o sistema de cadastro e edição do cliente, tenho login por usuário e senha.
      preciso colocar nesse sistema uma forma que registre a ação e o usuário que fez a ação quando houver uma alteração no cadastro.
      exemplo;
      O usuario (jose) alterou o status de analise para concluído .
      o usuario (pedro) alterou a localização de mesa para armario.
      e que fosse exibido como um tipo de histórico de eventos no próprio cadastro do cliente.
      e nesse campo se ainda tiver como add cometários.
      Usuario (jose): Precisa entrar em contato com o cliente francisco. 
      Usuario (pedro): cliente foi avisado e está sabendo.
       
      quem souber uma forma de fazer isso, ficaria muito grato.

    • By proflupin
      Estou com a seguinte dificuldade, possuo um <a> que busca uma id numa tabela do banco de dados, conforme abaixo:
       
      <a href="self_service.php?id=<?php echo $row_produto['id_categoria_chamado']?>" class="btn btn-primary"data-toggle="collapse" data-target="#subcategoria" aria-expanded="false" aria-controls="collapseExample">Visitar</a> A consulta é realizada, pois vejo que um novo link é mostrado no rodapé da página:

       
      Esta página self_service.php mostrada acima, é minha página principal, onde tudo é trabalhado. Se por exemplo eu mudar para outro arquivo php, teste.php por exemplo, uma nova página é aberta e consigo exibir os resultados normalmente.
       
      O problema é: quero abrir este ID na mesma página, dentro de um collapse. Exemplo:
       
      Cliquei em visitar na categoria Totvs...
       
       
      Um collapse abre-se logo abaixo:

       
      O que não consigo fazer é resgatar o ID passado pelo botão VISITAR em meu collapse, se eu tenter o $_GET['id'], não vai retornar nenhum valor, pois a URL não muda quando trabalhamos com collapse.
    • By drx
      Olá Avançados em PHP! 

      Existe algum IDE em PHP para facilitar a vida do desenvolvedor, ou o negócio é na unha mesmo? 

      Aguardo.
    • By Webster Moitinho
      Estou usando switch em minha página PHP, e para um dos cases está aparecendo o erro abaixo que eu não consigo identificar
       
      <Error><Code>BlobNotFound</Code><Message>The specified blob does not exist. RequestId:00c4ed11-e01e-0068-2b3a-575edd000000 Time:2019-08-20T09:33:50.2842035Z</Message></Error> Esse case chama o seguinte conteúdo do banco de dados:
      <p align="justify">Ao capacitar o seu <em>staff</em> de maneira satisfat&oacute;ria, a empresa assegura a qualidade do produto final ao cliente, influenciando de maneira significativa os resultados. Atrav&eacute;s da implanta&ccedil;&atilde;o de programas sistem&aacute;ticos de treinamento, pode-se proporcionar a melhoria do produto, al&eacute;m de serem dotados de forte apelo motivacional para a equipe, promovendo o desenvolvimento profissional espont&acirc;nea e naturalmente. &Eacute; comum nas corpora&ccedil;&otilde;es que o colaborador, ap&oacute;s algum tempo de capacita&ccedil;&atilde;o, busque melhores oportunidades no mercado, fazendo com que o empres&aacute;rio perca seu investimento. Todavia, n&atilde;o capacitar tamb&eacute;m tem o seu custo. E &eacute; bastante alto. Da&iacute; a import&acirc;ncia da forma&ccedil;&atilde;o continuada nas empresas, promovendo constantes atualiza&ccedil;&otilde;es e reciclagens dos profissionais.</p> <p align="justify"> <h4 style="text-align:left">Quanto custa n&atilde;o capacitar </h4> <ul style="margin-left: 5px;text-align:left; line-height: 35px; font-family: padrao;"> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Atendimento incompleto ou n&atilde;o compat&iacute;vel com a expectativa da empresa e do cliente.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Perda de neg&oacute;cios.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Insatisfa&ccedil;&atilde;o de clientes.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o do valor da marca.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;N&atilde;o cumprimento de metas.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Alto &iacute;ndice de <em>turnover</em>.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Insatisfa&ccedil;&atilde;o do funcion&aacute;rio.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Custos com retrabalho.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Sobrecarga de alguns funcion&aacute;rios (via de regra, aqueles melhores preparados).</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o da lucratividade.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o de faturamento.</li> </ul> <h4 style="text-align:left">O que o mercado est&aacute; fazendo para melhorar na gest&atilde;o e formar seus profissionais?</h4> <p style="text-align:left">Segundo estudos realizados pelo <a href="http://www.vistage.com.br/grupos-vistage" title="V&aacute; para o site" target="_blank" class="zloko">Grupo Vistage Brasil</a>:</p> <ul style="margin-left: 5px;text-align:left; line-height: 35px; font-family: padrao;"> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;Apenas 14&#37; dos executivos brasileiros n&atilde;o tem problemas ao buscar profissionais qualificados.</li> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;H&aacute; falta de m&atilde;o de obra qualificada para todos os n&iacute;veis de fun&ccedil;&atilde;o.</li> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;As maiores demandas s&atilde;o para profissionais com forma&ccedil;&atilde;o superior para a &aacute;rea de atua&ccedil;&atilde;o da empresa (65%) e forma&ccedil;&atilde;o t&eacute;cnica (60%).</li> </ul> </p> <p align="justify">Uma pesquisa do Jornal Bom Dia Brasil mostrou onde est&aacute; o emprego nas m&eacute;dias e grandes empresas. S&atilde;o setores onde sobram vagas porque falta qualifica&ccedil;&atilde;o e &aacute;reas onde o curso t&eacute;cnico j&aacute; garante a contrata&ccedil;&atilde;o. O curso t&eacute;cnico &eacute; suficiente para abrir as portas de entrada no mercado de trabalho.<br /> Entre as ind&uacute;strias pesquisadas, 65% reclamam da falta de m&atilde;o de obra especializada. As m&eacute;dias e grandes empresas procuram operadores.</p> <p align="justify">Exatamente o caso dessa empresa de automa&ccedil;&atilde;o de port&otilde;es em Bras&iacute;lia. &ldquo;A gente perde com nossa produtividade. A gente n&atilde;o consegue inovar com frequencia porque as pessoas n&atilde;o conseguem acompanhar essa demanda&rdquo;, afirma a gerente de RH Clara Moreira. <p style="text-align:justify;">A sa&iacute;da das empresas tem sido treinar os empregados: 81% fizeram investimentos em cursos dentro da pr&oacute;pria empresa. O que tamb&eacute;m n&atilde;o &eacute; f&aacute;cil, porque a maioria chega despreparada.</p> <h4 style="text-align:left;">Áreas dos cursos Gopinatha</h4> <br /> <div style="float:left; width:100%;"> <img src="images/colmeia.png" id="map-image" style="width: 480px; max-width: 100%; height: auto;" alt="" usemap="#cursos" /> <map name="cursos"> <area href="detalhe.php?id=200&gr=desh" alt="Desenvolvimento Humano" title="Desenvolvimento Humano" shape="poly" coords="176, 351, 258, 300, 345, 345, 348, 448, 262, 498, 184, 442" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cdes.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=info" alt="Informática" title="Informática" shape="poly" coords="431, 199, 517, 149, 599, 199, 598, 306, 514, 350, 431, 301" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cinf.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=gestao" alt="Gestão Avançada" title="Gestão Avançada" shape="poly" coords="262, 197, 347, 150, 430, 200, 430, 300, 344, 345, 258, 300" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cgest.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=contabil" alt="Contabilidade e Tributos" title="Contabilidade e Tributos" shape="poly" coords="90, 202, 178, 153, 262, 199, 260, 302, 177, 352, 92, 299" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/ccont.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=seguranca" alt="Segurança da Informação" title="Segurança da Informação" shape="poly" coords="345, 54, 428, 0, 515, 54, 516, 150, 430, 201, 345, 151" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cseg.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=201&gr=sistemas&ant=32" alt="Sistemas de Informação" title="Sistemas de Informação" shape="poly" coords="174, 49, 259, 1, 347, 56, 346, 152, 261, 199, 178, 153" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/csist.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=coaching" alt="Coaching" title="Coaching" shape="poly" coords="6, 49, 91, 2, 176, 50, 178, 153, 89, 202, 4, 146" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/ccoach.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> </map> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/image-map-resizer/1.0.10/js/imageMapResizer.js"></script> <script>$(document).ready(function(e){$("map").imageMapResize();});</script> </div>  
×

Important Information

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