我试图从PHP中的<select>
标记获得所选值,但我得到错误。
这就是我所做的,
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:xampphtdocsomnamasignup.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中获得选定的索引值。我已经阅读了这个链接,在PHP中使用<select>
标签。
您的表单有效。在看到完整的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变量时,检查它们是否被设置;你可以指定一个默认值,或者只是一个空字符串,以防它们不存在。
最重要的是,避免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';
如你所说…
$Gender = isset($_POST["gender"]); ' it returns a empty string
因为,您没有提到方法类型使用POST或GET,默认情况下它将使用GET方法。另一方面,您试图通过使用POST方法检索值,但在您没有提到POST方法的形式中。这意味着miss-match方法的结果将为空。
试试这段代码。
<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;