Ir para conteúdo

POWERED BY:

Arquivado

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

Icaru

Erro UPDATE PHP e MYSQL

Recommended Posts

Iae imasters, é o seguinte estou com um problema na hora de fazer uma atualização em um cadastro, ja na pagina de visualizar_usuarios.php sou informado de um certo erro, no caso este:

 

Notice: Undefined index: acao in C:\Program Files\EasyPHP-12.0\www\ProjCondominio\visualizar_usuarios.php on line 55

 

depois quando clico em EDITAR que no caso seria a ação=acao aparece outro erro eliminando o primeiro, que é este:

 

Notice: Undefined variable: linha in C:\Program Files\EasyPHP-12.0\www\ProjCondominio\visualizar_usuarios.php on line 58

 

Lembrando que permaneço com os dois erros mesmo um eliminando o outro !

 

Abaixo segue o script para analise, ja vou agradecendo toda a ajuda.

 

<!DOCTYPE html>
<html>
   <head>
       <title>Cadastrados</title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   </head>


   <body>
       <h2 style="font:20 Georgia, 'Times New Roman', Times, serif; text-align: center; font-weight: bold; color: #069">Usuarios Cadastrados</h1>

       <table width="700" align="center" border="0" cellpadding="0" cellspacing="3">

          <tr>
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>ID</strong></td>
              <td width="185" bgcolor="#D0D0D0" align="center"><strong>Nome</strong></td>
              <td width="130" bgcolor="#D0D0D0" align="center"><strong>Login</strong></td>
              <td width="134" bgcolor="#D0D0D0" align="center"><strong>Senha</strong></td>
              <td width="80" bgcolor="#D0D0D0" align="center">Editar</td>
              <td width="77" bgcolor="#D0D0D0" align="center">Excluir</td>             
          </tr>

   <?php
      include "config.php";

      $sql_ShowUser = mysql_query("SELECT * FROM login_session ORDER BY nome");
      while($line = mysql_fetch_array($sql_ShowUser)){

      $id    = $line['id'];
      $nome  = $line['nome'];
      $login = $line['login'];
      $senha = $line['senha'];
   ?>           
          <tr>
              <td align="center"><?php echo $id; ?></td>   
              <td align="center"><?php echo $nome; ?></td>
              <td align="center"><?php echo $login; ?></td>
              <td align="center"><?php echo $senha; ?></td>
              <td align="center"><a href="visualizar_usuarios.php?acao=editar&id=<?php echo $id; ?>">Editar</a></td>
              <td align="center"><a href="#">Excluir</a></td>        
          </tr>

   <?php
   }
   ?>     

       </table>

 </br>
 <hr>
 </br>

 <?php           

 if($_GET['acao'] == "editar"){
          $id = $_GET['id'];
          $sql_update = mysql_query("SELECT * FROM login_session WHERE id = '$id'");
           while($linha == mysql_fetch_array($sql_update)){
           $nome  = $linha['nome'];
           $login = $linha['login'];
           $senha = $linha['senha'];

       }
 ?>


 <h2 style="font:20 Georgia, 'Times New Roman', Times, serif; text-align: center; font-weight: bold; color: #F30">Atualizar Cadastro</h2>

    <form id="form1" name="form1" method="post" action="funcao.php?acao=editar&id=<?php echo $id; ?>">  
    <table width="700" align="center" border="1" cellpadding="0" cellspacing="3">
          <tr>
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Nome</strong></td>             
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Login</strong></td>             
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Senha</strong></td>             
          </tr>
          <tr>
              <td width="73" align="center"><input type="text" name="nome" id="nome" value="<?php echo $nome; ?>" size="30"></></td>
              <td width="73" align="center"><input type="text" name="login" id="login" value="<?php echo $login; ?>" size="30"></></td>             
              <td width="73" align="center"><input type="text" name="senha" id="senha" value="<?php echo $senha; ?>" size="30"></></td>             
          </tr>
          <tr>
              <td width="73" align="center"> </td>
              <td width="73" align="center"> </td>
              <td width="73" align="center"> <input type="submit" name="atualiza" id="bt" value="Atualizar"></td>             
          </tr>

    </table>
 <?php
   }
 ?>

   </form>
   </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos la

 

Notice: Undefined index: acao

Voce esta tentando acessar um indice que nao existe, como é por get, provavelmente na sua primeira pagina de visualizar, o parametro "acao" nao existe na url, por isso da erro. Quando voce clica em editar ai sim voce passa na url o parametro acao.

 

Notice: Undefined variable: linha

Praticamente a mesma coisa do erro acima, so que voce esta usando uma variavel que nao existe, exemplo:

