Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Formularz nadpisuje wszystkie rekordy zamiast jednego.
Forum PHP.pl > Forum > Przedszkole
Lukasso
Mam bazę danych z katalogiem produktów i formularz w panelu administracyjnym służący do edycji opisów produktów lub dodawania nowych. Dodawanie działa, problem pojawia się kiedy chcemy edytować dane produktu. Po wprowadzeniu zmiany i zapisaniu, zamiast nadpisać dane tylko wybranego produktu, wszystkim znajdującym się w bazie rekordom przypisywane są takie same wartości jakie znajdowały się w formularzu podczas ostatniej edycji. W ten sposób powstaje np. 20 identycznych rekordów.

Tutaj jest kod, może wpadnie Wam w oko błąd:
  1. if($_POST['doAction'] == 'save' && !$isError) {
  2. if (($_POST['id'])) {
  3. $update = getSql("UPDATE mstal_produkty SET
  4. nazwa='".remSpecialChars($_POST['nazwa'])."',
  5. srednice='".remSpecialChars($_POST['srednice'])."',
  6. normy='".remSpecialChars($_POST['normy'])."',
  7. gatunki='".remSpecialChars($_POST['gatunki'])."',
  8. rodz_srub='".remSpecialChars($_POST['rodz_srub'])."',
  9. rodz_nakr='".remSpecialChars($_POST['rodz_nakr'])."',
  10. klasy_rf='".remSpecialChars($_POST['klasy_rf'])."',
  11. klasy_rtj='".remSpecialChars($_POST['klasy_rtj'])."',
  12. typy='".remSpecialChars($_POST['typy'])."',
  13. klasy='".remSpecialChars($_POST['klasy'])."',
  14. wykon='".remSpecialChars($_POST['wykon'])."',
  15. gr_scian='".remSpecialChars($_POST['gr_scian'])."',
  16. image='".$_POST['image']."'");
  17.  
  18. if(!$update)
  19. $errtxt .="<div class='error'>Błąd podczas zapisu do bazy danych, proszę skontaktować się z administratorem.</div>";
  20. else {
  21. $errtxt .="<div class='success'>Poprawnie zapisano w bazie danych.</div>";
  22. }
  23. } else {
  24. $insert = getSql("INSERT INTO mstal_produkty (
  25. nazwa, srednice, normy, gatunki, rodz_srub, rodz_nakr, klasy_rf, klasy_rtj, typy, klasy, wykon,
  26. gr_scian, image) VALUES (
  27. '".$_POST['nazwa']."',
  28. '".$_POST['srednice']."',
  29. '".$_POST['normy']."',
  30. '".$_POST['gatunki']."',
  31. '".$_POST['rodz_srub']."',
  32. '".$_POST['rodz_nakr']."',
  33. '".$_POST['klasy_rf']."',
  34. '".$_POST['klasy_rtj']."',
  35. '".$_POST['typy']."',
  36. '".$_POST['klasy']."',
  37. '".$_POST['wykon']."',
  38. '".$_POST['gr_scian']."',
  39. '".$_POST['image']."')");
  40.  
  41. if(!$insert)
  42. $errtxt .="<div class='error'>Błąd podczas zapisu do bazy danych.</div>";
  43. else {
  44. $_REQUEST['id'] = mysql_insert_id();
  45. $errtxt .="<div class='success'>Poprawnie dodano do bazy danych.</div>";
  46. }

toffiak
Brak "WHERE" http://dev.mysql.com/doc/refman/5.6/en/update.html
Lukasso
Racja. Zabrakło wskazania na rekord, który edytujemy.
Dzięki!
  1. WHERE id='".$_POST['id']."'
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.