![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam problem z przekazaniem tablicy do kodu PHP. Napiasałem skrypt JQUERY:
I teraz chciałbym odebrać zmienną tablica[] w PHP.Robię to w ten sposób ale nie działa:
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
A czy to tak trudno sprawdzić? I zobaczysz, gdzie co masz. Nie odnajduje zmiennej tab zamiast tego wywala mi komunikat: Notice: Undefined index: tab in C:\xampp\htdocs\php\rezultat.php on line 139 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Popraw skrypt jQuery, bo zdaje się, że nie tak (np. tablica[nr]== 2;) ma być. Jeśli wszystko będzie po stronie JS dobrze, to w pliku PHP, JS-ową tablicę znajdziesz w $_POST['tab'].
Swoją drogą nie pisałem wcześniej o bezpośrednim wywołaniu skryptu rezultat.php, a o wywołaniu go właśnie poprzez jQuery. Radzę zainstalować Firebug-a i włączyć zakładkę 'Sieć'. Ułatwi Ci to pracę ze wszystkimi AJAX-owymi żądaniami. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 9 Dołączył: 3.05.2009 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale czytaj dokładnie co ci ludzie piszą...
zwrócono ci uwagę na: tablica[nr]== 2 To jest porównanie. Jak chcesz coś przypisać to ma byc: tablica[nr]= 2 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Akcje/działania wykonuje się w kilku przypadkach, poprzez wykonanie kodu w trakcie wczytywania, poprzez bezpośrednie wywołanie funkcji lub poprzez wywołanie funkcji na podstawie zdarzeń.
Prześledź swój kod krok po kroku i pomyśl co tam się dzieje. 1. Po załadowaniu się dokumentu uruchamia się Twój kod 2. $("td.komorka").click(function() {} dodaje obsługę na zdarzenie kliknięcia w komórkę tabeli z klasą .komorka 3. Dla każdej komórki tabeli z klasą .komorka wykonywany jest kolejny blok kodu. Czyli sprawdzenie koloru komórki, stworzenie tablicy z id komórki i wartością w przedziale 0-2, następnie dla każdej(!) komórki wykonywane jest zapytanie POST. 4. Koniec Teraz pomyśl co chciałeś osiągnąć. Bo Twój kod wysyła do serwera stan początkowy, ten po załadowaniu się strony. Klikanie po komórkach nic nie zmienia poza kolorem tła, zmiany wprowadzone w ten sposób nie trafiają na serwer. Nawet nie podejmuję już tu kwestii optymalności kodu, a jest co poprawiać... Na początek, napisz co chcesz osiągnąć. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Akcje/działania wykonuje się w kilku przypadkach, poprzez wykonanie kodu w trakcie wczytywania, poprzez bezpośrednie wywołanie funkcji lub poprzez wywołanie funkcji na podstawie zdarzeń. Prześledź swój kod krok po kroku i pomyśl co tam się dzieje. 1. Po załadowaniu się dokumentu uruchamia się Twój kod 2. $("td.komorka").click(function() {} dodaje obsługę na zdarzenie kliknięcia w komórkę tabeli z klasą .komorka 3. Dla każdej komórki tabeli z klasą .komorka wykonywany jest kolejny blok kodu. Czyli sprawdzenie koloru komórki, stworzenie tablicy z id komórki i wartością w przedziale 0-2, następnie dla każdej(!) komórki wykonywane jest zapytanie POST. 4. Koniec Teraz pomyśl co chciałeś osiągnąć. Bo Twój kod wysyła do serwera stan początkowy, ten po załadowaniu się strony. Klikanie po komórkach nic nie zmienia poza kolorem tła, zmiany wprowadzone w ten sposób nie trafiają na serwer. Nawet nie podejmuję już tu kwestii optymalności kodu, a jest co poprawiać... Na początek, napisz co chcesz osiągnąć. Więc fakt nie wiem czy dobrze myślę ale gdybym umieścił zapytanie POST poza blokiem funkcji, a tablicę jako zmienną globalną to uzyskałbym efekt pojedyńczego wykonania zapytania POST? A chciałem uzyskać efekt który pozwoliłby mi zapamiętanie stanów poszczególnych komórek, następnie w formie tablicy przekazanie go do php w celu odpowiedniego uaktualnienia tabeli mysql. Naprawdę nie umiem z tym ruszyć naprzód. Akcje/działania wykonuje się w kilku przypadkach, poprzez wykonanie kodu w trakcie wczytywania, poprzez bezpośrednie wywołanie funkcji lub poprzez wywołanie funkcji na podstawie zdarzeń. Prześledź swój kod krok po kroku i pomyśl co tam się dzieje. 1. Po załadowaniu się dokumentu uruchamia się Twój kod 2. $("td.komorka").click(function() {} dodaje obsługę na zdarzenie kliknięcia w komórkę tabeli z klasą .komorka 3. Dla każdej komórki tabeli z klasą .komorka wykonywany jest kolejny blok kodu. Czyli sprawdzenie koloru komórki, stworzenie tablicy z id komórki i wartością w przedziale 0-2, następnie dla każdej(!) komórki wykonywane jest zapytanie POST. 4. Koniec Teraz pomyśl co chciałeś osiągnąć. Bo Twój kod wysyła do serwera stan początkowy, ten po załadowaniu się strony. Klikanie po komórkach nic nie zmienia poza kolorem tła, zmiany wprowadzone w ten sposób nie trafiają na serwer. Nawet nie podejmuję już tu kwestii optymalności kodu, a jest co poprawiać... Na początek, napisz co chcesz osiągnąć. Więc fakt nie wiem czy dobrze myślę ale gdybym umieścił zapytanie POST poza blokiem funkcji, a tablicę jako zmienną globalną to uzyskałbym efekt pojedyńczego wykonania zapytania POST? A chciałem uzyskać efekt który pozwoliłby mi zapamiętanie stanów poszczególnych komórek, następnie w formie tablicy przekazanie go do php w celu odpowiedniego uaktualnienia tabeli mysql. Naprawdę nie umiem z tym ruszyć naprzód. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
I tak i nie :-)
Jeśli chcesz wysłać tablicę pól raz - zamiast tyle razy ile masz komórek - to tak, poza pętlą. Jeśli chcesz przekazać aktualny stan pól, to musisz wybrać kiedy to ma nastąpić, czy po zmianie jakiegokolwiek pola, czy po kliknięciu na przycisk, czy po jakimś innym zdarzeniu na stronie. Jak już będziesz wiedział kiedy masz to zrobić, to napisanie kodu sprowadza się do: 1. Funkcja pobierająca aktualne stany komórek 2. Funkcja zmieniająca stany po kliknięciu 3. Funkcja odpalana po wybranym zdarzeniu, która wywoła tą pierwszą i zdobyte stany przekaże do php |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
I tak i nie :-) Jeśli chcesz wysłać tablicę pól raz - zamiast tyle razy ile masz komórek - to tak, poza pętlą. Jeśli chcesz przekazać aktualny stan pól, to musisz wybrać kiedy to ma nastąpić, czy po zmianie jakiegokolwiek pola, czy po kliknięciu na przycisk, czy po jakimś innym zdarzeniu na stronie. Jak już będziesz wiedział kiedy masz to zrobić, to napisanie kodu sprowadza się do: 1. Funkcja pobierająca aktualne stany komórek 2. Funkcja zmieniająca stany po kliknięciu 3. Funkcja odpalana po wybranym zdarzeniu, która wywoła tą pierwszą i zdobyte stany przekaże do php Wiem że jestem męczący, ale ciągle nie potrafię przez to przebrnąć. Nie rozumiem mój kod wygląda teraz tak:
Dodałem zdażenie poprzedzające przesłanie tablicy oraz zmianę stanu po kliknięciu komórki tak jak sugerowałeś. Wiem kod jest strasznie rozległy ale chodzi mi narazie o sam rezultat. Nic się nie dzieje. Pozatym kiedy wczytuje się strona już na wstępie otrzymuję błąd w kodzie php że nie rozpoznaje indexu tab. Nie wiem czy to problem że przesyłam zmienną do tego samego pliku bo kod JQUERY mam wtym samym co PHP? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Generalnie:
Powinno działać, więc zrób analogicznie. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Generalnie:
Powinno działać, więc zrób analogicznie. Zrobiłem analogicznie:
Odebrałem:
I dostałem komunikat: Array ( [submit] => Dodaj ) Notice: Undefined index: foo in C:\xampp\htdocs\php\index.php on line 19 naprawdę nie wiem?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ? |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przecież to ma być wysyłane asynchronicznie z pomocą AJAX, a Ty w tej chwili wysyłasz to normalnie tzn. po kliknięciu w przycisk przechodzisz do pliku/skryptu PHP. Jeśli koniecznie musisz użyć przycisku submit, do wykonania akcji, to spraw, żeby strona się nie przeładowywała. Na końcu skryptu obsługującego zdarzenie onclick dodaj:
Jeśli nie rozumiesz "ideologii" AJAX-a, to wróć do podstaw - Google. Pierwsza znaleziona strona doskonale się nadaje na dobry początek. EDIT: Twoim problemem nie jest przekazywanie tablicy, a przekazanie czegokolwiek. Po prostu nie wiesz o co w ogóle chodzi. Ten post edytował mortus 18.01.2012, 17:08:45 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Przecież to ma być wysyłane asynchronicznie z pomocą AJAX, a Ty w tej chwili wysyłasz to normalnie tzn. po kliknięciu w przycisk przechodzisz do pliku/skryptu PHP. Jeśli koniecznie musisz użyć przycisku submit, do wykonania akcji, to spraw, żeby strona się nie przeładowywała. Na końcu skryptu obsługującego zdarzenie onclick dodaj:
Jeśli nie rozumiesz "ideologii" AJAX-a, to wróć do podstaw - Google. Pierwsza znaleziona strona doskonale się nadaje na dobry początek. EDIT: Twoim problemem nie jest przekazywanie tablicy, a przekazanie czegokolwiek. Po prostu nie wiesz o co w ogóle chodzi. Masz rację dopiero się uczę. Ale twój post pomógł. W firebug widzę obsłużenie żądania AJAX. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 13:29 |