Mam 1 formularz z wieloma polami wyboru (każdy z kodem):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Gdzie $row['Report ID']
jest klucz podstawowy w bazie danych - więc każda wartość jest inna.
Jak mogę stwierdzić, które pola wyboru zostały zaznaczone? (Może wiele)
To jest dla systemu skrzynki odbiorczej i mam poniżej przycisk, który chcę (po kliknięciu) usunąć wszystkie wiadomości (identyfikatory:), $row['Report ID']
które mają zaznaczone pole wyboru.
$check
będzie równaon
.if($_POST)
- bezużyteczne,$_POST
zawsze będzie prawdziwe. Zamiast tego powinieneś sprawdzić, czy!empty($_POST['check_list'])
.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
nie powoduje tego błędu. Z instrukcji:empty() does not generate a warning if the variable does not exist.
Edytuj Aby odzwierciedlić to, co @Marc powiedział w komentarzu poniżej.
Możesz wykonać pętlę przez wszystkie przesłane wartości.
HTML:
PHP:
źródło
[]
składni w definicji pola, co powoduje, że PHP tworzy tę wartość $ _POST jako tablicę. W przeciwnym razie będzie to pojedyncza wartość niebędąca tablicą, powodując wybuch pętli foreach ().musisz odpowiednio nazwać pola wyboru:
możesz wtedy uzyskać dostęp do wszystkich zaznaczonych pól wyboru za pomocą
ps. upewnij się, że poprawnie uciekniesz z wyjścia (
htmlspecialchars()
)źródło
Po poście możesz je przeglądać:
Lub uzyskaj określoną wartość opublikowaną z poprzedniej strony:
źródło
Przepraszamy, stary temat, ale jest to jeden ważny element do omówienia, z którym @JamesRattray i inni mieli problemy.
NIE zamykaj samodzielnie
input
tagu (używając/>
), gdy próbujesz wysłać wiele wartości do skryptu PHP. Kiedy samodzielnie zamkniesz tag, kończy on definicję tablicy, a po przesłaniu do skryptu zostanie wysłana tylko jedna wartość. W efekcie odpowiedź @Scone może nie działać, dopóki nie/>
zostanie zmieniona.To właśnie powoduje
Warning: Invalid argument supplied for foreach() in /home1/...
błąd PHP w tym przypadku.EDYCJA: Jak zauważono w komentarzach poniżej, dalsze badania sugerują, że jest to zależne od DOCTYPE. Jeśli masz DOCTYPE ustawiony dla XHTML, będzie to wymagało zamknięcia znacznika wejściowego. Jeśli masz zestaw HTML5 DOCTYPE, będzie to wymagać, aby tag wejściowy nie był zamykany. Istnieje również szansa, że może to być podyktowane tym, w jakiej przeglądarce użytkownik przegląda stronę i jak dobrze podąża ona za DOCTYPE określonym w kodzie.
źródło
To całkiem proste. Uważaj, a otrzymasz to od razu! :)
Utworzysz tablicę html, która zostanie następnie wysłana do tablicy php. Twój kod html będzie wyglądał następująco:
Gdzie
[1] [2] [3]
sąID
s wiadomości, co oznacza, że będzieecho
Państwu$row['Report ID']
w ich miejsce.Następnie, kiedy wyślesz formularz, twoja tablica PHP będzie wyglądać następująco:
print_r($check_list)
[1] => checked [3] => checked
W zależności od tego, które zostały sprawdzone, a które nie.
Jestem pewien, że możesz kontynuować od tego momentu.
źródło
check_list[]
że zacznie sięcheck_list[0]
raczej od niżcheck_list[1]
.En mi caso necesito que venga en un sólo valor, por lo tanto no me vale una matriz.
Con esto me aseguro que los valores sean 1 y separados por coma. Así en MySQL puedo hacer la consulta, venga en matriz o no:
źródło