将变量从HTML表单传递到PHP

将变量从HTML表单传递到PHP,php,html,forms,Php,Html,Forms,我的表格中的一份意见书是选择你的对手。它有425个基于数据查询的选项。表单元素是一个选择列表名='opporter'。下面是生成用户看到的结果的行 while($opponent = mysqli_fetch_assoc($oresults)) { echo '<option value = "'. $opponent['id'] .'">'. $opponent['school'] .'</option>';

我的表格中的一份意见书是选择你的对手。它有425个基于数据查询的选项。表单元素是一个选择列表名='opporter'。下面是生成用户看到的结果的行

while($opponent = mysqli_fetch_assoc($oresults)) {              
    echo '<option value = "'. $opponent['id'] .'">'. $opponent['school'] .'</option>';          
}
while($opporter=mysqli_fetch_assoc($oresults)){
回音“.$opporter['school']”;
}
用户看到'school',但它将'id'传递给PHP。有没有一种方法可以将值和用户看到的选项发送给PHP

只有对手的“id”会进入数据表,但我还想将“学校”发送回用户,告诉用户“您的统计数据与“学校”的比较已经提交”


我知道我可以用另一个查询生成它,但我不想这样。

您可以将
id
school
作为字符串放在选项值中,然后将其转换为数组

echo '<option value = "'. $opponent['id'] .','. $opponent['school'] .'">'. $opponent['school'] .'</option>';
上面的代码将为您提供
$array=['id','school']
,您现在可以将其输出到页面

echo 'Your stats '. $array[0] .' vs school '. $array[1] .' has been submitted';

您可以发送包含两个或所有数据的JSON:

echo '<option value="'.htmlentities(json_encode($opponent)).'">'.$opponent['school'].'</option>';

您可以,但通常不需要,只需使用IdyYou从数据库中再次获取数据,您可以让JS进行提交,并将JS根据选择读取和传递的所有映射/对象中的名称都包含在内。。。第二个问题似乎更容易解决<代码>从id=?的表中选择名称应该占用最少的资源。您可以使用“唯一”值除数,如
,然后在处理表单结果时可以再次检索。@riggsfully这很有意义。我肯定会做这件事,然后汇报。“我知道我可以用另一个查询生成它,但我不想。”为什么不呢?您永远不应该信任任何用户输入。例如,用户可以将
whateverisinschool
更改为
whateverisinschool
,然后发送表单。然后在下一页上,您将显示一些确实不合适的内容。旁注:如果用户修改选项值(例如删除
),则在访问$array[1]时可能会引起通知(未定义索引)。你可以争辩说:如果用户修改了这些值,那是他/她的错。在这种情况下,我会说这是合理的。比尔贾斯汀我接受了里格斯富利的领导,并按照你的回答将其编码出来。它工作得很好。
echo '<option value="'.htmlentities(json_encode($opponent)).'">'.$opponent['school'].'</option>';
$opponent = json_decode($_POST['opponent'], true);
echo $opponent['school'];