菜单和 PHP

菜单和 PHP

我正在使用菜单尝试将数据导入数据库。我见过这种情况,

<select name="exam" id="exam" style="background-color: #FFDDF4">
   <option></option>
   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>
</select>

如果没有这一行,

$selected = ($exam == $key) ? 'selected' : '';

是否可以将选定的值放入数据库中?变量 $exam 是选择元素的实际名称吗?

谢谢,肖恩

答案1

是的,可以将数据放入数据库 - 您可以省略该行,它仍然会将其提交到数据库。

变量“exams”是一个数组结构,其中包含要在屏幕上显示的所有选项。它不是 select 元素的名称。select 元素在第一行中通过 name="exam" 定义,即“exam”。

我之前没有遇到过有问题的行,但它显然是在特定选项上设置“选定”字段。然后,此“选定”字段将用作默认值,但除了将其显示为默认选项外,它在实际提交表单时没有任何重要性。

让我们分解一下与网络查询相关的代码元素:

开头的 定义了该字段是一个选择框。name、id 和 style 字段用于格式化页面的外观,因此与提交回数据无关。

这将字段字段中的下拉选项最初定义为空。据推测,这适用于以前从未尝试填写表单的人。

   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>

这就是有趣的地方。$exams 几乎肯定是一个数组,因此是一个变量结构 - 下面是一个可能的结构的例子,我将用它来回答。

$exams['English']='English 101';
$exams['Maths']='Calculus';
$exams['Science']='Lab Experiments';

“foreach” 告诉 PHP 遍历数组中的每个元素,定义一个键和选项值。

因此,第一次循环(给定我的数组)时,第一次循环时,$key 将是“English”,值将是“English 101”。第二次循环时,$key 将是“Maths”,值将是“Calculus”,依此类推。

echo "<option value='$key' $selected>$option</option>";

编写 HTML 代码,因此在浏览器查看时,它将看起来像英语 101 微积分实验室实验

然后,浏览器中将显示“英语 101”、“微积分”和“实验室实验”,但提交表单时,它将发布“英语”、“数学”或“科学”的值,具体取决于选择的内容。

我猜 $selected 不会在第一次显示页面时使用,但是如果页面已被查看并正在显示给用户 - 例如如果它进行了一些错误检查并发现了错误但想要显示它收到的表单 - 那么 $selected 将具有用户先前选择的选项的“selected”值,否则它将为空白。这将告诉浏览器显示适当的字段。

endforeach 大概会结束迭代。(这里使用的语法也不同于典型的语法 - 通常你只需要使用括号)。

相关内容