echo $nome; // vai dar erro pois a variavel $nome nao foi declarada
$nome = 'MexicanoX';
echo $nome; //funcinoa sem problemas[/color]
[color="#2E3436"]

 

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro erro ocorre por que ainda não existe o action 'editar'.

Resolve-se assim:

//verifica se foi setada a acao e se acao =editar
if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
...
....

 

No while coloca somente '=' e não '=='

 

....
while($linha = mysql_fetch_array($sql_update)){
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro erro ocorre por que ainda não existe o action 'editar'.

Resolve-se assim:

//verifica se foi setada a acao e se acao =editar
if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
...
....

 

No while coloca somente '=' e não '=='

 

....
while($linha = mysql_fetch_array($sql_update)){
...

 

Então Marcos Xavier, segui sua solução e deu certo, sai tudo do jeito que tinha que sair aparece a pagina visualizar_usuarios sem erro, quando clico em Editar também não aparece erro nenhum, porém quando tento editar ainda não consigo atualizar nem na tela e nem no banco. Ja te agradeço por ajudar, valeu mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Não atualiza porque o sql está incorreto.

Pra editar (atualizar na tabela) o correto é update e não select.

Segue um exemplo:


UPDATE tabela SET nome-do-campo-pra-atualizar = 'novo conteudo' WHERE id = 1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Marcos Xavier, segui sua solução e deu certo, sai tudo do jeito que tinha que sair aparece a pagina visualizar_usuarios sem erro, quando clico em Editar também não aparece erro nenhum, porém quando tento editar ainda não consigo atualizar nem na tela e nem no banco. Ja te agradeço por ajudar, valeu mesmo.

 

 

 

Esta é minha função a qual faço referencia na action="":

 

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include"cofing.php";

  $nome  = $_POST['nome'];
  $login = $_POST['login'];
  $senha = $_POST['senha'];

  if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
     $id = $_GET['id'];
     $sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

     header('Location: visualizar_usuarios.php');
  } 
?>

 

Esta é minha função a qual faço referencia na action="":

 

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include"cofing.php";

  $nome  = $_POST['nome'];
  $login = $_POST['login'];
  $senha = $_POST['senha'];

  if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
     $id = $_GET['id'];
     $sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

     header('Location: visualizar_usuarios.php');
  } 
?>

 

Então os selects da pagina principal são 1.trazer os registros 2.trazer o registro que desejo alterar,

a função que é para alterar fiz em um arquivo separado como o script acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include"cofing.php";

  $nome  = $_POST['nome'];
  $login = $_POST['login'];
  $senha = $_POST['senha'];

$sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

...
  } 
?>

Lembrando de tratar as variaveis para não irem vazias.

 

Ps.

Esqueci de falar..

No form deixe apenas

 

<form id="form1" name="form1" method="post" action="funcao.php">  

E envie o id via input hidden

 

<input type="hidden" value='.$id.' name="id"  />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include"cofing.php";

  $nome  = $_POST['nome'];
  $login = $_POST['login'];
  $senha = $_POST['senha'];

$sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

...
  } 
?>

Lembrando de tratar as variaveis para não irem vazias.

 

Dessa forma não teve jeito, acontecendo tipo como se ele nem chamasse a funcao.php que é onde ta a função para alteração....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, agora ele chama a pagina funcao.php, quando era pra chamar a visualizar_usuarios.php para que fosse visualizado a alteração...

 

Quanto as ultimas instruções que você me deu ficaria desta forma ?

 


<form id="form1" name="form1" method="post" action="funcao.php">
     <input type="hidden" value='.$id.' name="id"/>  
    <table width="700" align="center" border="1" cellpadding="0" cellspacing="3"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse exemplo que te dei,tomei como base que

função.php fosse somente pra atualizar os dados.

 

Se esse arquivo realizar outras ações entao você deve

verificar o que está sendo recebido do formulario.

Então você podera verificar como abaixo.

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include"cofing.php";

if (isset($_POST['atualiza'])) &&  $_POST['atualiza']=="Atualizar"){

     $nome  = $_POST['nome'];
     $login = $_POST['login'];
     $senha = $_POST['senha'];

     $sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id   = '$id'");

  } 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pessoal fiz uma alteração no botão "Atualizar" do alterar isso ainda na pagina visualizar_usuarios, se notarem havia colocado desta forma:

 

<input type="submit" name="atualizar" id="bt" value="Atualizar">

 

com a alteração ficou desta maneira:

 

<input type="submit" name="atualizar" id="atualizar" value="Atualizar">

 

mas agora ao invés de exibir atualização Ex:

 

nome: carlos->editar->carlossilva->atualizar->nome: carlossilva, isso não ocorre. O que ocorre é

 

