Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP][JS] Problem z dodaniem do bazy danych formularza
Forum PHP.pl > Forum > Przedszkole
krzyzaq
Witajcie,

mam, pewnie dla wielu mały, problem o nast naturze.
1. mam listę, w której to jedno z pól jest typu option/select i wygląda następująco:
  1. echo '<select id="StatusOpt'.$res['Nr'].'" name="StatusOpt" width="10" onChange="offerZmStanu(\'StatusOpt'.$res['Nr'].'\', '.$res['Nr'].')">';
  2. if ($OrdStat[0] == "Otwarte") echo '<option name="Otwarte" SELECTED>Otwarte</option>'; else echo '<option name="Otwarte" >Otwarte</option>';
  3. if ($OrdStat[0] == "Zrealizowane") echo '<option name="Zrealizowane" SELECTED>Zrealiz.</option>'; else echo '<option name="Zrealizowane">Zrealiz.</option>';
  4. if ($OrdStat[0] == "Zablokowane") echo '<option name="Zablokowane" SELECTED>Zabl.</option>'; else echo '<option name="Zablokowane">Zabl.</option>';
  5. if ($OrdStat[0] === false) echo '<option name="" SELECTED>Brak Zam.</option>';
  6. echo '</select>';


2. do tego utworzyłem formularz z polem ukrytym w którym po zmianie wartości ww listy zapisuje się zapytanie mysql i formularz dodaje sie do bazy:
  1. function offerZmStanu(Id, Nr)
  2. {
  3. var id = Id;
  4. var nr = Nr;
  5. //alert(id + ' ' + nr);
  6. //var id = Id;
  7. var state = document.getElementById(id).value;
  8. //alert(state);
  9. if(state == 'Zrealiz.')
  10. state = 'Zrealizowane';
  11.  
  12. if(state == 'Zabl.')
  13. state = 'Zablokowane';
  14. document.getElementById('UpdStat').value = "update tzamowienia set Status = '" + state + "' where offerId = " + nr;
  15. // document.getElementById('UpdStat').value = "update toffers set offerStat = 'NAktywny' Where Id = '" + id + "'";
  16. //alert("update toffers set offerStat = 'Aktywny' Where Id = '" + id + "'");
  17. document.getElementById('FOfferStat').submit();
  18. }

Problem jest antury takiej, że update się nie robi, gdyż w poleceniu wysyłanym do bd PHP dorzuca ukosniki przed warością pola Status i zamiast:
  1. UPDATE tzamowienia SET STATUS = 'Otwarte' WHERE offerId = 147

próbuje wykonać:
  1. UPDATE tzamowienia SET STATUS = \'Otwarte\' where offerId = 147

a przynajmniej tak wyświetla
  1. var_dump($POST)


czy jest jakiś sposób żeby to ogarnąć w zaprezentowany powyżej sposób czy muszę przepisać kod i kontrolując zawartość zmiennej formularza ukrytego po submicie z poziomu php zmienić wartość pola w bd?

pozdrawiam
Marcin
nospor
Zacznijmy od tego, że js nie powinno wysyłać ci żadnych zapytań....js może wysyłać dane do zapytań, ale nie zapytania....

Druga sprawa dotycząca błędu: wyłącz MAGIC_QUOTES na serwerze.
PrinceOfPersia
Może lepiej żeby nie wyłączał, przesyłając ajaxem niezabezpieczone zapytanie SQL, to otwarcie się na ataki. Tak jak powiedział mój przedmówca - wyślij do serwera same dane i rodzaj akcji - a po stronie serwera wygeneruj zapytanie.

krzyzaq
Dobrze, obszedłem problem 'tradycyjnie', czyli normalnie wysyłam formularz jak Pan Bóg przykazał i na serwerze po stronie PHP składam zapytanko do BD aby zmienić to jedno pole w tabeli. Problem jest tylko taki, że teraz po zmianie listy ze statusami trzeba odświerzyć stronkę, żeby zaktualizowało status na ten zmieniony, js nie miał tego problemu.

z tym ajax-em to kolego PronceOfPersia trochę przesada, ja mam z nim wspólnego tyle co tegoroczna wiosna z tym co za oknem smile.gif
nospor
Cytat
Problem jest tylko taki, że teraz po zmianie listy ze statusami trzeba odświerzyć stronkę, żeby zaktualizowało status na ten zmieniony
Skoro wysyłasz forma, to i strona się przeładowuje, więc nie wiem jaki masz problem.
PrinceOfPersia
Cytat
z tym ajax-em to kolego PronceOfPersia trochę przesada, ja mam z nim wspólnego tyle co tegoroczna wiosna z tym co za oknem

Sorry, mój błąd, nie spojrzałem dokładnie na metodę wysyłania. Ale to szczegół w tym momencie, bo formularze tak samo trzeba zabezpieczać.
krzyzaq
mój błąd również, za daleko wkeiłem odwołanie do update smile.gif

dziękuję Wam i pozdrawiam

p.s. znacie jakis dobry kurs ajax-a tak by the way? albo pythona - pod kątem www?
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.