Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem ze skryptem
-ToAr-
post 28.07.2006, 22:38:22
Post #1





Goście







Witam, chciałem utworzyć sobie skrypt edytujący wiersze w tabeli bazy danych, ale coś nie chce działać. Mam nadzieję, że mi pomożecie

oto kod:

  1. <?php
  2.  
  3.  
  4. function lista_projektow() {
  5. echo"<h2>Lista projektów</h2><br><br>";
  6. $wynik1 = mysql_query("SELECT * FROM projekty ORDER BY id");
  7. if ($wynik1) {
  8. while ($row = mysql_fetch_array($wynik1)) {
  9. $id = intval($row['id']);
  10. $tytul = $row['tytul'];
  11. echo"<li> $id - $tytul - <a href="admin.php?id=projekty&op=edytuj_projekt&id=$id">Edytuj</a>";
  12. }
  13. } else {
  14. echo"Brak aktywnych projektów";
  15. }
  16. }
  17.  
  18. function edytuj_projekt($id) {
  19. $id = intval($id);
  20. echo"ID: $id";
  21. echo"<h2>Edytuj projekt</h2><br><br>";
  22. $wynik3 = mysql_query("SELECT * FROM projekty WHERE id='$id'");
  23. $row = mysql_fetch_array($wynik3);
  24. $tytul = $row['tytul'];
  25. echo"<form action="admin.php?id=projekty" method="post">"
  26. ."<b>Tytuł projektu: </b>"
  27. ."<input type="text" name="tytul" value="$tytul" size="50"><br><br>"
  28. ."<input type="hidden" name="op" value="update_projekt">"
  29. ."<input type="submit" value="Edytuj">"
  30. ."</form>";
  31.  
  32. }
  33.  
  34. function update_projekt($id, $tytul) {
  35.  
  36. $id = intval($id);
  37. $wynik2 = mysql_query("update projekty set tytul='tytul' where id='$id'");
  38. if ($wynik2) {
  39. echo "<center>Projekt został zaktualizowany<br><br>";
  40. } else {
  41. echo "<b>Projekt nie został zaktualizowany";
  42. }
  43.  
  44. }
  45.  
  46. switch ($op) {
  47.  
  48.  
  49. case "lista_projektow":
  50. lista_projektow();
  51. break;
  52.  
  53. case "edytuj_projekt":
  54. edytuj_projekt($id);
  55. break;
  56.  
  57. case "update_projekt":
  58. update_projekt($id, $tytul);
  59. break;
  60.  
  61. }
  62.  
  63. ?>


Jednak nie działa edycja, jak klikam w link to mam pusta strone, jakby nie przekazywało id z bazy danych do kolejnej funkcji, czy coś zrobiłem źle?
Go to the top of the page
+Quote Post
kresh
post 29.07.2006, 05:28:28
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Do zmiennych z formularzy stosuj tablice $_GET i $_POST. W dodatku chciałeś robić update nie przekazując w formularzu edycji id danego projektu. Poniżej zamieszczam poprawioną wersję. Pisałem "na sucho", więc mogłem coś jeszcze przeoczyć.

  1. <?php
  2.  
  3.  
  4. function lista_projektow() {
  5. echo"<h2>Lista projektów</h2><br><br>";
  6. $wynik1 = mysql_query("SELECT * FROM projekty ORDER BY id");
  7. if ($wynik1) {
  8. while ($row = mysql_fetch_array($wynik1)) {
  9. $id = intval($row['id']);
  10. $tytul = $row['tytul'];
  11. echo"<li> $id - $tytul - <a href="admin.php?id=projekty&op=edytuj_projekt&id_item=$id">Edytuj</a>";
  12. }
  13. } else {
  14. echo"Brak aktywnych projektów";
  15. }
  16. }
  17.  
  18. function edytuj_projekt($id) {
  19. $id = intval($id);
  20. echo"ID: $id";
  21. echo"<h2>Edytuj projekt</h2><br><br>";
  22. $wynik3 = mysql_query("SELECT * FROM projekty WHERE id='$id'");
  23. $row = mysql_fetch_array($wynik3);
  24. $tytul = $row['tytul'];
  25. $id_item = $row['id'];
  26. echo"<form action="admin.php?id=projekty&op=update_projekt" method="post">"
  27. ."<b>Tytuł projektu: </b>"
  28. ."<input type="text" name="tytul" value="$tytul" size="50"><br><br>"
  29. ."<input type="hidden" name="id_item" value="$id_item">"
  30. ."<input type="submit" value="Edytuj">"
  31. ."</form>";
  32.  
  33. }
  34.  
  35. function update_projekt($id, $tytul) {
  36.  
  37. $id = intval($id);
  38. $wynik2 = mysql_query("update projekty set tytul='tytul' where id='$id'");
  39. if ($wynik2) {
  40. echo "<center>Projekt został zaktualizowany<br><br>";
  41. } else {
  42. echo "<b>Projekt nie został zaktualizowany";
  43. }
  44.  
  45. }
  46.  
  47. switch ($_GET['op']) {
  48.  
  49.  
  50. case "lista_projektow":
  51. lista_projektow();
  52. break;
  53.  
  54. case "edytuj_projekt":
  55. edytuj_projekt($_GET['id_item']);
  56. break;
  57.  
  58. case "update_projekt":
  59. update_projekt($_POST['id_item'], $_POST['tytul']);
  60. break;
  61.  
  62. }
  63.  
  64. ?>


Ten post edytował kresh 29.07.2006, 05:33:31


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post
kosheen2k
post 29.07.2006, 07:38:24
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 9.03.2006
Skąd: z fotela ;p

Ostrzeżenie: (0%)
-----


Popraw funkcję update_projekt() na

  1. <?php
  2. function update_projekt($id, $tytul)
  3. {
  4.  $id = intval($id);
  5.  $wynik2 = mysql_query("update projekty set tytul='$tytul' where id='$id'");
  6.  if ($wynik2) {
  7.  echo "<center>Projekt został zaktualizowany<br><br>"; } else {
  8.  echo "<b>Projekt nie został zaktualizowany";
  9. }
  10. ?>


A dokładniej samo query bo masz:

  1. UPDATE projekty SET tytul='tytul' WHERE id='$id'


i wszystko co wyedytujesz i zapiszesz to zmieni tytuł na "tytul"

i popraw w ten sposób:

  1. UPDATE projekty SET tytul='$tytul' WHERE id='$id'


Pozdrawiam.


--------------------


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:56