【问题标题】:Filter records based on radio button selection根据单选按钮选择过滤记录
【发布时间】: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


【解决方案1】:

最后,我决定创建多个页面,其中相关字段在物理上位于相距很远的表单中。 POST 变量解决了这个问题。在它们彼此相邻的地方,我使用 jQuery 来过滤选项。

【讨论】:

  • 我的问题已解决,但我不知道如何将此问题标记为“已解决”。
猜你喜欢
  • 2019-10-18
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多