【发布时间】:2017-05-09 13:09:21
【问题描述】:
我正在创建一个表单,其中将根据单选按钮的选择生成一个下拉列表。
日志名称存储在一个表中,类型为1或2。选择单个单个按钮期刊时,杂志类型的过滤器为1,对于另一个,它将是2.我使用以下代码来生成表单.
<?php
$ctype = 1 // $ctype created for filtering purpose
?>
<p> Article For:
Journal <input type="radio" name="article_for" value="Journal" id="article_journal" />
Conference <input type="radio" name="article_for" value="Conference" id="article_conference" />
</p>
<?php
// $ctype will depend upon selection from radio button. If selection is "Journal"
// value of $ctype to set 1 otherwise to set 2.
$selectrecord = "SELECT `content_id`, `content_type`, `content_name` FROM `content` where `content_type` = $ctype";
$result = mysqli_query($connection,$selectrecord) or die(mysqli_error($connection));
?>
<p> Journal Name:
<select name='content_id'>
<?php
while ($row = $result->fetch_assoc()) {
unset($id, $name);
$id = $row['content_id'];
$name = $row['content_name'];
echo '<option value="'.$id.'">' . $name . '</option>';
}
?>
</select>
</p>
我可以使用类似的代码集来检查选定的单选按钮
if(document.getElementById('article_journal').checked) {
但是在这个 if 子句中,我不能为变量 $ctype 赋值——它被用来过滤下拉列表的名称。
请帮助我找出我做错了什么。
最好的问候。
【问题讨论】:
-
不可能这样,因为javascript只是客户端,php服务器端而已。您正在寻找的是 ajax。或者您可以发送表单并重新加载页面以获取匹配值(更简单,但不是用户友好)。
-
感谢@Jeff,我也想到了这一点,因为我可能没有以正确的方式思考。谢谢你的线索。
-
因此,最好的方法是在其中一个无线电发生变化时启动 ajax 调用。使用选定的值调用 php-script,在 php-script 中生成所需的列表并在 ajax-success 回调中接收,然后插入到 html 中。
-
如果下拉列表不太长,您也可以在页面加载时创建它们并隐藏其中一个。然后,您可以使用简单的 javascript/jQuery 切换
hide和show。
标签: javascript php filtering