Pertanyaan ini sebenarnya berarti " sudah diperiksa" (ketika formulir diserahkan). PHP menentukan apakah kotak centang yang diperiksa akan membutuhkan panggilan Ajax sekali elemen itu toggle.
rybo111
Jawaban:
342
Jika halaman HTML Anda terlihat seperti ini:
<inputtype="checkbox"name="test"value="value1">
Setelah mengirimkan formulir, Anda dapat memeriksanya dengan:
Kotak centang juga dapat memiliki nilai on, ketika dicentang. Oleh karena itu untuk kompatibilitas lebih mudah digunakan isset($_POST['checkboxName']).
Damiqib
13
Nilai "on" mungkin didukung oleh beberapa browser saat atribut nilai tidak disetel, tetapi secara umum lebih baik untuk mengatur atribut nilai dan memeriksanya saat pengiriman.
m_vitaly
3
Apakah 'Value1' berubah jika kotak dicentang?
MoralCode
10
@Developer_ACE Kecuali saya salah paham dengan Anda, nilai dalam contoh ini adalah value1jika kotak centang dicentang. Jika tidak dicentang, $_POST['test']sama sekali tidak ada.
rybo111
104
Zend Framework menggunakan peretasan bagus di kotak centang, yang juga bisa Anda lakukan sendiri:
Setiap kotak centang yang dihasilkan dikaitkan dengan bidang tersembunyi dengan nama yang sama, ditempatkan tepat sebelum kotak centang, dan dengan nilai "0". Kemudian jika kotak centang Anda sebagai nilai "1", Anda akan selalu mendapatkan nilai '0' atau '1' di GET atau POST yang dihasilkan
Saya juga memperhatikan hal itu, tetapi saya merasa aman untuk menggunakannya: Zend Framework juga melakukannya!
hpaknia
Ini menarik. Tetapi apakah ada kemungkinan kecil bahwa agen pengguna dapat mengirimkan nilai pertama dan bukan yang terakhir, dengan asumsi kotak centang dicentang?
rybo111
@ rybo111, untuk agen pengguna saya tidak berpikir begitu, tetapi untuk parser bentuk javascript kustom Anda harus berhati-hati.
regilero
Maaf, bisakah seseorang menjelaskan kepada saya bagaimana cara kerjanya? Saya tidak mengerti. Mengapa bidang tersembunyi itu jika hanya nilai terakhir yang selalu dikirimkan (satu input[type="checkbox"]-satunya)?
tonix
6
ketika kotak centang tidak dicentang itu tidak dikirimkan dalam pos (jadi hanya yang disembunyikan yang dikirimkan). Ketika dicentang itu ditransmisikan, dan akan menimpa nilai tersembunyi.
kotak centang sebagai array dan foreach ($_POST['food'] as $selected_food)untuk bekerja pada satu diperiksa bagus, terima kasih
bcag2
42
Biarkan html Anda untuk kotak centang Anda akan seperti
<inputtype="checkbox"name="check1">
Kemudian setelah mengirimkan formulir Anda, Anda perlu memeriksa suka
if(isset($_POST['check1'])){// Checkbox is selected}else{// Alternate code}
Dengan asumsi itu check1harus nama kotak centang Anda. Dan jika metode pengiriman formulir GETAnda maka Anda perlu memeriksa dengan $_GETvariabel seperti
if(isset($_GET['check1'])){// Checkbox is selected}
Saya telah menggunakan trik ini selama beberapa tahun dan berfungsi dengan baik tanpa masalah untuk memeriksa / tidak mencentang status kotak centang saat menggunakan dengan PHP dan Database.
Petunjuk: Akan selalu ada nilai kosong kecuali jika pengguna memeriksanya. Jadi, kita sudah memiliki kode PHP untuk menangkapnya dan menyimpan nilainya menjadi 0. Kemudian, cukup gunakan variabel $ status untuk database.
ini adalah bentuk yang sangat bagus untuk melakukan ini dalam php sederhana murni. tetapi harus dicatat bahwa nilai kotak centang adalah string pada saat diaktifkan nilai yang ada jika dicentang.
Elvis Technologies
4
Untuk memeriksa apakah kotak centang dicentang gunakan kosong ()
Ketika formulir dikirimkan, kotak centang akan SELALU ditetapkan, karena SEMUA variabel POST akan dikirim bersama formulir.
Periksa apakah kotak centang dicentang dengan kosong sebagai berikut:
//Check if checkbox is checked if(!empty($_POST['checkbox'])){#Checkbox selected code}else{#Checkbox not selected code}
Pelajari tentang issetyang merupakan "fungsi" built-in yang dapat digunakan dalam pernyataan jika untuk mengetahui apakah suatu variabel telah digunakan atau ditetapkan
Contoh:
if(isset($_POST["testvariabel"])){
echo "testvariabel has been set!";}
Nah, contoh-contoh di atas hanya berfungsi ketika Anda ingin menyisipkan nilai, tidak berguna untuk memperbarui nilai yang berbeda ke kolom yang berbeda, jadi di sini adalah sedikit trik saya untuk memperbarui:
//EMPTY ALL VALUES TO 0
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();if(!empty($_POST['check_menus'])){foreach($_POST['check_menus']as $checkU){try{//UPDATE only the values checked
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();}catch(PDOException $e){
$msg ='Error: '. $e->getMessage();}}}
Rahasianya baru saja memperbarui semua VALUES terlebih dahulu (dalam hal ini ke 0), dan karena hanya akan mengirim nilai yang dicentang, itu berarti semua yang Anda dapatkan harus disetel ke 1, jadi semua yang Anda tetapkan menjadi 1.
Contohnya adalah PHP tetapi berlaku untuk semuanya.
Selamat Datang di Stack Overflow! Meskipun potongan kode ini dapat menyelesaikan masalah, itu tidak menjelaskan mengapa atau bagaimana ia menjawab pertanyaan. Harap sertakan penjelasan untuk kode Anda , karena itu sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda. Penanda / pengulas: Untuk jawaban hanya kode seperti ini, downvote, jangan hapus!
Jawaban:
Jika halaman HTML Anda terlihat seperti ini:
Setelah mengirimkan formulir, Anda dapat memeriksanya dengan:
atau
sumber
on
, ketika dicentang. Oleh karena itu untuk kompatibilitas lebih mudah digunakanisset($_POST['checkboxName'])
.value1
jika kotak centang dicentang. Jika tidak dicentang,$_POST['test']
sama sekali tidak ada.Zend Framework menggunakan peretasan bagus di kotak centang, yang juga bisa Anda lakukan sendiri:
Setiap kotak centang yang dihasilkan dikaitkan dengan bidang tersembunyi dengan nama yang sama, ditempatkan tepat sebelum kotak centang, dan dengan nilai "0". Kemudian jika kotak centang Anda sebagai nilai "1", Anda akan selalu mendapatkan nilai '0' atau '1' di GET atau POST yang dihasilkan
sumber
input[type="checkbox"]
-satunya)?Saat menggunakan kotak centang sebagai array:
Anda harus menggunakan
in_array()
:Ingatlah untuk memeriksa array yang diatur terlebih dahulu, seperti:
sumber
foreach ($_POST['food'] as $selected_food)
untuk bekerja pada satu diperiksa bagus, terima kasihBiarkan html Anda untuk kotak centang Anda akan seperti
Kemudian setelah mengirimkan formulir Anda, Anda perlu memeriksa suka
Dengan asumsi itu
check1
harus nama kotak centang Anda. Dan jika metode pengiriman formulirGET
Anda maka Anda perlu memeriksa dengan$_GET
variabel sepertisumber
sumber
Saya telah menggunakan trik ini selama beberapa tahun dan berfungsi dengan baik tanpa masalah untuk memeriksa / tidak mencentang status kotak centang saat menggunakan dengan PHP dan Database.
Kode HTML: (untuk Tambah Halaman)
Petunjuk: hapus "kotak centang" jika Anda ingin menunjukkannya sebagai tidak dicentang secara default
Kode HTML: (untuk Edit Halaman)
Kode PHP: (digunakan untuk Tambah / Edit halaman)
Petunjuk: Akan selalu ada nilai kosong kecuali jika pengguna memeriksanya. Jadi, kita sudah memiliki kode PHP untuk menangkapnya dan menyimpan nilainya menjadi 0. Kemudian, cukup gunakan variabel $ status untuk database.
sumber
Untuk memeriksa apakah kotak centang dicentang gunakan kosong ()
Ketika formulir dikirimkan, kotak centang akan SELALU ditetapkan, karena SEMUA variabel POST akan dikirim bersama formulir.
Periksa apakah kotak centang dicentang dengan kosong sebagai berikut:
sumber
Anda dapat memeriksa nilai terkait sebagai diset dan tidak kosong dalam array $ _POST atau $ _GET tergantung pada tindakan formulir Anda.
yaitu: Dengan formulir POST menggunakan
name
"tes" (yaitu:,<input type="checkbox" name="test">
Anda akan menggunakan:sumber
Pelajari tentang
isset
yang merupakan "fungsi" built-in yang dapat digunakan dalam pernyataan jika untuk mengetahui apakah suatu variabel telah digunakan atau ditetapkanContoh:
sumber
Nah, contoh-contoh di atas hanya berfungsi ketika Anda ingin menyisipkan nilai, tidak berguna untuk memperbarui nilai yang berbeda ke kolom yang berbeda, jadi di sini adalah sedikit trik saya untuk memperbarui:
....
Rahasianya baru saja memperbarui semua VALUES terlebih dahulu (dalam hal ini ke 0), dan karena hanya akan mengirim nilai yang dicentang, itu berarti semua yang Anda dapatkan harus disetel ke 1, jadi semua yang Anda tetapkan menjadi 1.
Contohnya adalah PHP tetapi berlaku untuk semuanya.
Selamat bersenang-senang :)
sumber
Anda dapat melakukannya dengan singkat jika:
atau dengan PHP7 baru
Null coalescing operator
sumber
Evaluasi hubung singkat akan dilakukan agar Anda tidak mengakses
your_checkbox_name
ketika itu tidak dikirimkan.sumber
Pemeriksaan boolean minimalis dengan penahan posisi sakelar
sumber
sumber
di BS3 bisa Anda masukkan
Harap Perhatikan penggunaan
isset($datosOrdenCompra[0]['exenta'])
sumber
filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)
sumber
Wordpress memiliki
checked()
fungsi. Referensi: https://developer.wordpress.org/reference/functions/checked/Deskripsi Membandingkan dua argumen pertama dan jika tanda identik seperti dicentang
Parameter $ checked (campuran) (Diperlukan) Salah satu nilai untuk membandingkan
$ current (mixed) (Opsional) (true) Nilai lain untuk dibandingkan jika tidak hanya benar Nilai default: true
$ echo (bool) (Opsional) Apakah akan menggema atau hanya mengembalikan string Nilai default: true
Kembalikan atribut #Return (string) html atau string kosong
sumber
sumber