Intereting Posts
PHP HTTP POST на Android-устройстве с использованием HttpURLConnection Динамическое изменение позиции корзины не работает с заказами в WooCommerce 3.0+ Добавить значение для URL-адреса в форме Отправить с помощью JQuery использование класса phpmailer Удаление значения из массива PHP Запросить набор точек в AREA на расстоянии от сегмента линии Добавить … если строка слишком длинная PHP Неправильный URL-адрес при выполнении запроса mysql (не следуя инструкциям по расположению заголовка php) Выполнить PHP-скрипты в веб-сервере Node.js Не получать уведомления о выходе для производственного сертификата Проверьте, существует ли значение в mysql Обеспечение взаимодействия с MySQL в функции PHP simplexml_load_file parse => Массив Как создать константные массивы экземпляров класса внутри этого класса? PHP regex: как преобразовать строку HTML со ссылками в обычный текст, который показывает URL-адрес после текста в скобках

получить выбранное значение индекса тега <select> в php

Я пытался получить выбранное значение из <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; 

он будет отгонять выбранное значение.