Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+SQL]Edytowanie postow
Forum PHP.pl > Forum > Przedszkole
marcio
Witam zdolalem zrobic juz usuwanie post'ow i jest ono nawet bezpieczne lecz teraz chce tez zrobic edycje.Wykombinowalem juz jakis kod lecz pierwszy raz to robiei post zamiast pokazywac forma z wartosciami ktore sa w bazie to jest pusty i wiadomosc sie tak jakby sama edytowala tzn jesli edytuje posta z nickiem marcio z trescia blablabla to pozostaje on pusty a po wypelnieniu forma zamiast edytowac tamten dodaje nowy a to kod:
  1. <?php
  2. switch ($_GET['action']) {
  3.  
  4. case 'usun':
  5.  
  6. $ask = ('delete from ksiega_gosci where id="'.(int)$_GET['id'].'" AND kod="'.addslashes($_GET['kod']).'"');
  7.  mysql_query($ask, $db) or die(mysql_error());
  8.  
  9. break;
  10.  
  11. case 'edytuj':
  12.  
  13. $ask1 = ('select * from ksiega_gosci where id="'.$_GET['id'].'"');
  14.  $ris = mysql_query($ask1, $db) or die(mysql_error());
  15.  
  16. while($qwe = mysql_fetch_assoc($ris)) {
  17.  
  18. $date = date('j/n/Y H:i:s');
  19.  $qwe['nick'] = $_POST['login'];
  20. $qwe['message'] = $_POST['msg'];
  21.  
  22. echo('<html>
  23. <head><meta http-equiv="content-type" charset="utf-8" /><title>GuEsT bY MARCIO</title>
  24. <style type="text/css">
  25. a {color:#FDEDF2}
  26. body {color:#FDEDF2}
  27. </style>
  28. <form method="post">
  29. <table valign="top" width="200" bgcolor="#4E4E68" align="center">
  30. <tr>
  31. <td>Podaj nick</td>
  32. <td><input type="text" name="nick" size="70" value="'.$login.'" style="background-color:#000000; color:#CCCCCC;"/></td>
  33. </tr>
  34. <tr>
  35. <td>Wiadomosc</td>
  36. <td><textarea name="message" rows="3" cols="70" style="background-color:#000000; color:#CCCCCC";>'.$msg.'</textarea></td></tr>
  37. <tr>
  38. <td align="center" valign="top"><INPUT TYPE=image VALUE=submit src="buttons.php" /></td></tr>
  39. </table>
  40. ');
  41.  
  42. $ask2 = ('update ksiega_gosci set nick="'.$login.'", message="'.$msg.'", data="'.$date.'" where id="'.$_GET['id'].'"');
  43.  mysql_query($ask2, $db) or die(mysql_error()); 
  44.  
  45. break;
  46.  }
  47. }
  48. ?>

Co robie zle? Moze wszystko biggrin.gif
Cysiaczek
Straszny bałagan...
  1. <?php
  2. $qwe['message'] = $_POST['msg']; // po wyciągnięci danych z bazy - treść znajduje się w tej zmiennej
  3. // a formularz masz:
  4. //color:#CCCCCC";>'.$msg.'</textarea>
  5. ?>

To było raz
Teraz dwa
Wywołujesz zapytanie
  1. <?php
  2. $ask2 = ('update ksiega_gosci set nick="'.$login.'", message="'.$msg.'", data="'.$date.'" where id="'.$_GET['id'].'"');
  3.  mysql_query($ask2, $db) or die(mysql_error());
  4. ?>


w tej samym żądaniu to chcesz wyświetlić formularz!
Dodaj jeszcze jeden case, który będzie tylko aktualizował dane w tabeli, a w edycji zostaw samo wyświetlanie formularza

Twój skrypt teraz robi, co następuje przy case 'edytuj'
1. Odczyt rekordu z bazy
2. Wyświetlenie formularza edycji
3. Update bazy danych (i to pustymi danymi, bo $msg jest np pusta)

Podsumowując:
Poprawiasz Zmienne tak, aby zawierały poprawne dane
Działania 1 i 2 zostają w case 'edytuj'
Działanie 3 przenosisz do innego case

Pozdrawiam.
marcio
ok tak zrobie tylko teraz zabardzo nie rozumiem,gdy wsadze z np w case 'aktualizuj': zapytanie aktualizajace to jak mam zrobic ze po nacisnieciu wyslij to sie z aktualizuje url ma tak wygladac?
najpierw form z edycja
  1. <?php
  2. www.localhost/qwe.php?strona=&action=edytuj&id=197&kod=sd2es2
  3. ?>

A przy aktualizacji tak?
  1. <?php
  2. www.localhost/qwe.php?strona=&action=edytuj&aktualizuj&id=197&kod=sd2es2
  3. ?>

Czy jak?
I mam jeszcze jeden problem gdy robie form do edycji to przy edytowaniu pokazuja sie 2 formy, ten normalny tzn ten do dodawania wiadomosci i pod spodem ten do edycji i teraz nie wiem jak usunac ten normalny zeby byl tylko 1 do edycji, a przeciez w switch'u mam tylko ten do edycji.pytam bo nigdy takiego czegos nie robilem

------------------------------------------------------------------------------------------------EDIT--------------------------------------------------------------------------------------------------------
Oki dostosowalem sie do twoich punktow i mam taki kod:
  1. <?php
  2. case 'edytuj':
  3.  
  4. $ask1 = ('select * from ksiega_gosci where id="'.$_GET['id'].'"');
  5.  $ris = mysql_query($ask1, $db) or die(mysql_error());
  6.  
  7. while($qwe = mysql_fetch_assoc($ris)) {
  8.  
  9. $date = date('j/n/Y H:i:s');
  10.  
  11. echo('<html>
  12. <head><meta http-equiv="content-type" charset="utf-8" /><title>GuEsT bY MARCIO</title>
  13. <style type="text/css">
  14. a {color:#FDEDF2}
  15. body {color:#FDEDF2}
  16. </style>
  17. <form method="post">
  18. <table valign="top" width="200" bgcolor="#4E4E68" align="center">
  19. <tr>
  20. <td>Podaj nick</td>
  21. <td><input type="text" name="nick" size="70" value="'.$qwe['nick'].'" style="background-color:#000000; color:#CCCCCC;"/></td>
  22. </tr>
  23. <tr>
  24. <td>Wiadomosc</td>
  25. <td><textarea name="message" rows="3" cols="70" style="background-color:#000000; color:#CCCCCC";>'.$qwe['message'].'</textarea></td></tr>
  26. <tr>
  27. <td align="center" valign="top"><INPUT TYPE=image VALUE=submit src="buttons.php" /></td></tr>
  28. </table>
  29. '); 
  30.  
  31. }
  32.  
  33. break;
  34.  
  35. case 'aktualizuj':
  36.  
  37. $nick = $_POST['nick'];
  38.  $message = $_POST['message'];
  39. $ask2 = ('update ksiega_gosci set nick="'.$nick.'", message="'.$message.'", data="'.$date.'" where id='.(int)$_GET['id'].' AND kod="'.addslashes($_GET['kod']).'"');
  40.  mysql_query($ask2, $db) or die(mysql_error()); 
  41.  
  42. break;
  43.  
  44. }
  45. ?>


I teraz 3 pytania
1) jak zrobic zeby nie bylo tego normalnego forma lecz tylko ten do edycji?Jesli jest potrzeba dam caly kod ale na cpaste po ma prawie 300lini
2)Czy jesli teraz kod jest dobry to nie wiem zabardzo jak zrobic zeby sie zaaktualizowal
3)Czy zamiast robic 2 case do edycji to nie moge zrobic 1 w ktorym dodam if'a co bedzie sprawdzac czy pole nick i message nie sa puste jesli nie sa to sie zaaktualizuje?

Edit2 teraz zmienilem kod i w formie edycji pokazuje sie juz wiadomosc lecz nadal post nie aktualizuje sie lecz sie dodane nowy
A tak wyglada link:
  1. <?php
  2. <a href="?strona='.$strona.'&action=edytuj&aktualizuj&id='.$tab['id'].'&kod='.$tab['kod'].'">edytuj</a></td>
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.