nome: carlos->editar->carlossilva->atualizar->nome, e onde deveria estar os dados são preenchidos por nome - login - senha, ou seja o nome dos inputs é que preenche os campos na hora de atualizar...

 

Isto lhe servira apenas como modo de lhe atualizar, pra você ver como estou tentando fazer a alteração:

 

pagina visualizar_usuarios.php

 

<!DOCTYPE html>
<html>
   <head>
       <title>Cadastrados</title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   </head>


   <body>
       <h2 style="font:20 Georgia, 'Times New Roman', Times, serif; text-align: center; font-weight: bold; color: #069">Usuarios Cadastrados</h1>

       <table width="700" align="center" border="0" cellpadding="0" cellspacing="3">

          <tr>
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>ID</strong></td>
              <td width="185" bgcolor="#D0D0D0" align="center"><strong>Nome</strong></td>
              <td width="130" bgcolor="#D0D0D0" align="center"><strong>Login</strong></td>
              <td width="134" bgcolor="#D0D0D0" align="center"><strong>Senha</strong></td>
              <td width="80" bgcolor="#D0D0D0" align="center">Editar</td>
              <td width="77" bgcolor="#D0D0D0" align="center">Excluir</td>             
          </tr>

   <?php
      include "config.php";

      $sql_ShowUser = mysql_query("SELECT * FROM login_session ORDER BY nome");
      while($line = mysql_fetch_array($sql_ShowUser)){

      $id    = $line['id'];
      $nome  = $line['nome'];
      $login = $line['login'];
      $senha = $line['senha'];
   ?>           
          <tr>
              <td align="center"><?php echo $id; ?></td>   
              <td align="center"><?php echo $nome; ?></td>
              <td align="center"><?php echo $login; ?></td>
              <td align="center"><?php echo $senha; ?></td>
              <td align="center"><a href="visualizar_usuarios.php?acao=editar&id=<?php echo $id; ?>">Editar</a></td>
              <td align="center"><a href="#">Excluir</a></td>        
          </tr>

   <?php
   }
   ?>     

       </table>

 </br>
 <hr>
 </br>

 <?php           

 if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
          $id = $_GET['id'];
          $sql_update = mysql_query("SELECT * FROM login_session WHERE id = '$id'");
           while($linha = mysql_fetch_array($sql_update)){
           $nome  = $linha['nome'];
           $login = $linha['login'];
           $senha = $linha['senha'];

       }
 ?>


 <h2 style="font:20 Georgia, 'Times New Roman', Times, serif; text-align: center; font-weight: bold; color: #F30">Atualizar Cadastro</h2>

    <form id="form1" name="form1" method="post" action="funcao.php?acao=editar&id=<?php echo $id; ?>">  
    <table width="700" align="center" border="1" cellpadding="0" cellspacing="3">
          <tr>
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Nome</strong></td>             
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Login</strong></td>             
              <td width="73" bgcolor="#D0D0D0" align="center"><strong>Senha</strong></td>             
          </tr>
          <tr>
              <td width="73" align="center"><input type="text" name="nome" id="nome" value="<?php echo $nome; ?>" size="30"></></td>
              <td width="73" align="center"><input type="text" name="login" id="login" value="<?php echo $login; ?>" size="30"></></td>             
              <td width="73" align="center"><input type="text" name="senha" id="senha" value="<?php echo $senha; ?>" size="30"></></td>             
          </tr>
          <tr>
              <td width="73" align="center"> </td>
              <td width="73" align="center"> </td>
              <td width="73" align="center"> <input type="submit" name="atualizar" id="atualizar" value="Atualizar"/></td>             
          </tr>

    </table>
 <?php
   }
 ?>

   </form>
   </body>
</html>

 

 

funcao.php

 

<?php
//FUNCAO PARA ATUALIZAR DADOS
  include "config.php";

  $nome  = $_POST['nome'];
  $login = $_POST['login'];
  $senha = $_POST['senha'];

  if(isset($_GET['acao']) && $_GET['acao'] == "editar"){
     $id = $_GET['id'];

     $sql_alterar = mysql_query("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

     header('Location: visualizar_usuarios.php');
  } 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entra diretamento no tabela e vai perceber que os dados estão

nome,login,senha.

Porque você setou errado no update

("UPDATE login_session SET nome = 'nome', login = 'login', senha = 'senha' WHERE id = '$id'");

Substitua:

- nome por $nome;

- login por $login;

- senha por $senha

Compartilhar este post


Link para o post
Compartilhar em outros sites
Rá perfeito como nunca, funcionou direitinho Marcos Xavier...Valeuzão cara!

Bom contar com um Imasters..

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.