Icaru 0 Denunciar post Postado Agosto 25, 2012 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
mexicanox 7 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 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
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 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
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 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
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Gabriel Jacinto 74 Denunciar post Postado Agosto 25, 2012 Da uma lida aqui: :seta: http://www.w3schools.com/php/php_mysql_update.asp Compartilhar este post Link para o post Compartilhar em outros sites
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 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
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 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
Icaru 0 Denunciar post Postado Agosto 25, 2012 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
Marcos Xavier 189 Denunciar post Postado Agosto 25, 2012 Tamoae pra isso. Compartilhar este post Link para o post Compartilhar em outros sites