Jump to content
Fórum Script Brasil
  • 0

Erro com $_POST[] e outros


Otto N.

Question

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

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by lucke
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...