qasz
25.01.2011, 16:29:10
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
25.01.2011, 16:32:08
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
25.01.2011, 16:42:21
Kodu z wiadomych względów nie mogę pokazać. Popatrz:
<form action="" method="post"> <input type="text" name="a" value="xx" /> <input type="text" name="b" value="yy" />
$tmp = $_POST;
sql_query("insert ...",$tmp);
W tak wielkim skrócie wygląda problem, jak odwróci się $_POST z a na b to będzie problem z dodaniem

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
25.01.2011, 16:47:19
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
25.01.2011, 16:57:35
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
25.01.2011, 17:05:50
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.
$tab = array('a', 'b', 'c'); foreach ($tab as $key) {
$post[$key] = isset($_POST[$key]) ?
$_POST[$key] : null; }
qasz
25.01.2011, 17:25:01
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 :
<input type="text" name="klient" value="xx" /> <input type="text" name="imie" value="yy" /> <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
25.01.2011, 17:51:53
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
25.01.2011, 18:29:31
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.