Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Problem z $_POST
Forum PHP.pl > Forum > Przedszkole
qasz
Problem pokazał się dzisiaj w firefoxie, inne przeglądarki działają dobrze, ff przestawia dane;) wysyłam w takiej kolejności $_POST['a'], $_POST['b'], a firefox odwraca na $_POST['b'],$_POST['a'], dane przykładowe, nie mogę znaleźć zasady na jakich to działa. I nie występuje to zawsze, ale dla niektórych, ff w jakiś sposób te dane sortuje ? Problem jest na tyle uciążliwy, że cała obsługa bazy odbywa się[html][php] na array_values. Prosiłbym o pomoc albo jakiś fix.
wookieb
Kurde rozumiem, że mozna mieć problem z jakimś kodowaniem posta ale KOLEJNOŚCIA wysyłania argumentów? Pokaż kod bo naprawdę nie widzę problemu.
qasz
Kodu z wiadomych względów nie mogę pokazać. Popatrz:
  1. <form action="" method="post">
  2. <input type="text" name="a" value="xx" />
  3. <input type="text" name="b" value="yy" />
  4. </form>

  1. $tmp = $_POST;
  2. $tmp = array_values($tmp);
  3. sql_query("insert ...",$tmp);
  4.  


W tak wielkim skrócie wygląda problem, jak odwróci się $_POST z a na b to będzie problem z dodaniem winksmiley.jpg jeżeli są sprawdzane setki innych warunków. Przebudowa tego, że każdy element jest po kolei dodawany do tablicy nie wchodzi nawet w rachubę, skrypt ma setki różnych insertów, a tylko w jednym obecnie był problem zaraportowany i tylko pod firefoxem, więc sądzę, że to jest jego wina.
wookieb
Dude ale ja nadal nie widzę problemu. Problemem jest twój kod, który nie wspiera tak oczywistej rzeczy jak obsługa kluczy w tablicach. Tyle ile znam FW i wypocin poszczególnych osób nie ma problemu z dodaniem do tabeli danych przez wywołanie funkcji, która dostaje w parametrze TABLICE gdzie klucz to nazwa kolumny, a wartość jest "wartością" jaka należy wstawić. Albo sobie wstępnie przesortujesz tablice (wg swojej kolejności) albo poprawisz sposób wstawiania danych do bazy.
qasz
Dude, ale o czym ty teraz piszesz, ja pytam się czy jest jakiś fix na problem że FIREFOX PRZESTAWIANIA DANE W TABELI POST(wg swojego widzimisie), a nie czy kod jest zarąbisty, a to do czego to używam to uproszczenie pewnych rzeczy, żeby nie klepać tego tysiące razy nie potrzebnie, założenie dostaje postem dane zawsze w takiej kolejności załóżmy po name a,b,c,d, więc usuwam klucze, przenumerowuje tablicę i binduje tą tablice do konektora, ale że z jakiś dla mnie niejasnych rzeczy firefox, niektóre tablicę post przestawi sobie na a,c,d,b to jest wina mojego kodu wg Ciebie tak ? Nie ma tego problemu pod ie,safari,opera,chromem. Jak nie widzisz problemu to proszę nie zabieraj głosu, bo mi wcale nie pomożesz.
wookieb
Oczywiście, że nie widzę problemu. Byłeś w stanie wyłapać ten błąd na FF sam czy patrzysz z logów? Bo jak z logów o bardzo możliwe,że użytkownik sam np zmienił kolejność elementów w formularzu.
Winą twojego kodu jest dziwna zależność wstawiania danych od kolejności wartości w tablicy odebranej OD użytkownika. Tak to jest błąd twojej aplikacji.
Nie znalazłem nawet wzmianki o takim bugu w FX więc pozostaje poprawić kolejność wartości POST po stronie skryptu PHP.
  1. $tab = array('a', 'b', 'c');
  2. $post = array();
  3. foreach ($tab as $key) {
  4. $post[$key] = isset($_POST[$key]) ? $_POST[$key] : null;
  5. }
qasz
Tak patrzyłem z logów i zasymulowałem ten błąd. Nie wiem czy się dobrze rozumiemy więc postaram się to opisać troszkę prościej.

Mamy trzy inputy :
  1. <input type="text" name="klient" value="xx" />
  2. <input type="text" name="imie" value="yy" />
  3. <input type="text" name="nazwisko" value="zz" />


Robię POSTa i oczekuję że mi zwróci w kolejności klient , imie , nazwisko (print_r)
Niestety otrzymuję całkowicie niespodziewany wynik np. imie , klient , nazwisko (print_r)

W innym przypadku gdzie jest są np. inne nazwy(inputa) dostaję prawidłowo np. produkt,nazwa,cena.

Wszystkie nazwy przykładowe.
cycofiasz
Jeśli kolejność wpisów w tablicy asocjacyjnej musi mieć znaczenie (co dla mnie jest absurdem) to sobie sortuj ksort'em każdą tablicę POST i różnice w sposobie wysyłania danych przez przeglądarki znikną...
wookieb
Rozumiemy się. Dlatego podałem Ci rozwiązania jak stworzyć tablicęz wartościami w takiej kolejności jakiej chcesz bez względu na to jaką dorwiesz od użytkownika.
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.