我试图从<select>PHP中的标记中获取所选值,但是我收到错误.
这就是我所做的,
HTML
<select name="gender">
<option value="select"> Select </option>
<option value="male"> Male </option>
<option value="female"> Female </option>
</select>
Run Code Online (Sandbox Code Playgroud)
PHP脚本
$Gender = $_POST["gender"];
Run Code Online (Sandbox Code Playgroud)
但我得到这些错误
Notice: Undefined index: gender in C:\xampp\htdocs\omnama\signup.php on line 7
Run Code Online (Sandbox Code Playgroud)
PHP脚本
$Gender = isset($_POST["gender"]); ' it returns a empty string ? why ?
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
这是我的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";
}
?>
Run Code Online (Sandbox Code Playgroud)
请帮帮我.我必须在PHP中获取所选的索引值.
我已阅读此链接以<select>在PHP中使用标记.
您的表格有效.在我看到你的完整HTML之后,我想到的只是你传递了你的"默认"值(没有设置!)而不是选择一些东西.按照@Vina在评论中的建议尝试,即给它一个选定的选项,或者写一个默认值
<select name="gender">
<option value="default">Select </option>
<option value="male"> Male </option>
<option value="female"> Female </option>
</select>
Run Code Online (Sandbox Code Playgroud)
要么
<select name="gender">
<option value="male" selected="selected"> Male </option>
<option value="female"> Female </option>
</select>
Run Code Online (Sandbox Code Playgroud)
当你获得$ _POST vars时,检查它们是否被设置; 你可以分配一个默认值,或者只是一个空字符串,以防它们不存在.
最重要的是,避免SQL注入:
//....
$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';
Run Code Online (Sandbox Code Playgroud)