在php中获取<select>标签的选定索引值
Posted
技术标签:
【中文标题】在php中获取<select>标签的选定索引值【英文标题】:get the selected index value of <select> tag in php 【发布时间】:2011-10-08 08:11:23 【问题描述】:我试图从 php 中的 <select>
标记中获取选定的值,但出现错误。
这就是我所做的,
<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 中获取选定的索引值。
我已阅读此 link 以在 PHP 中使用 <select>
标记。
【问题讨论】:
$Gender = isset($_POST["gender"]); ' it returns a null string ? why ?
--- 此代码不能根据定义返回null
空!我的意思是当我打开并看到 mysql 时,我在数据库中看到一个空字符串!
您的表格是有效表格吗?意思是,在<form></form>
标签之间并带有提交按钮
@niko:空字符串与null
不同。使用var_dump($Gender);
和var_dump($_POST);
来查看您实际拥有的东西(无需进一步猜测)
然后Bobby Tables 再次骑行。
【参考方案1】:
您的表格有效。我唯一想到的是,在看到您的完整 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';
【讨论】:
【参考方案2】:如你所说..
$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"];
我确定..现在,您将获得价值..
【讨论】:
我在我的 html.sorry 中使用了 method="post" 但你错过了它,在滚动后面!总之谢谢【参考方案3】:$gender = $_POST['gender'];
echo $gender;
它将回显所选值。
【讨论】:
以上是关于在php中获取<select>标签的选定索引值的主要内容,如果未能解决你的问题,请参考以下文章