【问题标题】:Need to show selected values along with the un-selected values in select box from database - php codeigniter需要在数据库的选择框中显示选定的值以及未选定的值 - php codeigniter
【发布时间】:2019-12-18 14:47:51
【问题描述】:

我陷入了困境。我正在使用代码点火器。

问题是我正在处理自定义 CMS,而我正在处理编辑页面。

有两张桌子,第一张是tours,第二张是 tours_cat

表格名称:游览

表名:tours_cat

我写了一些代码来从 tour 表中获取选定的旅游信息,对于类别,我只得到了 cat_id,所以我编写了一些代码来使用这些 cat_id 获取类别名称。

以下是代码:

<select id="tour_category" class="form-control" name="tour_category[]" multiple="multiple" required>
 <?php
  $catIds = explode(',', $tours->tour_page_category);
  foreach ($catIds as $cid) {
   foreach ($categories as $c) {
    if($cid == $c['id'])
     {
       echo '<option value="'.$c['id'].'" selected>'.$c['cat_name'].'</option>';
     }
    }
   }
 ?>
</select>

这是来自 tour 表的 $catIds 数组:

Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
    [4] => 6
    [5] => 7
)

这是来自 tours_catcategories 数组 表

Array
(
    [0] => Array
        (
            [id] => 1
            [cat_name] => Uncategorized
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [1] => Array
        (
            [id] => 2
            [cat_name] => Family
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [2] => Array
        (
            [id] => 3
            [cat_name] => Religion & Spirituality
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [3] => Array
        (
            [id] => 4
            [cat_name] => Wildlife
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [4] => Array
        (
            [id] => 5
            [cat_name] => Cuisine(Food Tours & Food Walks)
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [5] => Array
        (
            [id] => 6
            [cat_name] => Boat Trips
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [6] => Array
        (
            [id] => 7
            [cat_name] => Short Tours(Half Day tours/Walking Tours/Day Excursions)
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

    [7] => Array
        (
            [id] => 8
            [cat_name] => Weekend Gateways
            [cat_summery] => 
            [updated] => 2019-08-11 01:01:02
            [created] => 2019-08-11 01:01:02
        )

)

以下是使用上述代码生成的结果:

这是我想要展示的结果。我想显示所有记录,但如果该类别保存在数据库中,则应在选择框中选择它:

对不起,伙计们,我的问题太长了,但这是我关于这个问题的第三个问题。所以这就是为什么我在这里用截图详细说明所有的东西。如果有人帮助我,那将是很大的帮助。

【问题讨论】:

  • 我不清楚你的问题。是否要提交具有多个选定类别的表单并保存到数据库?
  • 引用文本格式适用于您实际引用某人或某事时。请停止滥用它来使您自己的话“看起来更丰富多彩”或任何意图。

标签: php html arrays codeigniter select


【解决方案1】:

您应该遍历tours_cat 表中的所有类别,而不是迭代tours 表中的类别,并使用tours 表中的类别ID 来决定是否为selected 设置每个选项。像这样的:

$catIds = explode(',', $tours->tour_page_category);
foreach ($categories as $c) {
    echo "<option value =\"{$c['id']}\"";
    if (in_array($c['id'], $catIds)) echo " selected";
    echo ">{$c['cat_name']}</option>";
}

输出

<option value ="1">Uncategorized</option> 
<option value ="2" selected>Family</option> 
<option value ="3" selected>Religion&Spirituality</option> 
<option value ="4" selected>Wildlife</option>
<option value ="5" selected>Cuisine(FoodTours&FoodWalks)</option> 
<option value ="6" selected>BoatTrips</option> 
<option value ="7" selected>ShortTours(HalfDaytours/WalkingTours/DayExcursions)</option> 
<option value ="8">WeekendGateways</option>

Demo on 3v4l.org

【讨论】:

  • 嗨尼克,这是一个很大的帮助......我在过去的 3 天里一直坚持下去。再次感谢您。
  • @PawanMall 不用担心。我很高兴能帮上忙。
猜你喜欢
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多