Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
ToAr
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?
kresh
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. ?>
kosheen2k
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.
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.