0

这是我最新的问题。我已经完成了布局并且一切正常,但现在我正试图找出这部分的 php 方面。我想要做的是如何具体说明使用 php 检查了哪个单选按钮?我尝试使用 $_POST['ins'] (其中 'ins' 是插入按钮的 ID),但这不起作用。我希望它在检查插入按钮时起作用,做任何步骤,但我不知道如何得到它,所以说插入按钮正在被选择/检查。

这是我的代码

<html>
<head><title></title>
<script type="text/javascript">

function show()
{
if (document.getElementById('ins').checked){
document.getElementById("p1").style.display = "block"
document.getElementById("zn").style.display = "block";
document.getElementById("p2").style.display = "block"
document.getElementById("gpa").style.display = "block";
document.getElementById("p3").style.display = "none"
document.getElementById("ngpa").style.display = "none";
}
else if (document.getElementById('upd').checked){
document.getElementById("p1").style.display = "block"
document.getElementById("zn").style.display = "block";
document.getElementById("p2").style.display = "none"
document.getElementById("gpa").style.display = "none";
document.getElementById("p3").style.display = "block"
document.getElementById("ngpa").style.display = "block";
}
else {
document.getElementById("p1").style.display = "block"
document.getElementById("zn").style.display = "block";
document.getElementById("p2").style.display = "none"
document.getElementById("gpa").style.display = "none";
document.getElementById("p3").style.display = "none"
document.getElementById("ngpa").style.display = "none";
}
}

function check()
{
    if((document.getElementById("zn").value == "") ||   (document.getElementById("gpa").value == "") ||
    (isNaN(parseFloat(document.getElementById("gpa").value))))
    {
        alert("Please complete both fields and check to see if the GPA entered is a number!");
        return false;
    }
    return true;

}
</script>



</head>
<body>
<form action = "index.php" onsubmit="return check();">
<input type="radio" name="group" id = "ins" onclick ="show()"/> Insert Student <br />
<input type="radio" name="group" id = "upd" onclick ="show()"/> Update Student <br />
<input type="radio" name="group" id = "del" onclick ="show()"/> Delete Student <br />
<p id="p1" style="display:none">Enter Z-number: <br /></p>
<input type='text' name = 'z' id ="zn" maxlength='9' style="display:none"/>
<p id="p2" style="display:none"><br />Enter GPA: <br /></p>
<input type='text' name='gpa' id ="gpa" style="display:none"/>
<p id="p3" style="display:none"><br /> Enter new GPA: <br /></p>
<input type="text" name ="ngpa" id ="ngpa" style="display:none"/>
<br /><input type='submit' value='Submit request' name='submit'/>
</form>
<?php
if (isset($_POST['z'])) {
$con = mysql_connect('localhost', '*****', '***********');
if ($con) {
mysql_select_db('ghamzal', $con);

$a = $_POST['z'];
$b = $_POST['gpa'];
$sql = "INSERT INTO Students VALUES (' $a ' ,  '$b')";

if (mysql_query($sql, $con)) echo 'Operation succeeded';
else echo 'Not succeeded ' .mysql_error();




if (isset($_POST['ins'])) {
$sql = "SELECT * FROM Students";
$res = mysql_query($sql, $con);

echo "<table border ='1'>";
echo "<tr><th>Znum</th><th>GPA</th></tr>";
while ($r = mysql_fetch_array($res)) {
echo "<tr><td>".$r['Znum']."</td><td>".$r['gpa']. "</td></tr>";
}
echo "</table>";
}
mysql_close($con);
}
else {
echo 'Insertion failed'. 'Could not connect to DB.';}

}

?>
</body>
</html>
4

2 回答 2

3

至于您的问题(如果我没听错的话)-您应该将每个无线电的value属性设置为您计划在服务器端代码中识别它时使用的属性,例如:

<input type="radio" name="group" value="ins" id = "ins" onclick ="show()"/> Insert Student <br />
<input type="radio" name="group" value="upd" id = "upd" onclick ="show()"/> Update Student <br />
<input type="radio" name="group" value="del" id = "del" onclick ="show()"/> Delete Student <br />

在服务器端,选择的收音机的值可以通过组名作为 POST 参数访问,在您的情况下:

$_POST['group']

而且..我非常同意eggyal 的评论,并建议您查看准备好的语句(以及一般的SQL 注入)。

祝你好运!

于 2012-04-28T16:13:54.657 回答
2

这里有几个不同的问题。第一个是您的表单正在使用 GET 方法提交,但您试图在 PHP 中检索您的值,就好像它是使用 POST 方法提交的一样。由于您要更新数据库中的值,因此最好使用 POST 方法,因此您的表单开始标记应更改为:

<form method="post" action="index.php" onsubmit="return check();">

输入的“名称”字段最终出现在您的$_POST变量中,该变量的值是所选输入的值。

因此,您应该将输入更改为如下所示:

<input type="radio" name="selection" value="ins" id="ins" onclick="show()"/><label for="ins">Insert Student</label><br />
<input type="radio" name="selection" value="upd" id="upd" onclick="show()"/><label for="upd">Update Student</label><br />
<input type="radio" name="selection" value="del" id="del" onclick="show()"/><label for="del">Delete Student</label><br />

(我添加了<label>标记,因为包含它是一种很好的做法。它有​​助于可访问性,如果人们单击单选按钮的标签,它会将其视为单击单选按钮本身。)

现在在您的 PHP 代码中:

$selection = $_POST['selection'];

现在$selection将包含表示选择了哪个单选按钮的值,您可以执行适当的逻辑:

if ($selection == "ins") {
     // do work here
} elseif ($selection == "upd") {
     // do work here
}
// etc.
于 2012-04-28T16:12:26.043 回答