Tutorial ini akan menunjukkan cara menambahkan kotak pilih dan kotak multi-pilihan ke formulir, cara mengambil data input darinya, cara memvalidasi data, dan cara mengambil tindakan yang berbeda tergantung pada input
Pilih kotak
Mari kita lihat input baru. kotak "pilih", juga dikenal sebagai kotak "drop-down" atau "pull-down". Kotak pilih berisi satu atau lebih "opsi". Setiap opsi memiliki "nilai", seperti input lainnya, dan juga string teks di antara tag opsi. Ini berarti ketika pengguna memilih "Male", nilai "formGender" saat diakses oleh PHP akan menjadi "M"
<p> What is your Gender? <select name="formGender"> <option value="">Select...</option> <option value="M">Male</option> <option value="F">Female</option> </select> </p>
Nilai yang dipilih dari input ini dapat dibaca dengan array $_POST standar seperti input teks dan divalidasi untuk memastikan pengguna memilih Pria atau Wanita
<?php if(isset($_POST['formSubmit']) ) { $varMovie = $_POST['formMovie']; $varName = $_POST['formName']; $varGender = $_POST['formGender']; $errorMessage = ""; // - - - snip - - - } ?> _
Itu selalu merupakan ide bagus untuk memiliki opsi "kosong" sebagai opsi pertama di kotak pilihan Anda. Ini memaksa pengguna untuk membuat pilihan sadar dari kotak dan menghindari situasi di mana pengguna mungkin melewati kotak tanpa sengaja. Tentu saja, ini membutuhkan validasi
<?php if(!isset($_POST['formGender'])) { $errorMessage .= "<li>You forgot to select your Gender!</li>"; } ?>
(Untuk skrip validasi formulir yang umum dan mudah digunakan, lihat Skrip Validasi Formulir PHP )
Multi-pilih
Misalkan Anda ingin menyajikan kotak pilihan yang memungkinkan pengguna memilih beberapa opsi
Berikut ini cara membuat input seperti itu dalam HTML
<label for='formCountries[]'>Select the countries that you have visited:</label><br> <select multiple="multiple" name="formCountries[]"> <option value="US">United States</option> <option value="UK">United Kingdom</option> <option value="France">France</option> <option value="Mexico">Mexico</option> <option value="Russia">Russia</option> <option value="Japan">Japan</option> </select>
Harap perhatikan kemiripannya dengan grup kotak centang. Pertama, tetapkan multiple=“multiple” sebagai properti kotak pilih. Kedua, letakkan [ ] di akhir nama. Akhirnya, kami tidak benar-benar membutuhkan opsi "kosong" di kotak pilih ini, karena kami cukup memeriksa untuk memastikan pengguna memilih sesuatu atau tidak. Untuk memilih beberapa nilai, gunakan tombol shift atau ctrl saat mengklik
Kode PHP untuk memproses bidang ini sangat mirip dengan kode kotak centang. $_POST['formCountries'] mengembalikan array dari nilai yang dipilih
<?php if(isset($_POST['formSubmit'])) { $aCountries = $_POST['formCountries']; if(!isset($aCountries)) { echo("<p>You didn't select any countries!</p>\n"); } else { $nCountries = count($aCountries); echo("<p>You selected $nCountries countries: "); for($i=0; $i < $nCountries; $i++) { echo($aCountries[$i] . " "); } echo("</p>"); } } ?> _
Seperti sebelumnya, gunakan "isset" untuk memastikan beberapa nilai dipilih
Menggunakan sakelar
Sekarang, mari ubah kotak multi-pilih kembali ke kotak pilihan tunggal standar. Kami sekarang ingin melakukan tindakan berbeda berdasarkan pilihan apa yang dibuat pengguna. Anda bisa menulis banyak pernyataan "jika", tapi itu bisa jadi berantakan. Mari kita lihat dua cara. perintah dinamis dan pernyataan switch
<?php if(isset($_POST['formSubmit'])) { $varCountry = $_POST['formCountry']; $errorMessage = ""; if(empty($varCountry)) { $errorMessage = "<li>You forgot to select a country!</li>"; } if($errorMessage != "") { echo("<p>There was an error with your form:</p>\n"); echo("<ul>" . $errorMessage . "</ul>\n"); } else { // note that both methods can't be demonstrated at the same time // comment out the method you don't want to demonstrate // method 1: switch $redir = "US.html"; switch($varCountry) { case "US": $redir = "US.html"; break; case "UK": $redir = "UK.html"; break; case "France": $redir = "France.html"; break; case "Mexico": $redir = "Mexico.html"; break; case "Russia": $redir = "Russia.html"; break; case "Japan": $redir = "Japan.html"; break; default: echo("Error!"); exit(); break; } echo " redirecting to: $redir "; // header("Location: $redir"); // end method 1 // method 2: dynamic redirect //header("Location: " . $varCountry . ".html"); // end method 2 exit(); } } ?>
Kedua pendekatan ini memiliki pro dan kontra. Metode switch pada dasarnya adalah metode singkat untuk menulis banyak pernyataan "jika". Setiap case cocok dengan variabel yang melewati switch dan melakukan semua tindakan setelah case tersebut hingga pernyataan break. Dalam hal ini, setiap kasus dialihkan ke halaman yang sesuai ke negara yang dipilih. Jika negara yang dipilih tidak ditemukan di salah satu kasus, kasus "default" diasumsikan, dan "Error. ” ditampilkan
Metode kedua hanya meneruskan nilai yang dipilih ke fungsi header untuk mengarahkan ulang ke halaman yang benar
Metode pertama memerlukan penulisan lebih banyak kode, tetapi lebih aman karena memastikan formulir hanya dialihkan ke 6 kasus yang telah diprogram sebelumnya, atau menampilkan pesan kesalahan dan mengakhiri eksekusi
Metode kedua jauh lebih ringkas, tetapi kurang aman karena pengguna jahat dapat mengutak-atik formulir dan mengirimkan nilai apa pun yang dia inginkan. Jika menggunakan metode 2, ada baiknya memvalidasi negara yang dipilih terlebih dahulu, untuk memastikan tidak akan mengakibatkan pengalihan ke halaman berbahaya