![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Szukam na forach rozwiązania ale podobne przypadki odnoszą się do MySQL albo nie mogę zajarzyć
![]() Przesyłam metodą POST dane z listy menu z checkboxami: "m_id", "m_sort", "m_disp". Potrzebuję wyjąć z POST numery ID tych checkbox (m_disp), które są w stanie "ON". Przy zastosowaniu pętli wyświetlana jest kolejność w tablicy, nie bardzo umiem sobie poradzić ze zbudowaniem zapytania. W efekcie mam otrzymać, np.: 2 12 14, który to wynik chcę zapisać jako tablicę w jednej komórce bazy danych, do późniejszego odczytania w liście menu. Jak się za to zabrać? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Niewiele mogę wywnioskować z opisu problemu....
Zrób może taki formularz: I daj w PHP: - masz wszystkie value w jednej tablicy, możesz zrobić z tego pętle albo string. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Pilsner, ale print_r($_POST) chyba nie zadziała jak bym chciał.
Zawartość Post wygląda tak:
m_s - to informacja o sortowaniu bloków menu; m_id - to numery ID bloków menu. Jak widać, niektóre bloki usunięto i nie ma kolejności liczbowej; m_vis - to checkbox, które są w stanie ON (na liście jest ich tyle, ile bloków menu, w tym przypadku 11, bo "zero" też jest zliczane); Potrzebuję wyjąć ID i przypisać do zaznaczonych "ON" checkbox, czyli wynik: 4-on, 11-on, 14-on; czyli: jakie ID mają aktywne checkbox. Z wyniku ma powstać tablica przechowana w komórce tabeli. W pętli do zliczania stosuję wartość z "m_s":
która daje wynik: id:1 id:2 id:3 id:4 id:5 id:6 id:7 id:8 id:11 id:13 id:14 Podobnie dla checkbox:
gdzie wynik: bx: bx: bx: bx:on bx: bx: bx: bx: bx:on bx: bx:on Potrzebuję coś takiego: $zapytanie $wynik: cx: cx: cx: cx:4 cx: cx: cx: cx: cx:11 cx: cx:14 I tu drepczę w miejscu nie mając żadnego pomysłu. Czytam posty i mam tylko mętlik w głowie. Podpowiedzcie proszę. Ten post edytował panyeti 11.05.2009, 10:53:04 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Potrzebuję wyjąć ID i przypisać do zaznaczonych "ON" checkbox, czyli wynik: 4-on, 11-on, 14-on; czyli: jakie ID mają aktywne checkbox. Przecież przekazujesz ID w value - do value dajesz ID i odbierasz gotową tablicę m_s która wygląda np. tak: Kod [2] => 12 - 12, 46 to są ID tych czekboksów, które zostały ON (zaznaczone), więc dalej nie bardzo rozumiem w czym problem? Jak ktoś nie zaznaczy czekboksa to jego ID nie zostanie wysłane i nie będzie go w tej tablicy.[3] => 46 [4] => 57 [5] => 65 Cytat Z wyniku ma powstać tablica przechowana w komórce tabeli. No to masz tablicę ID aktywnych czekboksów: 12,46,57,65 i: - albo scalasz ją funkcją join/implode:
- albo korzystasz z funkcji serialize" title="Zobacz w manualu PHP" target="_manual, która służy do przechowywania tablic w postaci stringów |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pilsner, pokarz proszę jak to zrobić, bo ja już nie ma rozumu i zaraz mnie coś trafi....
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
No dobra, to po kolei:
1. Robisz formularz: - gdzie wszystkie czekboksy z danej grupy wrzucasz do jednej tablicy, natomiast value="" to będzie ID danej opcji, za którą odpowiada czekboks 2. Odbierasz dane: - otrzymujesz tablicę numeryczną, która zawiera tylko ID tych czekbosków, które zostały "zafajkowane" w formularzu 3. Zamieniasz te dane w string: - jako separator dajesz np. przecinek - otrzymujesz ciąg ID oddzielonych od siebie przecinkiem 4. Zapisujesz to w bazie: - potem odczytać z powrotem te ID i wrzucić je do tablicy funkcją explode" title="Zobacz w manualu PHP" target="_manual Nie wiem jak to prościej wytłumaczyć. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pilsner, ten pociąg nie pojedzie...
Zacznę od początku. Przerabiam cms w którym bloki menu albo są, albo nie dla wszystkiego co się wyświetla. Chcę to zmienić i zrobić dedykowane menu dla wyświetlanych elementów,np. dla wolnych stron. Przy tworzeniu wolnej strony mam z boku panel z dostępnymi blokami menu. Lista bloków jest zmienna i pobierana jest z tabeli "menu" ale checkboxy działają niezależnie - w momencie powstawania dokumentu są nieaktywne. Wybieram, które bloki menu chcę żeby się wyświetlały razem z tym tworzonym dokumentem - zaznaczam checkboxy i wysyłam POSTem do tego samego pliku (jeszcze nie zapisuje całego dokumentu). ID wybranych checkboxów potrzebuję w dwóch celach: 1. Robię z nich nazwę pliku w którym znajdują adresy do wybranych bloków menu i na podstawie tej nazwy są one wyświetlane, np.: 2-4-14-.php wyświetli trzy bloki menu o ID 2, 4 14. 2. ID jest potrzebne do identyfikacji wybranych menu podczas ponownej edycji danego pliku w panelu admina, czyli kiedy wyedytuję wolną stronę, wartość dla checkbox zostanie wyjęta z komórki bazy i przekazana do panelu menu dokumentu. Tu na podstawie przypisanych do chceckboxów ID zaznaczone zostaną odpowiednie pozycje na liście. Tyle teoria, teraz pokażę jak to wygląda w kodach. To panel z blokami menu do wyboru. Po zaznaczeniu i wysłaniu przez POST, wartości dla aktywnych chceckbox zwracane są przez $zpost['BX'].
Pilsner, to co zaproponowałeś:
zwraca jedynie stan czekboksów a nie ich ID ![]() Coś mi się wydaje, że chyba za bardzo kombinuję, bo przecież POSTA wykorzystuję w stanie, w jakim teraz jest, i po wyjęciu z bazy również w takiej formie. Sprawdzę to. Ten post edytował panyeti 12.05.2009, 09:32:15 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat zwraca jedynie stan czekboksów a nie ich ID - no jak nie? A to co jest w value to niby co jest? Dostajesz przecież tablicę ID - przekazywane są tylko te ID, które zostały zafajkowane. Pokaż kod formularza - bo jeśli nie przekazujesz ID w value="ID" to nie będziesz ich miał - po to jest value="".
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
To jest w $_POST
Kod <pre>Array ( [m_s] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 10 [9] => 11 [10] => 12 ) [m_id] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 11 [9] => 13 [10] => 14 ) [m_vis] => Array ( [0] => on [5] => on [10] => on ) ) </pre> $dane=$_POST['m_vis'] wyświetla jedynie "array" po użyciu funkcji for:
wyświetla "ononon", czyli zwraca stan ON trzech czekboksów z listy POST. Po zmianie zapytania na "m_id" zwraca:"1 2 3 4 5 6 7 8 11 13 14". Wszystko w pętli odnoszone jest do pozycji na liście POST, trzeba tak zapytać, żeby zwróciło tylko numery ID tych czekboksów, czyli 1 6 14. Ja już chyba jestem za stary na te łamigłówki. Jak to rozwiążę będę happy, bo serialize i unserialize załatwiło sprawę przechowywania informacji o stanie chceckbox. Teraz tylko zrobienie nazwy pliku menu z tych nieszczęsnych ID. W każdym bądź razie, bardzo ci dziękuję Pilsner za pomoc i cierpliwość dla starego tetryka ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat wyświetla "ononon", czyli zwraca stan ON trzech czekboksów z listy POST. - bo musisz dla każdego czekboksa dać w formularzu value="{ID}", inaczej będą przekazywały wartość domyślną, czyli "on".
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:28 |