php - 检索之前选择的下拉主题值

标签 php jquery mysql drop-down-menu

我遇到编码问题,因为当我再次单击激活它时,我无法获取所选下拉菜单多选版本 1.4.2 以从下拉菜单中检索先前选择的主题值。

我使用两个不同的表,每个表都有一个字段名称,因此我尝试将成员表中的 t_subjects 字段名称与类别表中的 name 字段名称进行匹配,如果存在匹配,主题字段名称将导致 <option value='subject_name' selected >subject_name</option>如果没有匹配,则为 <option value='subject_name'>subject_name</option>

This is what I'm trying to get to happen for those subjects that match when I click it anytime after the first post.

有四十二个主题会动态加载到选定的多选 dd 菜单选项中。

使用内爆方法将主题名称发布到数据库没有问题。

if(isset($_POST['submit']))
{
$subjects = implode(',', $_POST['subjects']);

但是,如果我再次打开页面以发布另一篇主题字段名称为空的帖子,则会收到一条错误消息:

Warning: implode() [function.implode]: Invalid arguments passed in...

因此,您可以明白为什么我需要在再次激活它时选择以前的主题值。这是所选 dd 菜单的代码。

<tr>
<td width="32%">Subjects:</td>
<td width="68%">

<input type="radio" name="utype" id="sutype" value="s" />Subject(s)


    <div id="studspan" style="display:none;">
    <strong style="vertical-align:top;">Select Subject(s) :</strong>

    <select name="subjects" id="subjects" data-placeholder="Select Subject(s)" style="width:350px;" multiple class="chosen-select">

    <?php
    $cat_sele = mysql_query("SELECT * FROM category");
    while ($cat_row=mysql_fetch_array($cat_sele)) {
    if($_POST['subjects'] == $cat_row['name']) $s = " selected"; else $s = "";
    echo "<option value='{$cat_row['name']}'$s>{$cat_row['name']}</option>";
    }
    ?>

    </select>

    </div>

问题似乎出在这部分代码:if($_POST['subjects'] == $cat_row['name']) ,因为当我替换 $_POST['subjects'] 时与 'Accounting'检查一下,当我再次激活它时,它会显示会计已被选择,但如果我添加另一个科目名称,它将显示所有选定的科目。我什至尝试过if($_POST['t_subjects'] == $cat_row['name'])以及 ("SELECT name FROM category") ,但它们也不起作用。因此,任何帮助这位老师使其发挥作用的帮助都将非常感激。

我还包含了该过程中涉及的代码的其他部分。

elseif($_SESSION['user_type']=="m")
    {
    $getuser_sele = "select * from member where member_id = '".$_SESSION['ses_id']."'";
    $getuser_qry = mysql_query($getuser_sele);
    $getuser_row = mysql_fetch_array($getuser_qry);
    $subjects = stripslashes($getuser_row['t_subjects']);

================================================== ==============

elseif($subjects=="" && $_SESSION['user_type']=="m")
    {
    $error="Please Enter Preferred Subjects";
    }    

================================================== ==============

elseif($_SESSION['user_type']=="m")
    {
    $qr=mysql_query("update member set
    t_subjects='".addslashes($subjects)."', 

================================================== ==============

<body onload="$('.chosen-select').show();
    $('.chosen-select').chosen();"> 

================================================== ==============

<script type="text/javascript">

$("#sutype").click(function () {

      $("#studspan").show(1000);
      $('.chosen-select').chosen('destroy');
      $('.chosen-select').show();
      $('.chosen-select').chosen();

    });

</script>

<script src="js/chosen.jquery.js" type="text/javascript"></script>

================================================== ==============

更新:

Tristan,它有效,但它显示了在选择列表中选择和取消选择的所有主题名称,这不是我想要发生的情况。我还在每个主题名称的源代码中收到以下错误。我只显示下面的第一个。

<b>Warning</b>: array_search() expects parameter 2 to be array, null given in <b>/home/.../.../edit.php</b> on line <b>2784</b><br /> <option value='Accounting' selected>Accounting</option><br />

我认为问题是如何在数据库中设置表/字段。

这是根据 t_subjects 的第一行应该发生的情况。如果我以成员(member) 1 身份登录并打开所选的 dd 菜单,则应选择 t_subjects 第一行中的会计、体育、艺术,而在所选的 dd 菜单中将不选择主题列表的其余部分。对于每个成员在第一次发布时列出的 t_subjects 行,都会发生这种情况。

all images to show what I'm talking about.

最佳答案

使用<select name="subjects" ... multiple>只会发送一项选择的发布数据。您需要使用<select name="subjects[]" ... multiple>发送帖子数据中所有选定的选项。

然后$_POST['subjects']将是一个数组,因此您需要在数组中搜索类别名称。

$cat_sele = mysql_query("SELECT * FROM category");
while ($cat_row=mysql_fetch_array($cat_sele)) {
    if(array_search($cat_row['name'], $_POST['subjects']) !== false) $s = " selected"; else $s = "";
    echo "<option value='{$cat_row['name']}'$s>{$cat_row['name']}</option>";
}

关于php - 检索之前选择的下拉主题值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33687817/

相关文章:

c# - 如何在 C# 中使用数据表中的 DateTime 填充对象?

php - 在 wordpress 上运行调整大小 Logo 脚本

javascript - jQuery 插件,带或不带选择器

php - 如何通过直接SQL查询在magento中设置产品的special_price?

c# - 当值为空时,Razor html 标签不会获取 ID

Javascript 与 jQuery 或 Javascript 一起淡入

php - 如何知道php文件是否正在运行?

php - 带密码的登录表单

php - CodeIgniter 路由在子目录中不起作用

php - 选择列的总和并显示 top 3 MAX Sum with limit LIMIT