Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z kodem edycji
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Witam otóż mam taki oto poniższy kod który ma za zadania aktualizowanie danej treści w bazie danych.
Wszystko do formularzy pobiera poprawnie...
Otóż skrypt wyświetla zawartość tabeli w postaci formularza. Za pomocą checkbox-a wybieram który rekord ma być edytowny. Wpisuje nową treść, klikam na edytuj i niestety nie wiem czemu jakoś nic nie robi... Znajdzie może ktoś z was jakiś błąd?
Proszę bardzoo o pomoc smile.gif

Z GÓRY DZIĘKUJĘ I DAJĘ PLUSY !

Struktura tabeli aktualności

id INT auto_increment podstawowy
data date
tresc TEXT
user varchar(50)

Kod PHP


  1. <?PHP
  2. $link = mysql_connect("localhost", "user", "password");
  3. mysql_select_db("baza");
  4.  
  5. $query = "SELECT id, data, tresc, user FROM aktualnosci ORDER BY data DESC";
  6. $result = mysql_query($query) or die(mysql_error());
  7.  
  8.  
  9. echo("<form action=\"edycja.php\" method=\"post\">");
  10.  
  11. while(($row = mysql_fetch_row($result)) != false)
  12. {
  13. $id = $row[0];
  14. $data = $row[1];
  15. $tresc = $row[2];
  16. $user = $row[3];
  17.  
  18. // mało ważne ustawienia tabeli i formularza
  19. echo("<center>");
  20. echo("<table width=\"300\" align=\"justify\">");
  21. echo("<tr>");
  22. echo("<td width=\"300\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  23.  
  24. // 1 pole które chce edytować
  25. echo("Data <br> <input type=\"text\" value=\"$data\" name=\"data[]\">");
  26.  
  27. echo("</td>");
  28. echo("</tr>");
  29. echo("<td width=\"300\" class=\"ramka2 nsl2\">");
  30. echo("<div align=\"justify\">");
  31.  
  32. // 2 pole które chce edytować
  33. echo("Tresc <br> <textarea cols=\"70\" rows=\"5\" name=\"tresc[]\">$tresc</textarea>");
  34.  
  35.  
  36. echo("</div>");
  37. echo("</td>");
  38. echo("</tr>");
  39. echo("<td width=\"200\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  40.  
  41. // 3 pole które chce edytować
  42. echo("Uzytkownik <br> <input type=\"text\" value=\"$user\" name=\"user[]\">");
  43.  
  44. echo("</td>");
  45. echo("<td width=\"100\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  46.  
  47. // checkbox o wartości id
  48. echo("<input type=\"checkbox\" name=\"doedycji[]\" value=\"$id\">");
  49.  
  50.  
  51. echo("</td>");
  52. echo("</tr>");
  53. echo("</table>");
  54. echo("</center>");
  55. echo("<br>");
  56. echo("<br>");
  57.  
  58. }
  59. echo("<input type=\"submit\" value=\"edytuj\">");
  60. echo("</form>");
  61.  
  62. if($doedycji==0)
  63. {
  64. echo("Brak rekordow w bazie.");
  65. }
  66. else
  67. {
  68. // tu powinno się wszystko odbyć ale niestety ....
  69. foreach ($_POST['doedycji'] as $key=>$k)
  70. {
  71. $data = $_POST["data"][$key];
  72. $user = $_POST["user"][$key];
  73. $tresc = $_POST["tresc"][$key];
  74.  
  75. if(mysql_query("UPDATE aktualnosci SET DATA='$data', TRESC='$tresc', USER='$user' WHERE id='$k'"))
  76. {
  77. echo("Rekord(y)został(y) edytowany(e)");
  78. }
  79. else
  80. {
  81. echo("Error");
  82. }
  83. }
  84. }
  85.  
  86. mysql_close($link);
  87.  
  88. ?>


Czyli nikt nie może też znaleźć błędu?
Szkoda...;/

Może jednak ktoś jeszcze spróbuje?
Albo naprowadzi mnie inaczej jak to zrobić?
g0ther
Kod, który przedstawiłeś mieści się w pliku edycja.php ?
jaslanin
1. Używasz zmiennej $doedycji, ale nigdzie jej nie zainicjowałeś, chyba powinno być tak:

  1. if ($_POST['doedycji'] == 0) {
  2. echo("Brak rekordow w bazie.");
  3. } else {


2. Jak coś aktualizujesz, to kod aktualizujący wykonuj przed kodem pobierającym dane bo inaczej nie zobaczysz zmiany. Czyli przenieś blok kodu:


  1. if ($_POST['doedycji'] == 0) {
  2. echo("Brak rekordow w bazie.");
  3. } else {
  4.  
  5. echo 'asd';
  6. // tu powinno się wszystko odbyć ale niestety ....
  7. foreach ($_POST['doedycji'] as $key => $k) {
  8. $data = $_POST["data"][$key];
  9. $user = $_POST["user"][$key];
  10. $tresc = $_POST["tresc"][$key];
  11.  
  12. if (mysql_query("UPDATE aktualnosci SET DATA='$data', TRESC='$tresc', USER='$user' WHERE id='$k'")) {
  13. echo("Rekord(y)został(y) edytowany(e)");
  14. } else {
  15. echo("Error");
  16. }
  17. }
  18. }


nad:

  1. $query = "SELECT id, data, tresc, user FROM aktualnosci ORDER BY data DESC";


3. masz w tym bloku kod foreach który iteruje po tablicy, zawsze sprawdzaj czy tablica po której chcesz iterować to rzeczywiście tablica

4. Następnym razem jak masz jakiś problem ustaw raportowanie błędów w PHP na E_ALL, to mi pozwoliło szybko znaleźć błąd w Twoim programie.

5. Zamiast robić cały czas echo '<html>' i escapeować nieporządane znaki lepiej pisać tak:

  1. <?php
  2. $var = 'asd';
  3. ?>
  4.  
  5. <div id='asd'><?php echo $var ?></div>


Kod jak powinien mniej więcej wyglądać:

  1. <?PHP
  2.  
  3. $link = mysql_connect("localhost", "root", "");
  4.  
  5. if (isset($_POST['doedycji'])) {
  6. if ($_POST['doedycji'] == 0) {
  7. echo("Brak rekordow w bazie.");
  8. } else if (is_array($_POST['doedycji'])) {
  9. // tu powinno się wszystko odbyć ale niestety ....
  10. foreach ($_POST['doedycji'] as $key => $k) {
  11. $data = $_POST["data"][$key];
  12. $user = $_POST["user"][$key];
  13. $tresc = $_POST["tresc"][$key];
  14.  
  15. if (mysql_query("UPDATE aktualnosci SET DATA='$data', TRESC='$tresc', USER='$user' WHERE id='$k'")) {
  16. echo("Rekord(y)został(y) edytowany(e)");
  17. } else {
  18. echo("Error");
  19. }
  20. }
  21. }
  22. }
  23.  
  24. $query = "SELECT id, data, tresc, user FROM aktualnosci ORDER BY data DESC";
  25. $result = mysql_query($query) or die(mysql_error());
  26.  
  27.  
  28. echo("<form action=\"edycja.php\" method=\"post\">");
  29.  
  30. while (($row = mysql_fetch_row($result)) != false) {
  31. $id = $row[0];
  32. $data = $row[1];
  33. $tresc = $row[2];
  34. $user = $row[3];
  35.  
  36. // mało ważne ustawienia tabeli i formularza
  37. echo("<center>");
  38. echo("<table width=\"300\" align=\"justify\">");
  39. echo("<tr>");
  40. echo("<td width=\"300\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  41.  
  42. // 1 pole które chce edytować
  43. echo("Data <br> <input type=\"text\" value=\"$data\" name=\"data[]\">");
  44.  
  45. echo("</td>");
  46. echo("</tr>");
  47. echo("<td width=\"300\" class=\"ramka2 nsl2\">");
  48. echo("<div align=\"justify\">");
  49.  
  50. // 2 pole które chce edytować
  51. echo("Tresc <br> <textarea cols=\"70\" rows=\"5\" name=\"tresc[]\">$tresc</textarea>");
  52.  
  53.  
  54. echo("</div>");
  55. echo("</td>");
  56. echo("</tr>");
  57. echo("<td width=\"200\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  58.  
  59. // 3 pole które chce edytować
  60. echo("Uzytkownik <br> <input type=\"text\" value=\"$user\" name=\"user[]\">");
  61.  
  62. echo("</td>");
  63. echo("<td width=\"100\" class=\"ramka2 nsl\" bgcolor=\"#EAEAEA\" align=\"left\">");
  64.  
  65. // checkbox o wartości id
  66. echo("<input type=\"checkbox\" name=\"doedycji[]\" value=\"$id\">");
  67.  
  68.  
  69. echo("</td>");
  70. echo("</tr>");
  71. echo("</table>");
  72. echo("</center>");
  73. echo("<br>");
  74. echo("<br>");
  75. }
  76. echo("<input type=\"submit\" value=\"edytuj\">");
  77. echo("</form>");
  78.  
  79. mysql_close($link);
  80. ?>
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.