Я пытался получить выбранное значение из <select>
в PHP, но получаю ошибки.
Это то, что я сделал,
HTML
<select name="gender"> <option value="select"> Select </option> <option value="male"> Male </option> <option value="female"> Female </option> </select>
PHP-скрипт
$Gender = $_POST["gender"];
но я получаю эту ошибку
Notice: Undefined index: gender in C:\xampp\htdocs\omnama\signup.php on line 7
скрипт php
$Gender = isset($_POST["gender"]); ' it returns a empty string ? why ?
HTML
<form name="signup_form" action="./signup.php" onsubmit="return validateForm()" method="post"> <table> <tr> <td> First Name </td><td> <input type="text" name="fname" size=10/></td></tr> <tr> <td> Last Name </td><td> <input type="text" name="lname" size=10/></td></tr> <tr> <td> Your Email </td><td> <input type="text" name="email" size=10/></td></tr> <tr> <td> Re-type Email </td><td> <input type="text" name="remail"size=10/></td></tr> <tr> <td> Password </td><td> <input type="password" name="paswod" size=10/> </td></tr> <tr> <td> Gender </td><td> <select name="gender"> <option> Select </option> <option value="male"> Male </option> <option value="female"> Female </option></select></td></tr> <tr> <td> <input type="submit" value="Sign up" id="signup"/> </td> </tr> </table> </form>
Это мой php-скрипт
<?php $con = mysql_connect("localhost","root",""); $fname = $_POST["fname"]; $lname = $_POST["lname"]; $email = $_POST["email"]; $paswod = $_POST["paswod"]; $Gender = $_POST["gender"]; mysql_select_db("homepage"); if(mysql_num_rows(mysql_query("SELECT Email FROM users WHERE Email = '$email'",$con))) { echo "userid is already there"; } else { $sql= "INSERT INTO users (FirstName, LastName,Email,Password,Gender) VALUES ('$fname','$lname','$email','$paswod','$Gender')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "created"; } ?>
Пожалуйста, помогите мне с ними. Мне нужно получить значение выбранного индекса в PHP.
Я прочитал эту ссылку, чтобы использовать <select>
в PHP.
Ваша форма действительна. Единственное, что приходит мне на ум, – это увидеть ваш полный html, что вы передаете свое значение по умолчанию (которое не установлено!) Вместо того, чтобы что-то выбрать. Попробуйте, как было предложено @Vina в комментарии, то есть предоставив ему выбранную опцию или записывая значение по умолчанию
<select name="gender"> <option value="default">Select </option> <option value="male"> Male </option> <option value="female"> Female </option> </select>
ИЛИ
<select name="gender"> <option value="male" selected="selected"> Male </option> <option value="female"> Female </option> </select>
Когда вы получаете ваши $ _POST vars, проверьте их установку; вы можете присвоить значение по умолчанию или просто пустую строку, если их там нет.
Самое главное, ИЗБЕГАЙТЕ SQL INJECTIONS:
//.... $fname = isset($_POST["fname"]) ? mysql_real_escape_string($_POST['fname']) : ''; $lname = isset($_POST['lname']) ? mysql_real_escape_string($_POST['lname']) : ''; $email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : ''; you might also want to validate e-mail: if($mail = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $email = mysql_real_escape_string($_POST['email']); } else { //die ('invalid email address'); // or whatever, a default value? $email = ''; } $paswod = isset($_POST["paswod"]) ? mysql_real_escape_string($_POST['paswod']) : ''; $gender = isset($_POST['gender']) ? mysql_real_escape_string($_POST['gender']) : ''; $query = mysql_query("SELECT Email FROM users WHERE Email = '".$email."')"; if(mysql_num_rows($query)> 0) { echo 'userid is already there'; } else { $sql = "INSERT INTO users (FirstName, LastName, Email, Password, Gender) VALUES ('".$fname."','".$lname."','".$email."','".paswod."','".$gender."')"; $res = mysql_query($sql) or die('Error:'.mysql_error()); echo 'created';
Как ты сказал..
$Gender = isset($_POST["gender"]); ' it returns a empty string
потому что вы не указали тип метода, либо используете POST или GET, по умолчанию он будет использовать метод GET. С другой стороны, вы пытаетесь получить свое значение с помощью метода POST, но в том виде, в котором вы не указали метод POST. Это означает, что метод совпадения результатов будет пустым.
Попробуйте этот код ..
<form name="signup_form" action="./signup.php" onsubmit="return validateForm()" method="post"> <table> <tr> <td> First Name </td><td> <input type="text" name="fname" size=10/></td></tr> <tr> <td> Last Name </td><td> <input type="text" name="lname" size=10/></td></tr> <tr> <td> Your Email </td><td> <input type="text" name="email" size=10/></td></tr> <tr> <td> Re-type Email </td><td> <input type="text" name="remail"size=10/></td></tr> <tr> <td> Password </td><td> <input type="password" name="paswod" size=10/> </td></tr> <tr> <td> Gender </td><td> <select name="gender"> <option value="select"> Select </option> <option value="male"> Male </option> <option value="female"> Female </option></select></td></tr> <tr> <td> <input type="submit" value="Sign up" id="signup"/> </td> </tr> </table> </form>
и на странице регистрации
$Gender = $_POST["gender"];
я уверен … теперь, вы получите значение ..
$gender = $_POST['gender']; echo $gender;
он будет отгонять выбранное значение.