ferpalma 0 Denunciar post Postado Agosto 23, 2010 Boa tarde, estou com o seguinte problema estou fazendo um cadastro PHP e MySQL. O visualizar e o excluir funcionam perfeitamente mas o alterar não consigo salvar as mudanças no banco... alguem pode me ajudar? Eis os códigos: visualizar_locais.php (funcionando) <?php session_start(); ?> <html> <head> <u></u><title>Visualização de Locais necessitados</title> </head> <body> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="820" height="3" colspan="3" style="background-color: #000080"> </td> </tr> <tr> <td width="100" bgcolor="#0000FF" valign="top"> <br><br> <a href="principal.php"> <img src="imagens/principal.jpg" width="90" height="36"></a> <br><br> <a href="veiculos.php"> <img src="imagens/veiculos.jpg" width="90" height="36"></a> <br><br> <a href="locais.php"> <img src="imagens/locais.jpg" width="90" height="36"></a> <br><br> <a href="atendimento0.php"> <img src="imagens/atendimento.jpg" width="90" height="36"></a> <br><br> <a href="index.php"> <img src="imagens/sair.jpg" width="90" height="36"></a> <br><br> </td> <td width="700" align="top"> <p align="center"><br><br><br> Os <font size="4">LOCAIS</font> necessitados neste momento são:</font></p> <?php include ("conectar.php"); //conecta com o bd $visualizar = mysql_query("SELECT * FROM locais") or die("erro ao selecionar"); $resultado = mysql_query($visualizar); $linha = mysql_num_rows ($visualizar); mysql_query($visualizar); echo "<table border='1' width='100%'><tr><td><b>Código</b></td><td><b>Nome</b></td><td><b>Importância</b></td><td><b>Qtde_clientes</b></td>"; echo "<td><b>Latitude</b></td><td><b>Longitude</b></td><td><b>Necessidade</b></td><td><b>Tempo_restabelecimento</b><td><b>Status</b></td></td></tr>"; while ($linha = mysql_fetch_array ($visualizar)){ echo "<tr><td>{$linha['codigo']}</td>"; echo "<td>{$linha['nome']}</td>"; echo "<td>{$linha['importancia']}</td>"; echo "<td>{$linha['qtde_clientes']}</td>"; echo "<td>{$linha['latitude']}</td>"; echo "<td>{$linha['longitude']}</td>"; echo "<td>{$linha['necessidade']}</td>"; echo "<td>{$linha['tempo_restabel']}</td>"; echo "<td>{$linha['status']}</td></tr></br>"; } echo "</table>"; ?> <form action="alterar_locais.php" name="alterar_locais" method="post"> <p align="center"><br> Caso deseje <font size="4"> ALTERAR</font> algum dos locais listados acima, digite seu Código abaixo:</p> <div align="center"><center> <input type="text" name="codigo" size="5"><br><br> <input type="submit" value="Alterar Local"><br> </form> <form action="excluir_locais.php" name="excluir_locais" method="post"> <p align="center"><br> Caso deseje <font size="4"> EXCLUIR</font> algum dos locais listados acima, digite seu Código abaixo:</p> <div align="center"><center> <input type="text" name="codigo" size="5"><br><br> <input type="submit" value="Excluir Local"><br> </form> </p> <form action="locais.php" name="principal" method="post"> <p align="center"><br> Caso esteja satisfeito com os locais listados acima retorne à página anterior <a href=locais.php>Clicando aqui</a></p> </form> <div align="left"><left> <tr> <td width="820" bgcolor="#000099" colspan="3"> <p align="center"><font color="#FFFFFF"><i>SIGGENELM</i></font></td></tr> </table> </body> </html> excluir.php (funcionando) <?php $erro=0; include ("conectar.php");//conexão com o db $codigo = $_POST['codigo']; $confere = mysql_query ("SELECT * FROM locais WHERE (codigo = '".$codigo."')") or die(mysql_error()); $linhas = mysql_num_rows($confere); if ((empty ($codigo)) || ($linhas == 0)){ echo "Sua exclusão não foi efetuada devido a um desses fatores:<br>"; echo "O sistema não possui locais cadastrados no momento.<br>";$erro=1; echo "Você deve digitar um número de código para realizar a exclusão.<br>";$erro=1; echo "Você deve digitar somente números de códigos que aparecem na visualização!<br>";$erro=1; echo "<a href=visualizar_locais.php>Tente novamente!</a>"; } else{ $excluir = mysql_query ("DELETE FROM locais WHERE (codigo = '".$codigo."')") or die(mysql_error()); if($excluir) echo "Exclusão de local realizada com sucesso!"; echo "<form action=visualizar_locais.php name=principal method=post>"; echo "<input type=submit value=Visualizar Locais>"; echo "</form>"; } ?> alterar_locais.php (funcionando) <?php session_start(); ?> <html> <head> <u></u><title>Alteração de Locais </title> </head> <body> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="820" height="3" colspan="3" style="background-color: #000080"> </td> </tr> <tr> <td width="100" bgcolor="#0000FF" valign="top"> <br><br> <a href="principal.php"> <img src="imagens/principal.jpg" width="90" height="36"></a> <br><br> <a href="veiculos.php"> <img src="imagens/veiculos.jpg" width="90" height="36"></a> <br><br> <a href="locais.php"> <img src="imagens/locais.jpg" width="90" height="36"></a> <br><br> <a href="atendimento0.php"> <img src="imagens/atendimento.jpg" width="90" height="36"></a> <br><br> <a href="index.php"> <img src="imagens/sair.jpg" width="90" height="36"></a> <br><br> </td> <td width="700" align="top"> <p align="center"><br><br><br> De acordo com o código escolhido o <font size="4">LOCAL</font> para ser alterado é:</font></p> <?php include ("conectar.php"); //conecta com o bd $codigo = $_POST['codigo']; $visualizar = mysql_query("SELECT * FROM locais WHERE (codigo = '".$codigo."')") or die("erro ao selecionar"); $resultado = mysql_query($visualizar); $linha = mysql_num_rows ($visualizar); mysql_query($visualizar); echo "<table border='1' width='100%'><tr><td><b>Código</b></td><td><b>Nome</b></td><td><b>Importância</b></td>"; echo "<td><b>Status</b></td></td></tr>"; while ($linha = mysql_fetch_array ($visualizar)){ echo "<tr><td>{$linha['codigo']}</td>"; echo "<td>{$linha['nome']} </td>"; echo "<td>{$linha['importancia']}</td>"; echo "<td><input type=text name=status size=2 value={$linha['status']}></td></tr></br>"; } echo "</table>"; //$sql = "UPDATE locais" SET .$_POST['status']. WHERE status = .$_POST['novo_status'].; ?> <br> <form action="alterar_locais1.php" name="principal" method="post"> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> <form action="visualizar_locais.php" name="principal" method="post"> <p align="center"><br> Caso <b>NÃO</b> queira alterar o local listado acima retorne à página anterior <a href=visualizar_locais.php>Clicando aqui</a></p> </form> <div align="left"><left> <tr> ?> <td width="820" bgcolor="#000099" colspan="3"> <p align="center"><font color="#FFFFFF"><i>SIGGENELM</i></font></td></tr> </table> </body> </html> alterar_locais1.php (problema, o status que eu quero mudar de 1 para 0, essa alteração NÃO é salva) <?php $erro=0; include ("conectar.php");//conexão com o db $visualizar = mysql_query("SELECT * FROM locais ") or die("erro ao selecionar"); $resultado = mysql_query($visualizar); $linha = mysql_num_rows ($visualizar); mysql_query($visualizar); if ((empty ($status)) || ($linhas == 0)){ echo "Sua alteração não foi efetuada devido a um desses fatores:<br>"; echo "Você não pode deixar o campo em branco.<br>";$erro=1; echo "Você deve digitar somente números!<br>";$erro=1; echo "<a href=visualizar_locais.php>Tente novamente!</a>"; } else{ $alterar = mysql_query ("UPDATE locais SET ($ status = '".$status."') ") or die(mysql_error()); if($alterar) echo "Alteração de local realizada com sucesso!"; echo "<form action=visualizar_locais.php name=principal method=post>"; echo "<input type=submit value=Visualizar Locais>"; echo "</form>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Douglas Fabiano 0 Denunciar post Postado Agosto 23, 2010 Tira um print da tela ou posta o erro que aparece no UPDATE!... Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Agosto 23, 2010 Boa tarde, Amigo!!!!! Vamos ao que interessa: $visualizar = mysql_query("SELECT * FROM locais ") or die("erro ao selecionar"); $resultado = mysql_query($visualizar); $linha = mysql_num_rows ($visualizar); mysql_query($visualizar); 1º linha: Não sei se tua intenção é mesmo modificar todas as linhas da tabela "locais", mas se não for, você deve incluir um WHERE nessa tua Query, para trazer filtrado o resultado para só pra quem você quer alterar. 2º linha: Não entendi porque você executou o mysql_query com um resultado do mysql_query, se existe essa pratica, desconheço, pra que serve? 4º linha: você executou de novo o mysql_query com um resultado do mysql_query. if ((empty ($status)) || ($linhas == 0)){ echo "Sua alteração não foi efetuada devido a um desses fatores: "; echo "Você não pode deixar o campo em branco. ";$erro=1; echo "Você deve digitar somente números! ";$erro=1; echo "<a href=visualizar_locais.php>Tente novamente!</a>"; } Você verifica se a variável $status esta vazia, mas não vi ele sendo preenchida em nenhum lugar, ao meu ver, ele estará sempre vazia (se eu estiver errado me corrige por favor, só analisei a parte do alterar). else{ $alterar = mysql_query ("UPDATE locais SET ($ status = '".$status."') ") or die(mysql_error()); if($alterar) echo "Alteração de local realizada com sucesso!"; echo "<form action=visualizar_locais.php name=principal method=post>"; echo "<input type=submit value=Visualizar Locais>"; echo "</form>"; } Mais uma vez a sua Query está sem WHERE, mas se sua intenção é alterar todos os campos da tabela, então está certo. Depois do "if($alterar)" você não coloca "{", logo, essas linhas abaixo irão aparecer sempre se a query for executada: echo "Alteração de local realizada com sucesso!"; echo "<form action=visualizar_locais.php name=principal method=post>"; echo "<input type=submit value=Visualizar Locais>"; echo "</form>"; Creio que seu problema seja de lógica e de sintaxe também, da uma verificada legal e depois diz ae se funcionou. Espero ter ajudado, Ate mais!!! Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 23, 2010 Os erros que estão ocorrendo são: Notice: Undefined index: status in C:\ms4w\Apache\htdocs\siggenelm\alterar_locais1.php on line 6 Notice: Undefined variable: codigo in C:\ms4w\Apache\htdocs\siggenelm\alterar_locais1.php on line 13 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(codigo = '')' at line 1 Eu quero exibir 4 campos (codigo, nome, importancia e status), mas so deixar para alterar o status, de 1(apto) 0 (inapto) Os erros que estão ocorrendo são: Notice: Undefined index: status in C:\ms4w\Apache\htdocs\siggenelm\alterar_locais1.php on line 6 Notice: Undefined variable: codigo in C:\ms4w\Apache\htdocs\siggenelm\alterar_locais1.php on line 13 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(codigo = '')' at line 1 Eu quero exibir 4 campos (codigo, nome, importancia e status), mas so deixar para alterar o status, de 1(apto) 0 (inapto) Caro Julihermes Carlos, você disse: Você verifica se a variável $status esta vazia, mas não vi ele sendo preenchida em nenhum lugar, ao meu ver, ele estará sempre vazia (se eu estiver errado me corrige por favor, só analisei a parte do alterar). Minha intenção foi no alterar_locais.php mostrar a linha escolhida no visualizar_locais.php para alteração. Até ai funciona, o problema é que a linha escolhida (qualquer que seja) quando eu altero o status (de 1 para 0) não é salva as alteração no campo status no banco. Dando erros como os de acima citados. while ($linha = mysql_fetch_array ($visualizar)){ echo "<tr><td>{$linha['codigo']}</td>"; echo "<td>{$linha['nome']} </td>"; echo "<td>{$linha['importancia']}</td>"; echo "<td><input type=text name=status size=2 value={$linha['status']}></td></tr></br>"; } echo "</table>"; ?> <br> <form action="alterar_locais1.php" name="principal" method="post"> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> A partir da linha 5 acima (onde o banco mostra o registro com o status 1 permitindo que seja alterado) é que deve estar acho eu o problema todo... Quando eu clico em Confirmar Alteração é que a alteração não é efetuada... Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Agosto 23, 2010 O erro já diz qual é o problema pra você. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(codigo = '')' at line 1 Você está gerando uma Query com sintaxe errada. Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 23, 2010 O erro já diz qual é o problema pra você. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(codigo = '')' at line 1 Você está gerando uma Query com sintaxe errada. Tudo bem...mas como conserto? Sou novato em php... Por favor, veja meus outros posts abaixo do seu primeiro que tento explicar melhor o meu problema desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Agosto 23, 2010 Eu vou pra faculdade agora, mas quando eu chegar eu dou uma olhada mais detalhada nesses códigos e te dou uma resposta. Se não te responder hoje, te respondo amanhã!!!! Valeu!!!! Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 23, 2010 Eu vou pra faculdade agora, mas quando eu chegar eu dou uma olhada mais detalhada nesses códigos e te dou uma resposta. Se não te responder hoje, te respondo amanhã!!!! Valeu!!!! Muito obrigado amigo! Seria ótimo eu acabar isso hoje (já abusando da sua ajuda...) Não pretendo dormir cedo (ou nem durma hj) Fico no aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Agosto 25, 2010 Esta muito difícil para eu simular todo o ambiente que você fez. não tenho a base para poder simular aqui. Mas eu continuou intrigado com uma variável, a $status. Eu ainda não consegui verificar onde você carrega ela. E tem outra coisa: $alterar = mysql_query ("UPDATE locais SET ($ status = '".$status."') ") or die(mysql_error()); Onde está em negrito, você da um espaço em "$ status", vai da um erro aqui. E se você corrigir esse erro (Juntar, ou seja "$status"), vai ficar $status = '".$status."', não vai mudar nada. Acho que é sem esse "$" ,onde o campo status recebe a variável $status, não posso confirmar porque não sei como está sua tabela no DB. Mas é isso ai, da uma verificada nisso que eu falei acima e depois informa no que deu. Desculpa a demora, estou meio sem tempo. Quero tanto corrigir esse erro quanto você. Até mais!! Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 26, 2010 Muito obrigado por querer resolver amigo! Essa variável é carregada (trazida) do banco no visualizar_locais.php, só que essa é a unica que eu quero que o usuário possa alterar (normalmente é 1 , ativo ou 0 inativo) o default é 1, ai eu mudo pra 0 .... Isso que não é salvo no banco...essa mudança entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Conrado C. 0 Denunciar post Postado Agosto 26, 2010 <form action="alterar_locais1.php" name="principal" method="post"> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> O form que envia pro alterar_locais1.php(que vou chamar de AL1) não está enviando NADA pra página, está funcionando como um link praticamente. Se você tinha a intenção de enviar o $status para o AL1, você deveria ter colocado um input dentro desse form, mas lembre-se de definer o campo "name" para que você possa recuperar esse dado com o $_POST['nome_do_campo'] onde o nome_do_campo é o name definido no form. IMPORTANTE: Tente deixar suas query MySQL limpas e defina um WHERE nela, por que se não você vai mudar o status de TODOS os registros. $alterar = mysql_query(" UPDATE locais SET `status`='$status' WHERE `nome`=$nome ") or die(mysql_error()); onde $status e $nome você teria que definir Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Agosto 26, 2010 É por isso que eu estava intrigado com a variável $status. Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 27, 2010 <form action="alterar_locais1.php" name="principal" method="post"> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> O form que envia pro alterar_locais1.php(que vou chamar de AL1) não está enviando NADA pra página, está funcionando como um link praticamente. Se você tinha a intenção de enviar o $status para o AL1, você deveria ter colocado um input dentro desse form, mas lembre-se de definer o campo "name" para que você possa recuperar esse dado com o $_POST['nome_do_campo'] onde o nome_do_campo é o name definido no form. IMPORTANTE: Tente deixar suas query MySQL limpas e defina um WHERE nela, por que se não você vai mudar o status de TODOS os registros. $alterar = mysql_query(" UPDATE locais SET `status`='$status' WHERE `nome`=$nome ") or die(mysql_error()); onde $status e $nome você teria que definir Eu fiz o que você falou mas continua sem atualizar O novo form ficou: <form action="alterar_locais1.php" name="alterar_locais1" method="post"> <input type="hidden" name="status" size="2" value="status"> <input type="hidden" name="codigo" size="2" value="codigo"> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> estou passando o codigo pq é a chave primária, e no excluir (que funciona perfeitamente) é o que eu uso... $alterar = mysql_query(" UPDATE locais SET status='".$status."' WHERE codigo='".$nome."' ") or die(mysql_error()); Uma coisa que desapareceu pelo input que você disse foi que agora ele não chia que nao foram definidas as variáveis mas ele chega no $alterar e não altera nada... acho que agora o problema é no update... Essa sintaxe com " e ' nas variáveis são as que utilizo nos outros como excluir, visualizar... Compartilhar este post Link para o post Compartilhar em outros sites
ferpalma 0 Denunciar post Postado Agosto 27, 2010 Funcionou!!!!!!!!!!!!!!!!!!!!!!!!!! Fiz umas alterações na sua sugestão, Conrado. Vou fazer as críticas das telas e qualquer coisa posto aqui. Desde já obrigado amigo, e a você também Julihermes! <form action="alterar_locais1.php" name="alterar_locais1" method="post"> <p align="center"> Confirme o status e o código do local a ser alterado abaixo</p><br> <div align="center"><center> Status: <input type="text" name="status" size="2" value=<?php $status?>><br> <div align="center"><center> Código: <input type="text" name="codigo" size="2" value=<?php $codigo?>><br><br><br> <div align="center"><center> <input type="submit" value="Confirmar Alteração"><br> </form> <form action="visualizar_locais.php" name="principal" method="post"> <p align="center"><br> Caso <b>NÃO</b> queira alterar o local listado acima retorne à página anterior <a href=visualizar_locais.php>Clicando aqui</a></p> </form> <div align="left"><left> <tr> ?> Que a moderação apague meus 2 posts acima pq acabaram repetidos desse aqui, e não sei se posso apagar os posts eu mesmo...ai pra não haver poluição visual na tela substitui os 2 pelos numeros 1 e 2 respectivamente. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites