【问题标题】:Pass Image ID to URL segment将图像 ID 传递给 URL 段
【发布时间】:2016-05-29 17:51:53
【问题描述】:

我正在尝试单击图像上的下一个按钮以从从数据库获取的结果中加载下一个图像,但加载了一个新页面,因此引导轮播无法按我的需要工作。

假设我有一张包含 3 张图片的相册。这些图像的图像 ID 是 - 25、34、36。当我查看包含所有图像的相册时,我可以单击图像 ID 34。当我单击下一步时,这将带我到 www.domain.com/image/34想要重定向到 www.domain.com/image/36 然后再次单击下一步将重定向到 www.domain.com/image/25

这就是我目前所拥有的:

控制器:

function index($image_id)
{
    // get album data                       
    $this->data['image_data'] = $this->album_model->get_album_image_data($image_id);

    $album_id = $this->data['image_data']->album_id;
    $this->data['album_images']  = $this->album_model->get_all_images($album_id);

    $data = $this->data;           

    $this->_render_page('images/image', $data);
}

查看:

foreach($album_images as $img)
{
    if($img->image_id == $this->uri->segment(2))
    {
        echo '<img src="'.$img->image_url.'" class="img-responsive img-panel" class="img-responsive" />';
    }  
}
<!-- Image nav -->
<a class="fui-arrow-left left" href="#"></a>
<a class="fui-arrow-right right" href="#"></a>

如何获取下一个和上一个 image_id?

如果我需要提供更多信息,请告诉我。

【问题讨论】:

  • 如果 ID 为 24 则获取下一个 ID 为 SELECT ID FROM TABLE WHERE ID &gt; 24 LIMIT 1 ... 比 ID > 34 ... 以此类推
  • 获取你所有的 id 并将它们存储在一个数组中——然后它只是使用索引 id 检索数据并执行任何操作的情况——+1 表示下一个或 -1 表示上一个—— w3schools.com/php/php_arrays.asp
  • foreach不是已经给出数组了吗?我应该把$img-&gt;image_id 存储在另一个数组中吗?
  • 好吧,这看起来像数组 ($album_images) 但我不确定它是什么类型的数组——不管你仍然通过索引位置 id 去检索数据。我认为如果您使用 ajax 来检索数据并使用 Jquery 创建数组会更好。如果您采用 php 方式,您可能需要为下一个或上一个 id 使用 cookie
  • @Tasos 我以前从未这样做过。如果你能举个例子那就太好了。

标签: php jquery image twitter-bootstrap codeigniter-3


【解决方案1】:

可以使用分页,先加载分页库.$this-&gt;load-&gt;library('pagination'); 参考https://codeigniter.com/user_guide/libraries/pagination.html?highlight=pagination

控制器

public function index()
{
   $config['base_url'] = site_url('dashboard-clients');
   $config['total_rows'] = //total count of your image or data
   $config['per_page'] = 1;

  //show the number of pages
  $choice = $config['total_rows']/$config['per_page'];
  $config['num_link'] = round($choice);
  $this->pagination->initialize($config);
  $page = ($this->uri->segment(2)) ? $this->uri->segment(2) :0;
  $result = $this->Your_Model->get('table name',$config['per_page'], $page)
  $str_links = $this->pagination->cretae_links();
  $data['links'] = explode('&nbsp', $str_links);
  if($result != FALSE)
  {
    $data['data'] = $result;
    $this->load->view('yoyr view file', $data);
  }
}

型号

public function get($table, $limit, $start)
{
  $this->db->limit($limit, $start);
  $query = $this->db->get($table);
  if($query->num_rows() > 0)
  {
    return $query->reult();
  }
  else
    return FALSE;
}

查看

foreach($data as $img)
{
     echo '<img src="'.$img->image_url.'" class="img-responsive img-panel" class="img-responsive" />'; 
}
//create links like 1 ,2, 3,next
<div id="pagination" align="center">
     <ul class="pagination">
         <?php if (isset($links) and is_array($links)) {
              foreach ($links as $link) {
                  echo '<li>'.$link.'</li>';
               }
           }?>
     </ul>
</div>

【讨论】:

    【解决方案2】:

    感谢所有建议,但实际上我找到了一种更简单、更清洁的方法。

    我发现了这个 function,我用它创建了一个数组助手,它帮助我将图像 ID 存储在一个数组中。

    一旦我能够根据需要将我的 id 存储在一个数组中,我就将其添加到我的视图中:

    $index = array_search($this->uri->segment(2), $image_ids);                        
    $next = (count($image_ids) == $index+1) ? $image_ids[0] : $image_ids[$index+1];                        
    $prev = ($index == 0) ? $image_ids[count($image_ids)-1] : $image_ids[$index-1]; 
    
    <a class="fui-arrow-left left" href="<?=$prev?>"></a>
    <a class="fui-arrow-right right" href="<?=$next?>"></a>
    

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2015-11-22
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多