Oskitz 0 Denunciar post Postado Junho 27, 2009 Boa tarde Pessoal É assim eu tenho um codigo para actualizar textos em bases de dados.. No form, existe uma lista que mostra todos os campos do "link" de uma tabela e depois em baixo tenho para alterar o Link, o Titulo, a Categoria e a Descrição. O que acontece é que eu selecciono o link na lista em que quero fazer as alterações e consigo fazer a alteração a todos os campos, menos ao campo Link. O codigo é este: Ficheiro actualizar1.php <HTML> <HEAD> <TITLE>Actualizar1.php</TITLE> </HEAD> <BODY> <div align="center"> <h1>Actualizar um registo</h1><br> <? //Conexão à base mysql_connect("localhost","******","******"); echo '<FORM METHOD="POST" ACTION="actualizar2.php">Link<br>'; //Criamos a sentença SQL e executamo-la $sSQL="Select Link From link Order By Link"; $result=mysql_db_query("teste",$sSQL); echo '<select name="Link">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Link"]; } ?> </select><br>Link<br><INPUT TYPE="TEXT" NAME="telefone"> <br>Titulo<br><INPUT TYPE="TEXT" NAME="Titulo"> <br>Categoria<br><INPUT TYPE="TEXT" NAME="Categoria"> <br>Descricao<br><INPUT TYPE="TEXT" NAME="Descricao"> <br> <INPUT TYPE="SUBMIT" value="Actualizar!"> </FORM> </div> </BODY> </HTML> Ficheiro actualizar2.php <HTML> <HEAD> <TITLE>Actualizar2.php</TITLE> </HEAD> <BODY> <? $Link = $_POST["Link"]; $Titulo = $_POST["Titulo"]; $Categoria = $_POST["Categoria"]; $Descricao = $_POST["Descricao"]; //Conexão com a base mysql_connect("localhost","******","******"); //Criamos a sentença SQL e executamo-la $sSQL="Update link Set Link='$Link',Titulo='$Titulo',Categoria='$Categoria',Descricao='$Descricao' Where Link='$Link'"; mysql_db_query("teste",$sSQL); ?> <h1> <div align="center">Registro Actualizado</div> </h1><div align="center"> <a href="leitura.php">Visualizar o conteúdo da base</a></div> </BODY> </HTML> Espero que me consigam ajudar pessoal cumps http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Junho 27, 2009 </select><br>Link<br><INPUT TYPE="TEXT" NAME="telefone"> Olhe pro nome do campo que supostamente seria o link... esta como "telefone"... No PHP você tá pegando o $_POST["Link"], mas isso não existe no seu código... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Mas estranhamente, retirando o "telefone" ( que não está la a fazer nada) e acrescentando "Link"(que é como está certo), não consigo modificar nenhum dos campos... Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Ja meti "link" (com o "L" minusculo e resultou) mas continua a não modificar o campo Link... Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 27, 2009 Troca isso: $sSQL="Update link Set Link='$Link',Titulo='$Titulo',Categoria='$Categoria',Descricao='$Descricao' Where Link='$Link'"; mysql_db_query("teste",$sSQL); Por isso: $sSQL = "UPDATE `link` SET Link = '{$Link}', Titulo = '{$Titulo}', Categoria = '{$Categoria}', Descricao = '{$Descricao}' WHERE Link = '{$Link}'"; mysql_query($sSQL); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 27, 2009 O problema está na formatação do option. echo '<select name="Link">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Link"];// aqui. } ?> Teria que ficar mais ou menos assim echo '<select name="Link">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option value="'.$row['Link'].'">'.$row["Link"].'</option>'; } ?> Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Nenhuma das 2 opções resultou :mellow: O campo Link continua a não ser modificado.. Ninguem tem mais soluções? Eu na base de dados, tenho o ID_Link como chave primária e auto_increment.. Isso não poderá ter nada a ver? Nao tenho que fazer nada no campo Link? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 27, 2009 Faz assim... No actualizar2.php, você inclui este código para efeitos de debug antes de tudo. echo '<pre>'; print_r($_POST); Vai exibir tudo que veio do formulário. Confira se os nomes estão corretos e se as informações que deveriam ser gravadas estão corretas também. Se mesmo assim não achar o erro, faz assim: $sSQL="Update link Set Link='$Link',Titulo='$Titulo',Categoria='$Categoria',Descricao='$Descricao' Where Link='$Link'"; echo $sSQL; mysql_db_query("teste",$sSQL) or die(mysql_error()); Veja o que ocorre. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 O resultado que deu foi o seguinte: Array ( [Link] => www.teste.ph [link] => www.teste.com [Titulo] => teste1 [Categoria] => teste2 [Descricao] => teste3 ) Ou seja, o "www.teste.ph" foi o que eu escolhi na lista, depois modifiquei o link para www.teste.com e o restante está certo.. Só que na base de dados, so fica guardado o Titulo, a Categoria e a Descrição http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Tento adicionar o codigo que me deste? Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Pessoal ninguem faz ideia do que possa estar mal? :unsure: Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 27, 2009 Poste os códigos exatamente como eles estão agora. Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Ficheiro actualizar1.php <HTML> <HEAD> <TITLE>Actualizar1.php</TITLE> </HEAD> <BODY> <div align="center"> <h1>Actualizar um registo</h1><br> <? //Conexão à base mysql_connect("localhost","******","******"); echo '<FORM METHOD="POST" ACTION="actualizar2.php">Link<br>'; //Criamos a sentença SQL e executamo-la $sSQL="Select Link From link Order By Link"; $result=mysql_db_query("teste",$sSQL); echo '<select name="Link">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Link"]; } ?> </select> <br>Link<br><INPUT TYPE="TEXT" NAME="link"> <br>Titulo<br><INPUT TYPE="TEXT" NAME="Titulo"> <br>Categoria<br><INPUT TYPE="TEXT" NAME="Categoria"> <br>Descricao<br><INPUT TYPE="TEXT" NAME="Descricao"> <br> <INPUT TYPE="SUBMIT" value="Actualizar!"> </FORM> </div> </BODY> </HTML> Ficheiro actualizar2.php <HTML> <HEAD> <TITLE>Actualizar2.php</TITLE> </HEAD> <BODY> <? //echo '<pre>'; //print_r($_POST); $Link = $_POST["Link"]; $Titulo = $_POST["Titulo"]; $Categoria = $_POST["Categoria"]; $Descricao = $_POST["Descricao"]; //Conexão com a base mysql_connect("localhost","******","******"); //Criamos a sentença SQL e executamo-la $sSQL="Update link Set Link='$Link',Titulo='$Titulo',Categoria='$Categoria',Descricao='$Descricao' Where Link='$Link'"; mysql_db_query("teste",$sSQL); ?> <h1> <div align="center">Registro Actualizado</div> </h1><div align="center"> <a href="leitura.php">Visualizar o conteúdo da base</a></div> </BODY> </HTML> Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 27, 2009 Aqui esta errado: while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Link"]; } E o matias_rezende ja postou como resolver. Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 27, 2009 Eu tambem ja experimentei dessa forma e não dá na mesma http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 27, 2009 Porque alem deste, existe outro problema. Pode ser na hora que você pega os dados vindo do formulário. Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 28, 2009 Pois.. E não tens mais nenhuma ideia do que possa ter que alterar para funcionar? É que consigo modificar todos os campos menos o campo link.. O problema tambem não será por a tabela chamar-se link e haver um campo Link? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 28, 2009 Além do problema que eu e o André já falamos, creio que existe um outro problema. Veja que no seu UPDATE você usa como cláusula o campo link. Na minha visão o correto seria usar o ID na tabela. Mas assim como está vai funcionar... Veja que você tem 2 links (ou pelo menos deveria ter) ( [Link] => www.teste.ph [link] => www.teste.com [Titulo] => teste1 [Categoria] => teste2 [Descricao] => teste3 ) Qual deles é a cláusula? Para resolver, sugiro fazer assim $sSQL="Select id, Link From link Order By Link";// onde id é a chave primária auto-increment da sua tabela. Troque o nome para a forma correta. echo '<select name="id">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row["Link"].'</option>'; } ?> Na outra página você coloca assim $id = $_POST['id'] $Link = $_POST["link"]; $Titulo = $_POST["Titulo"]; $Categoria = $_POST["Categoria"]; $Descricao = $_POST["Descricao"]; //Conexão com a base mysql_connect("localhost","******","******"); //Criamos a sentença SQL e executamo-la $sSQL="Update link Set Link='$Link',Titulo='$Titulo',Categoria='$Categoria',Descricao='$Descricao' Where id='$id'"; Não esqueça de verificar o nome do campo auto-increment. Coloquei como id. Troque para o seu. Qualquer coisa, posta novamente. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 29, 2009 Dessa maneira não funciona, porque no forn, na lista onde deveria aparecer os links que tenho na base de dados, não aparece nada.. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 29, 2009 Coloque isto e veja o que retorna. <HTML> <HEAD> <TITLE>Actualizar1.php</TITLE> </HEAD> <BODY> <div align="center"> <h1>Actualizar um registo</h1><br> <? //Conexão à base mysql_connect("localhost","******","******"); echo '<FORM METHOD="POST" ACTION="actualizar2.php">Link<br>'; //Criamos a sentença SQL e executamo-la $sSQL="Select id, Link From link Order By Link";// onde id é a chave primária auto-increment da sua tabela. Troque o nome para a forma correta. $result=mysql_db_query("teste",$sSQL) or die(mysql_error()); echo '<select name="Link">'; //Geramos o menu dinâmico while ($row=mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row["Link"].'</option>'; } ?> </select> <br>Link<br><INPUT TYPE="TEXT" NAME="link"> <br>Titulo<br><INPUT TYPE="TEXT" NAME="Titulo"> <br>Categoria<br><INPUT TYPE="TEXT" NAME="Categoria"> <br>Descricao<br><INPUT TYPE="TEXT" NAME="Descricao"> <br> <INPUT TYPE="SUBMIT" value="Actualizar!"> </FORM> </div> </BODY> </HTML> Veja se agora aparece. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Oskitz 0 Denunciar post Postado Junho 29, 2009 Muito obrigado a todos os que me ajudaram, mas ja consegui resolver o problema :rolleyes: Estáva dificil, mas ja está resolvido! Abraço a todos http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites