![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Proszę o pomoc bo bolą mnie juz oczy 8O
Funkcja pobiera z bazy mysql dane i wyświetla w postaci checkbox. Kod wyglada następująco: [php:1:4fadcf8484]<?php function zaznacz_opcje($tabela, $kolumna_id, $kolumna_wyswietl, $dod_kolumna) { //ten kawałek teraz nie działa // utowrzenie zmiennej kontrolnej do prawidlowego zaznaczeniapozycji na liscie wyboru //$zaznacz[$_POST["$kolumna_id".'_'."$dod_kolumna"]]='checked'; //zapytanie do bazy danych $zapytanie=mysql_query("select * from $tabela"); //funkcja zwracjaaca liczbe znalezionych wierszy (z wytlumionym bledem) @$ile_znal=mysql_num_rows($zapytanie); //jesli nic nie znajdzie nie tworzy listy i zwraca napis "blad" if($ile_znal==0) print 'blad'; else { //wypisuje kolejno pola for($i=1; $i<=$ile_znal; $i++) { //funkcja zwracajaca wiersz z wyniku "zapytania" $wiersz=mysql_fetch_array($zapytanie); print '<input type="checkbox" name="'."$kolumna_id".'_'."$dod_kolumna".'[]'."" value="$wiersz[$kolumna_id]" $zaznacz[$i] > $wiersz[$kolumna_wyswietl]<br>n"; } } } ?>[/php:1:4fadcf8484] Funkcja znajduje się w formularzu na stronie, dane przekazywane są POST-em do kolejnago formularza, który sprawdza poprawność wszystkich danych, jeśli coś jest nie tak wyświetla komunikat i tworzy ponownie poprzedni formularz. Mój problem polega na tym że nie jestem w stanie zmusić tej funkcji by wyświetlała wcześniej zaznaczone pola (z poprzedniego formularza) w formularzu wyświetlanym po sprawdzeniu danych. (jak umieścić checked?). Wcześniet tzn. przed dodaniem [] do name="..[]" checkbox-a zapamiętywało jedynie ostatnia pozycje. Tezaz nie wiem jak to ugryść . No niech ktoś sie wreszcie zlituje i pomoże jak to zrobić. :?: |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[php:1:555334b8f8]<?php
if($ile_znal==0) print 'blad'; else { //wypisuje kolejno pola for($i=1; $i<=$ile_znal; $i++) { //funkcja zwracajaca wiersz z wyniku "zapytania" $wiersz=mysql_fetch_array($zapytanie); $spr = $wiersz['checked'] == 1 ? "checked=checked" : ""; print '<input type="checkbox" name="'."$kolumna_id".'_'."$dod_kolumna".'[]'."" value="$wiersz[$kolumna_id]" $spr> $wiersz[$kolumna_wyswietl]<br>n"; } } } ?>[/php:1:555334b8f8] Wystarczy, że zmienisz nazwę kolumny z $wiersz['checked'] na np. $wiersz['zaznacz'] i będzie dobrze. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Działa, ale nie tak jak bym oczekiwał. Zaznacza mi zawsze pierwszą opcję, a ja potrzebuje by "przechowało" zaznaczenie do następnej strony. Czyli jest checkbox (pusty), ja sobie go zaznaczam, wysyłam formularz (POST-em), skrypt sprawdza co jest w nim źle (oczywiście chodzi o inne pola) i wyświetla ponownie ten sam formularz, w którym chciałbym by zaznaczone były te same pola co stronę wcześniej.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
[php:1:b06f140477]<?php
<?php if($ile_znal==0) print 'blad'; else { //wypisuje kolejno pola for($i=1; $i<=$ile_znal; $i++) { //funkcja zwracajaca wiersz z wyniku "zapytania" $wiersz=mysql_fetch_array($zapytanie); $spr =$_POST[$kolumna_id."_".$dod_kolumna."[]"] == 1 ? "checked=checked" : ""; print '<input type="checkbox" name="'."$kolumna_id".'_'."$dod_kolumna".'[]'."" value="$wiersz[$kolumna_id]" $spr> $wiersz[$kolumna_wyswietl]<br>n"; } } } ?>[/php:1:b06f140477] ?> |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 0 Dołączył: 24.10.2002 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
[php:1:e53ba2a6e6]<?php
for ($i=0; $i<count($_POST['boxy']); $i++) { echo "<input type="checkbox" name="boxy[]" value="cokolwiek""; if (isset($_POST['boxy'][$i])) echo " checked "; echo ">"; } } ?>[/php:1:e53ba2a6e6] o takie cos ci chodzi czy zle zrozumialem? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
To już przerobiłem i faktycznie działa, ale zwraca tylko ostatnia z zaznaczonych pozycji.
Dzięki za odpowiedzi. Znalazłem rozwiązanie, wyglada to tak: [php:1:d3399433ed]<?php // kontrola istnienia tablicy if (isset ($_POST["$kolumna_id".'_'."$dod_kolumna"])) { // tworzenie tablicy pomocniczej unset($zaznacz); $zaznacz=array(); foreach ($_POST["$kolumna_id".'_'."$dod_kolumna"] as $wartosc) { //przypisuje do odpowiedniego elementu tablicy wartość='checked' $zaznacz["$wartosc"]='checked'; } } //zapytanie do bazy danych $zapytanie=mysql_query("select * from $tabela"); //funkcja zwracjaaca liczbe znalezionych wierszy (z wytlumionym bledem) @$ile_znal=mysql_num_rows($zapytanie); //jesli nic nie znajdzie nie tworzy listy i zwraca napis "blad" if($ile_znal==0) print 'blad'; else { //wypisuje kolejno pola for($i=1; $i<=$ile_znal; $i++) { //funkcja zwracajaca wiersz z wyniku "zapytania" $wiersz=mysql_fetch_array($zapytanie); print '<input type="checkbox" name="'."$kolumna_id".'_'."$dod_kolumna".'[]'."" value="$wiersz[$kolumna_id]" $zaznacz[$i] > $wiersz[$kolumna_wyswietl]<br>n"; } } ?>[/php:1:d3399433ed] Chodziło o foreach, który prawidłowo wyświetla tablicę[]. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:12 |