Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Formularz nadpisuje wszystkie rekordy zamiast jednego.
Lukasso
post 7.10.2013, 16:43:34
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

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


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. }

Go to the top of the page
+Quote Post
toffiak
post 7.10.2013, 17:02:27
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Brak "WHERE" http://dev.mysql.com/doc/refman/5.6/en/update.html


--------------------
Go to the top of the page
+Quote Post
Lukasso
post 7.10.2013, 17:15:14
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

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


Racja. Zabrakło wskazania na rekord, który edytujemy.
Dzięki!
  1. WHERE id='".$_POST['id']."'
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: 16.04.2024 - 21:30