注意:未定义的索引:第74行的C:\ xampp \ htdocs \ projects \ onlinevoting \ vote.php中的用户
投票
可能出现什么问题?
if (isset($_POST['display'])) {
$position_selected = $_POST['position_selected'];
$sql = "SELECT * FROM candidate WHERE position='$position_selected'";
$run_query = mysqli_query($db_conn, $sql);
if (mysqli_num_rows($run_query) > 0) {
$nr = mysqli_num_rows($run_query);
echo '<h3 style="font-size:2em;text-align:center">('.$nr.') ASPIRANTS FOR <span style="color:maroon;text-decoration:underline"> '.$position_selected.'</span></h3>';
while ($row = mysqli_fetch_array($run_query)) {
echo '<div class="asp">
<a class="votelink" href="?user='.$row["matno"].'"><img title="Click Image to Vote" height="300" width="300" src="data:image;base64,'.$row[6].' "></a><br><p style="font-weight:bolder;font-size:1.5em;width:300px;text-align:center;margin-bottom:0px;">'.$row[1].'<br><b><p style="font-size:1em;font-weight:bold;width:300px;text-align:center;margin-bottom:0px;">'.$row[2].'/'.$row[3].'</p><b><br>
</div>';
}
if ($_GET['user'] == $row["matno"]) {
echo 'Voted';
}
} else {
echo '<p style="color:darkred;font-weight:bolder;font-size:1.6em;text-align:center;">No candidate for this Position</p>';
}
}
?>
答案 0 :(得分:1)
根据您发布的内容,我猜测您并未检查$_GET
变量user
是否已设置。
更改此行
if ($_GET['user'] == $row["matno"]) {
到
if ((isset($_GET['user'])) && ($_GET['user'] == $row["matno"])) {
答案 1 :(得分:1)
将此作为答案而不是评论发布。
您正在“尝试使用GET获取候选人的主编号”,但是,在您的代码顶部,您正在测试是否
(isset($_POST['display'])) {
使用POST超级全局,并嵌套在其中
if ($_GET['user'] == $row["matno"]) {
。
虽然实际上有可能出现这种情况,但我相信这就是问题所在。您的表单使用什么方法:GET或POST?如果是GET,为什么isset($_POST)
测试。如果POST,表单的action属性是否在其查询字符串中包含用户变量?您可以从这里开始解决问题。
基本上,PHP报告未设置'user'数组成员,这很可能意味着表单的操作页面在其查询字符串中不包含user
变量。
我提出了两种可能的解决方案。
首先,最优选地,在表单中使用隐藏的输入字段,并将其值设置为用户的id。然后,测试$_GET['user']
,而不是测试$_POST['user']
。隐藏输入字段的HTML代码段如下:
<input type="hidden" name="user" value="Whatever_user_id_is"/>
然后替换
if ($_GET['user'] == $row["matno"]) {
与
if ($_POST['user'] == $row["matno"]) {
。
如果您希望坚持使用if ($_GET['user'] == $row["matno"]) {
语法/模式,另一种方法是将user
变量包含在表单的action属性中:
<form method="post" action="YOUR_FORMS_ACTION_PAGE?user=what_ever_user_is">
这样,当您提交表单时,user
变量将出现在GET超级全局数组中。
答案 2 :(得分:0)
那应该更好
if (isset($_POST['user'])) {
if ($_POST['user'] == $row["matno"])) {
}
}