获取迭代的ul内容的唯一ID

时间:2014-12-18 07:46:34

标签: php html codeigniter

我在Codeigniter中使用PHP并且更新鲜。我在最近2天遇到了问题。

我有页面显示从数据库中提取并使用循环显示的事件列表。我成功地做到了。现在我想给出一个选项来编辑或删除应该进行db更改的单个事件。为此,我使用2个按钮;编辑和删除。注意所有都在一个循环中,因此在每个事件(项目)中重复相同的按钮。点击一个按钮后,它会显示一个模态。例如,当单击“删除”按钮时,它会显示一个要求确认删除的模式。该模态中的DELETE按钮提交我的表单并调用应该删除相应数据库条目的控制器函数。

如何识别该特定项目的ID,以便我可以删除或更新它?我总是得到第一个项目的ID。我引用了这个:passing php variable to modal window with click function

但我无法将这些与我的问题联系起来

以下是我的观点:

<ul class="timeline">

    <?php  
    if(isset($eventlist)){ 
      foreach ($eventlist as $events) { 
        <li class="yellow timeline-noline' > 
            <div class="timeline-time">
                        <span class="date" id="date" >
                        <?php if(!empty($events->event_date)){echo $events-   >event_date ;} ?> </span>
                                        <span class="time" id="time" >
                                        <?php if(!empty($events->event_time)){echo $events->event_time ;}?> </span>
                                    </div>
                                    <div class="timeline-icon">
                                        <i class="icon-trophy" style="margin-top:12px;"></i>
                                    </div>
                                    <div class="timeline-body">
                                    <div>
                                    <button type="button" title="Remove" id="remove" name="remove" href="#portlet-remove" data-toggle="modal" style="float:right;background-color: transparent;border: 0px;" ><i class="fa fa-trash-o"></i></button>
                                    <button type="button" title="edit" id="edit" name="edit"  href="#portlet-edit"  data-toggle="modal"style="float:right;background-color: transparent;border: 0px;" ><i class="fa fa-pencil-square-o"></i></button>
                                        <h2 id="title" ><?php if(!empty($events->event_title)){echo $events->event_title ;}?></h2>
                                    </div>

                                        <div class="timeline-content">
                                            <img class="timeline-img pull-left" src="<?php echo $this->config->base_url(); ?>assets/admin/pages/media/blog/2.jpg" alt="">
                                        <span id="desc" > <?php if(!empty($events->event_desc)){echo $events->event_desc ;}?>   </span>
                                        </div>
                                        <div class="timeline-footer">
                                            <a href="javascript:;" class="nav-link pull-right">
                                            <!--Read more <i class="m-icon-swapright m-icon-white"></i> -->
                                            </a>
                                        </div>
                                    </div>
                                </li>

                                <?php

                            }  }  ?>

                            </ul>

3 个答案:

答案 0 :(得分:2)

我通过使用以下代码更新来实现它:

function showmodal(id)
    {
    var eventid=id;
    document.getElementById("hiddenevent").value = eventid;
    $('#portlet-remove').modal('show');
    }

并在我的模态中添加了一个隐藏的输入

<input type="hidden" name="hiddenevent" id="hiddenevent">

更新了我的删除&#39;按钮为

<button type="button" title="Remove" id="remove" name="remove"  onClick="showmodal(<?php echo $events->event_id;?>)" href="" data-toggle="modal" style="float:right;background-color: transparent;border: 0px;" ><i class="fa fa-trash-o"></i></button>

答案 1 :(得分:1)

在您的标记ID按钮重复。它会导致html验证错误,如果您尝试访问带ID的按钮,它将始终指向具有相应ID的第一个元素。

您可以在删除按钮中使用用户定义的属性,如下所示,也可以使用class而不是ID。

 <button type="button" title="Remove" rel="id for identifying element $i " class="remove" name="remove" href="#portlet-remove" data-toggle="modal" style="float:right;background-color: transparent;border: 0px;" ><i class="fa fa-trash-o"></i></button>

Javascript喜欢这个

$('body').on('click','.remove',function(){
         var idUnique =   $(this).attr('rel');
         //You could pass this idUnique to controller for deletion.

    //Assign the idUnique to Hidden field inside modal body.
$('#selectedID').val(idUnique );
    });

答案 2 :(得分:0)

我必须清理你的代码。

echo "<ul class='timeline'>\n";
$i=0 ; $k=0;
if (isset($eventlist)) { 
    foreach ($eventlist as $events) { 
        $numb = count($eventlist);
        if($i == 6) { 
            $i=0; 
        }
        if ($k == $numb-1) {
            echo "<li class='".$class_array[$i]." timeline-noline' >\n";
        } else {
            echo "<li class='".$class_array[$i]."'>\n";
        }
        echo "<div class='timeline-time'>\n";
            echo "<span id='date' class='date'>\n";
            if (!empty($events->event_date)) {
                echo $events->event_date;
            }
            echo "</span>\n";
            echo "<span class='time' id='time'>\n";
            if (!empty($events->event_time)) {
                echo $events->event_time;
            }
            echo "</span>\n";
        echo "</div>\n";
        echo "<div class='timeline-icon'>\n";
            echo "<i class='".$icon_array[$i]."' style='margin-top:12px;'></i>\n";
        echo "</div>\n";
        echo "<div class='timeline-body'>\n";
            echo "<div>\n";
                echo "<button type='button' title='Remove' id='remove' name='remove' href='#portlet-remove' data-toggle='modal' style='float:right;background-color: transparent;border: 0px;'><i class='fa fa-trash-o'></i></button>\n";
                echo "<button type='button' title='edit' id='edit' name='edit' href='#portlet-edit' data-toggle='modal' style='float:right;background-color: transparent;border: 0px;'><i class='fa fa-pencil-square-o'></i></button>\n";
                echo "<h2 id='title' >\n";
                    if (!empty($events->event_title)) {
                        echo $events->event_title;
                    }
                echo "</h2>\n";
            echo "</div>\n";
            echo "<div class='timeline-content'>\n";
                echo "<img class='timeline-img pull-left' src='".$this->config->base_url()."assets/admin/pages/media/blog/2.jpg' alt=''>\n";
                echo "<span id='desc'>\n";
                    if (!empty($events->event_desc)) {
                        echo $events->event_desc;
                    }
                echo "</span>\n";
            echo "</div>\n";
            echo "<div class='timeline-footer'>\n";
                echo "<a href='javascript:;' class='nav-link pull-right'>\n";
                echo "<!--Read more <i class='m-icon-swapright m-icon-white'></i> -->\n";
                echo "</a>\n";
            echo "</div>\n";
        echo "</div>\n";
    echo "</li>\n";
$i++; $k++; 
    }
}
echo "</ul>\n";

你和#34;之间有一个巨大的空白区域?&#34;和&#34;&gt;&#34;在14-15线。

您似乎正在尝试使用 foreach -type循环为类型循环创建。当您知道循环运行的次数时,将使用 for foreach 将循环遍历数组,直到数组为空。如果您想继续使用foreach,那么您没有理由使用这些

if($i == 6) { }
$i=0; $k=0;
$class_array[$i]
$icon_array[$i]
$i++; $k++;

我很确定这......

echo $events->event_desc;

......不行,但由于我不知道你想要完成什么,我不会再说什么了。