Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Problem z $_POST
qasz
post 25.01.2011, 16:29:10
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


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.

Ten post edytował qasz 25.01.2011, 16:30:00
Go to the top of the page
+Quote Post
wookieb
post 25.01.2011, 16:32:08
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kurde rozumiem, że mozna mieć problem z jakimś kodowaniem posta ale KOLEJNOŚCIA wysyłania argumentów? Pokaż kod bo naprawdę nie widzę problemu.


--------------------
Go to the top of the page
+Quote Post
qasz
post 25.01.2011, 16:42:21
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


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.
Go to the top of the page
+Quote Post
wookieb
post 25.01.2011, 16:47:19
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
qasz
post 25.01.2011, 16:57:35
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


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.
Go to the top of the page
+Quote Post
wookieb
post 25.01.2011, 17:05:50
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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


--------------------
Go to the top of the page
+Quote Post
qasz
post 25.01.2011, 17:25:01
Post #7





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 18.05.2010
Skąd: Norwich

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


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.
Go to the top of the page
+Quote Post
cycofiasz
post 25.01.2011, 17:51:53
Post #8





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


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ą...
Go to the top of the page
+Quote Post
wookieb
post 25.01.2011, 18:29:31
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
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: 7.07.2025 - 02:21