Ir para conteúdo
Fórum Script Brasil
  • 0

Erro com $_POST[] e outros


Otto N.

Pergunta

Daew galera, beleza?

Eu estava seguindo passo-a-passo como fazer um CRUD em php e beleza, tava rodando tudo beleza, dai conforme fui implementando os códigos ele ocasionou em alguns erros. O interessante é que eu segui A RISCA todos os passos da video-aula, tudo mesmo, e continua dando erro.

Além do erro, ainda demora muuuuuuuuuito para a página carregar.

Então pessoal, eu não sei se eu posso mandar o código inteiro aqui para voceis analisarem ou mandar apenas uma parte do código, pois como não tenho muita experiencia com php não sei nem dividir o código para por no fórum =(

Por fim, aí está o código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
        
        function confirma(id)
        {
            $resultado = window.confirm("confirma excluir o registro numero " +id);
            if (resultado)
            {
                window.location = "exclui_dados.php?id=" +id;
            }else{
                return false;
            }
        }
        
</script>
</head>
<?php
    require_once "conexao.php";
    
    if ($_POST['nome'] && $_POST['email'] && $_POST['comentario'])
    {
        $sql = "
        INSERT 
        INTO 
        tab_crud
        (
            nome, 
            email, 
            comentario,
            data_hora
        ) 
        VALUES
        (
            '" . $_POST['nome'] . "',
            '" . $_POST['email'] . "',
            '" . $_POST['comentario'] . "',
            '" . date('Y-m-d') . " " . date('H:i:s') . "'
        )";
        
        @mysql_query($sql, $conexao) or die("Erro ao inserir SQL" .mysql_error());
    }
    
    // codigo da paginação
    
    if ($_POST['pg'] && ($_POST['pg'] != 0) && is_numeric($_POST['pg']))
    {
        $pagina_atual = $_POST['pg'];
    }else{
        $pagina_atual = 1;
    }
    
    // pegar a quantidade total de registros da tab_crud
    $sql = "SELECT * FROM tab_crud";
    $rc = @mysql_query($sql, $conexao) or die("Erro ao contar ".mysql_error());

    //pegar o numero de registros que está na tabela
    $qtd_total_registros = mysql_num_rows($rc);
    
    // pegando quantas paginas serao necessarias
    //numero por paginas (npp)
    $npp = 5;
    $qtd_total_pg = ceil($qtd_total_registros / $npp);
    
    // SQL`s PARA SABER A LIMIT DA SQL
    $pr = (($pagina_atual * $npp) - $npp);
    
    $sql = "SELECT * FROM tab_crud LIMIT " . $pr . ", ".$npp;
    
    //POPULANDO A TABELA
    $rs = @mysql_query($sql, $conexao) or die("Erro ao buscar dados ".mysql_error());
?>

<body>
<form id="form1" name="formulario" method="post" action="inserir_dados.php">
  <table width="41%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="14%" align="right">Nome:</td>
      <td width="86%"><label for="nome"></label>
        <input type="text" name="nome" id="nome" /></td>
    </tr>
    <tr>
      <td align="right">E-mail:</td>
      <td><label for="email"></label>
        <input type="text" name="email" id="email" /></td>
    </tr>
    <tr>
      <td align="right">Comentário:</td>
      <td><label for="comentario"></label>
        <textarea name="comentario" id="comentario" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="enviar" id="enviar" value="Enviar" />
        <input type="reset" name="limpar" id="limpar" value="Limpar" /></td>
    </tr>
  </table>
</form>
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr bgcolor="#CCCCCC">
    <td width="17%">Nome</td>
    <td width="18%">Email</td>
    <td width="34%">Comentario</td>
    <td width="17%">Data e Hora</td>
    <td width="7%">&nbsp;</td>
    <td width="7%">&nbsp;</td>
  </tr>
  <?php
          // enquanto linha estiver recebendo registros do record set (rs) irá executar
          while ($linha = mysql_fetch_array($rs))
        {
  ?>
  
  
  <tr>
    <td><?=$linha['nome']?></td>
    <td><?=$linha['email']?></td>
    <td><?=$linha['comentario']?></td>
    <td><?=$linha['data_hora']?></td>
    <td><a href="editar_dados.php?id=<?=$linha['id']?>);">Editar</a></td>
    <td><a href="#" onclick="confirma(<?=$linha['id']?>);">Excluir</a></td>
  </tr>
  <?php
        }
  
  ?>
  
  
  <tr>
    <td colspan="6" align="center">
    <?php
        // CRIANDO O LINK ANTERIOR SE TIVER
        if($pagina_atual > 1){
            $link_anterior = "<a href='inserir_dados.php?pg=". ($pagina_atual -1 ) . "'>[ANTERIOR]</a>";
        }
        // CRIANDO LINK POSTERIOR SE TIVER
        if ($pagina_atual < $qtd_total_pg){
            $link_posterior = "<a href='inserir_dados.php?pg='" .($pagina_atual +1) . "'[POSTERIOR]</a>";    
        }
        // calculando a primeira pagina
        if (($pagina_atual - 4) < 1){
            $start = 1;
        }else{
            $anterior = $pagina_atual - 4;
        }
        
        // CALCULANDO A ULTIMA PAGINA
        if (($pagina_atual +4 ) > $qtd_total_registros){
            $end = $qtd_total_pg;
        }else{
            $end = $pagina_atual +4;
        }
        // construindo os links numericos
        $link_numerico = "";
        for($i=start; $i<=$end;$i++){ // 1; 1 <= fim; i++
            if($pagina_atual != $i){ // se a pagina atual não começar em 1, então será executado essa parte do código
                $link_numerico .= "<a href='inserir_dados.php?pg=" .$i. "'> [" . $i . "]</a>";
            }else{
                $link_numerico .= $i;// Se a pagina for = 1, então acrescentará, ao link numerico, a cada vez que entrar nessa condiçao, +1 pagina.
            }
        }
        echo "$link_anterior . '$nbsp;$nbsp;' . $link_numerico . '$nbsp;$nbsp;' . $link_posterior";
    ?>
    </td>
  </tr>
</table>
<br />
</body>
</html>

Erros:

Notice: Undefined index: nome in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 24

Notice: Undefined index: pg in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 49

Notice: Use of undefined constant start - assumed 'start' in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 158

Fatal Error: Allowed momery size of 13421728 bytes exhausted (tried to allocate 133693463 bytes ) in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 160

Não sei se abusei nas informações, mas só assim que consegui me expressar para tirar minhas dúvidas.

Aguardo respostas e agradecendo desde já,

Otto.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Bom, continha alguns erros

eu arrumei, tenta ae.

Linha 24

if ($_POST['nome'] && $_POST['email'] && $_POST['comentario'])
não há nescecidade de deixar especificado os campos pode dexar somente assim
if ($_POST)
Linha 49
if ($_POST['pg'] && ($_POST['pg'] != 0) && is_numeric($_POST['pg']))
$_POST['pg'] ta declarado 2 vezes n vejo nescecidade Linha 158
for($i=start; $i<=$end;$i++){ // 1; 1 <= fim; i++
start é uma variavel você esqueceu do -> $
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
        
        function confirma(id)
        {
            $resultado = window.confirm("confirma excluir o registro numero " +id);
            if (resultado)
            {
                window.location = "exclui_dados.php?id=" +id;
            }else{
                return false;
            }
        }
        
</script>
</head>
<?php
    require_once "conexao.php";
    
    if ($_POST)
    {
        $sql = "
        INSERT
        INTO
        tab_crud
        (
            nome,
            email,
            comentario,
            data_hora
        )
        VALUES
        (
            '" . $_POST['nome'] . "',
            '" . $_POST['email'] . "',
            '" . $_POST['comentario'] . "',
            '" . date('Y-m-d') . " " . date('H:i:s') . "'
        )";
        
        @mysql_query($sql, $conexao) or die("Erro ao inserir SQL" .mysql_error());
    }
    
    // codigo da paginação
    
    if (($_POST['pg'] != 0) && is_numeric($_POST['pg']))
    {
        $pagina_atual = $_POST['pg'];
    }else{
        $pagina_atual = 1;
    }
    
    // pegar a quantidade total de registros da tab_crud
    $sql = "SELECT * FROM tab_crud";
    $rc = @mysql_query($sql, $conexao) or die("Erro ao contar ".mysql_error());

    //pegar o numero de registros que está na tabela
    $qtd_total_registros = mysql_num_rows($rc);
    
    // pegando quantas paginas serao necessarias
    //numero por paginas (npp)
    $npp = 5;
    $qtd_total_pg = ceil($qtd_total_registros / $npp);
    
    // SQL`s PARA SABER A LIMIT DA SQL
    $pr = (($pagina_atual * $npp) - $npp);
    
    $sql = "SELECT * FROM tab_crud LIMIT " . $pr . ", ".$npp;
    
    //POPULANDO A TABELA
    $rs = @mysql_query($sql, $conexao) or die("Erro ao buscar dados ".mysql_error());
?>

<body>
<form id="form1" name="formulario" method="post" action="inserir_dados.php">
  <table width="41%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="14%" align="right">Nome:</td>
      <td width="86%"><label for="nome"></label>
        <input type="text" name="nome" id="nome" /></td>
    </tr>
    <tr>
      <td align="right">E-mail:</td>
      <td><label for="email"></label>
        <input type="text" name="email" id="email" /></td>
    </tr>
    <tr>
      <td align="right">Comentário:</td>
      <td><label for="comentario"></label>
        <textarea name="comentario" id="comentario" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="enviar" id="enviar" value="Enviar" />
        <input type="reset" name="limpar" id="limpar" value="Limpar" /></td>
    </tr>
  </table>
</form>
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr bgcolor="#CCCCCC">
    <td width="17%">Nome</td>
    <td width="18%">Email</td>
    <td width="34%">Comentario</td>
    <td width="17%">Data e Hora</td>
    <td width="7%">&nbsp;</td>
    <td width="7%">&nbsp;</td>
  </tr>
  <?php
          // enquanto linha estiver recebendo registros do record set (rs) irá executar
          while ($linha = mysql_fetch_array($rs))
        {
  ?>
  
  
  <tr>
    <td><?=$linha['nome']?></td>
    <td><?=$linha['email']?></td>
    <td><?=$linha['comentario']?></td>
    <td><?=$linha['data_hora']?></td>
    <td><a href="editar_dados.php?id=<?=$linha['id']?>);">Editar</a></td>
    <td><a href="#" onclick="confirma(<?=$linha['id']?>);">Excluir</a></td>
  </tr>
  <?php
        }
  
  ?>
  
  
  <tr>
    <td colspan="6" align="center">
    <?php
        // CRIANDO O LINK ANTERIOR SE TIVER
        if($pagina_atual > 1){
            $link_anterior = "<a href='inserir_dados.php?pg=". ($pagina_atual -1 ) . "'>[ANTERIOR]</a>";
        }
        // CRIANDO LINK POSTERIOR SE TIVER
        if ($pagina_atual < $qtd_total_pg){
            $link_posterior = "<a href='inserir_dados.php?pg='" .($pagina_atual +1) . "'[POSTERIOR]</a>";    
        }
        // calculando a primeira pagina
        if (($pagina_atual - 4) < 1){
            $start = 1;
        }else{
            $anterior = $pagina_atual - 4;
        }
        
        // CALCULANDO A ULTIMA PAGINA
        if (($pagina_atual +4 ) > $qtd_total_registros){
            $end = $qtd_total_pg;
        }else{
            $end = $pagina_atual +4;
        }
        // construindo os links numericos
        $link_numerico = "";
        for($i=$start; $i<=$end;$i++){ // 1; 1 <= fim; i++
            if($pagina_atual != $i){ // se a pagina atual não começar em 1, então será executado essa parte do código
                $link_numerico .= "<a href='inserir_dados.php?pg=" .$i. "'> [" . $i . "]</a>";
            }else{
                $link_numerico .= $i;// Se a pagina for = 1, então acrescentará, ao link numerico, a cada vez que entrar nessa condiçao, +1 pagina.
            }
        }
        echo "$link_anterior . '$nbsp;$nbsp;' . $link_numerico . '$nbsp;$nbsp;' . $link_posterior";
    ?>
    </td>
  </tr>
</table>
<br />
</body>
</html>

Testa ae e ve se deu certo, qualquer coisa poste o erro que aparecer.

Link para o comentário
Compartilhar em outros sites

  • 0

JaguA, arrumei diversos erros mas sobraram alguns ainda, que tentei arrumar antes de postar aki mas n deu...

são os seguintes:

Notice: Undefined index: pg in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 49

if (($_POST['pg'] != 0) && is_numeric($_POST['pg']))
Notice: Undefined variable: link_anterior in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 165
echo $link_anterior."  ".$link_numerico."  ".$link_posterior;

Eu ainda fico caduco com a utilização desse $_POST.. $_GET...$_REQUEST, n sei pra que serve e quando utilizar, alguém tenta responder além das perguntas acima estas tambem

Obrigado,

Otto.

Link para o comentário
Compartilhar em outros sites

  • 0

Otto N, beleza?

A utilização de $_POST, $_GET, etc, é o seguinte.

Essas funçoes serve para "transportar" dados.

Tipo assim:

$_POST serve para passar dados vindo de um formulario.$_GET, por exemplo, voce usa em links, tranportando dados pela URL, e declarando-as via GET, para mostras-las na outra página.

OBS: O MAIS seguro é o POST, pois passa os parametros de forma obscura.

Editado por lucke
Link para o comentário
Compartilhar em outros sites

  • 0
Otto N, beleza?

A utilização de $_POST, $_GET, etc, é o seguinte.

Essas funçoes serve para "transportar" dados.

Tipo assim:

$_POST serve para passar dados vindo de um formulario.$_GET, por exemplo, voce usa em links, tranportando dados pela URL, e declarando-as via GET, para mostras-las na outra página.

OBS: O MAIS seguro é o POST, pois passa os parametros de forma obscura.

Valeu por me tirar essa dúvida.

mas alguém ainda consegue saber qual a razão dos erros ocasionados no código?

Link para o comentário
Compartilhar em outros sites

  • 0

Aew galera, ainda estou com erros =/

Esses:

Notice: Undefined index: pg in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 49

if (($_POST['pg'] != 0) && is_numeric($_POST['pg']))

Notice: Undefined variable: link_anterior in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 165

Notice: Undefined variable: link_posterior in C:\xampp\htdocs\projetos\crud\inserir_dados.php on line 165

echo "$link_anterior . '&nbsp;&nbsp;' . $link_numerico . '&nbsp;&nbsp;' . $link_posterior";

Aguardando respostas, obrigado pela atenção de todos.

Otto.

Link para o comentário
Compartilhar em outros sites

  • 0
coloque no inicio da pagina $pg=0 pode ser pelo fato de você pedir somente numerico e como não atribuio nada a ela, então retorna o erro.

imaginava que fosse isso JaguA, mas como na video aula n falava nada n puz.

vou testar aqui e já respondo, obrigado de novo pela sua ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0
não deu certo cara =/

nem sei se eu fiz certo, eu coloquei $pg = 0; antes dos if`s e nada... :mellow:

não é antes dos If's

e sim no inicio da pagina, so 1 no inicio da pagina saijisjajias poem $pg = 1 não tem problema já que essa variavel é para trabalhar as paginas e tudo mais

logo no inicio do seu script deixei

<?php $pg = 1; ?>

depois vem todo o seu script conforme fez a correção anterior.

vou explicar minha logica...

você ta com um problema nessa linha

if (($_POST['pg'] != 0) && is_numeric($_POST['pg']))

bem is_numeric então somente numero ... em nenhum momento foi declarado uma variavel com numero no caso a variavel $pg estão null e em string por isso retorna erro.

não tenho certeza disso mas é so testa ae pra saber rsrs.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...