我看过这个答案enter link description here
但是我无法使我的代码工作,这就是我在selectcategory.php文件中的内容。我想在此文件中设置此变量$ selectedcategory。底部的Echo命令仅用于测试目的。
我的代码:
<?php
include_once('config.php');
$query1 = mysqli_query($query, "SELECT category FROM `events` GROUP BY category");
echo "<select name'selectedcategory'>";
while ($row = mysqli_fetch_assoc($query1)){
echo "<option value='".$row['category']."'>".$row['category']."</option>";
}
echo "</select>";
$selectedcategory=$_POST['selectedcategory'];
echo $selectedcategory;
?>
我哪里弄错了?在其他文件中,我通过此POST方法从INPUT或具有给定名称的SELECT元素获取变量。在这个文件错误是在第10行 - UNDEFINIED VARIABLE,所以我在哪里弄错了? 提前谢谢,如果需要更多说明,请询问。
ps:我知道我的代码有错误,但请专注于现在获取变量。在这个论坛上的其他问题中,人们只是评论我的代码例如易于注入,但没有问题本身的新信息或防止这种注入(评论者发现的问题),我想防止这种情况。 通过评论者识别问题是很好的学习方法,但请提供一些论据,说明为什么它是一个问题或一些与问题相关的链接。
答案 0 :(得分:0)
在您提交表单之前,您的表单字段/值不会存储在$ _POST数组中。
您需要将您的选择字段包装在<form method="POST"></form>
中,并提供一个提交按钮,以便开始此过程。
开始阅读:https://www.w3schools.com/tags/att_form_method.asp
如果您要提交到同一页面,则可能需要使用以下内容:
include_once('config.php'); // labeling your connection '$query' doesn't seem like good practice and may trip you up in the future.
$result=mysqli_query($db,"SELECT category FROM `events` GROUP BY category");
if(isset($_POST['selectedcategory'])){
$selected=$_POST['selectedcategory'];
}else{
$selected="";
}
echo "<form action=\"\" method=\"POST\">";
echo "<select name=\"selectedcategory\">";
echo "<option></option>";
if($result){
while($row=mysqli_fetch_assoc($result)){
echo "<option value=\"{$row['category']}\"",($selected==$row['category']?" selected":""),">{$row['category']}</option>";
}
}
echo "</select>";
echo "<input type=\"submit\" value=\"Submit\">";
echo "</form>";
....
据我所知,对于刚接触php的人来说,内联条件语句很难阅读。
这是多行的样子:
echo "<option value=\"{$row['category']}\"";
if($selected==$row['category']){
echo " selected"; // only mark this option as "selected" if values match
}else{
echo ""; // otherwise, do not mark it with "selected"
}
echo ">{$row['category']}</option>";
如果有人曾设法POST一个与循环中的任何数据库值都不匹配的值,那么<option>
都不会获得select
属性,{ {1}}默认会显示第一个/前<select>
。