CRUD Вопрос с Codeigniter - PullRequest
       13

CRUD Вопрос с Codeigniter

0 голосов
/ 25 апреля 2010

У меня есть база данных с записями в блоге. Желаемый вывод, который я пытаюсь получить, - это 3 записи, отображаемые с использованием мульти параграфа css3, а затем еще 3 (или более), отформатированные с помощью codeigniter Character_limiter. Поэтому мне нужно 3 дисплея, отформатированные одним способом, и 3+, отформатированные другим способом на той же странице.

Пока это то, что у меня есть, но я не знаю, как отформатировать sql для достижения того, что я хочу. Я могу называть все сообщения в порядке убывания, как я хочу, но не знаю, как отделить код для достижения моего вывода Контроллер:

$this->db->order_by('id', 'DESC');
$this->db->limit('2');
$query = $this->db->get('posts');
if($query->result())
$data = array();
{
$data['blog'] = $query->result();
}
$data['title'] = 'LemonRose';
$data['content'] = 'home/home_content';
$this->load->view('template1', $data); 

Вид:

    <?php if (isset($blog)): foreach ($blog as $row): ?>
<span class="title"><?php echo $row->title; ?> </span>
<?php echo $row->date; ?>
<div class="split"><?php echo $row->post =$this->typography->auto_typography($row->post); ?></div>
<?php echo 'Post #',$row->id; ?>
<p> Trackback URL: <? echo base_url()."trackbacks/track/$row->id";?></p>    
<hr />
<?php endforeach; 
endif;
?>

Разделенный класс состоит из нескольких столбцов. Я пробовал 2 разных запроса, но не знаю, как разделить все сообщения. Кроме того, один запрос всегда перекрывает второй и создает все разделенные или все символьные ограниченные абзацы.

Я потерян здесь, лол. Спасибо

1 Ответ

1 голос
/ 25 апреля 2010

Мне нужно 3 дисплея, отформатированные одним способом, и 3+, отформатированные другим способом на той же странице.

Это звучит как логика отображения, что означает, что это работа для вашего взгляда. Ваш контроллер может просто выполнить один запрос, получая все или некоторые записи (скажем, самые последние 10), и передать его представлению, чтобы решить, как отображать данные.

По вашему мнению, вы можете просто использовать условную логику в цикле foreach (), чтобы определить, как выводить данные поста.



$limit = 3; // how many posts should we show in full?
$i     = 1; // count

foreach ($blog as $row): 

if( $i < $limit ) // we are under our limit
{
  echo $row->post; // show full post   
}   
else // we are over our limit
{
  echo $this->typography->auto_typography($row->post); // show truncated post 
}

$i++; // increase count

endforeach; 
unset($limit,$i,$row)


Это означает, что ваш контроллер может передавать полные данные любому количеству представлений, каждое из которых имеет свой собственный способ отображения данных, и представление, приведенное выше, может вызываться любым контроллером и точно отображать сообщения, переданные ему в установленном порядке .

Если это не устраивает вас, тогда вы можете манипулировать данными в вашем контроллере или модели (или создать вспомогательную функцию) с использованием array_walk () и вспомогательной функции:

        // user function for array_walk  
    function truncate_post(&$value,$key,$limit)
    {
       if($key >= $limit)
       {
           $value->post = $this->typography->auto_typography($value->post);
       }
    }

    $query = $this->db->get('posts', 10); // get 10 posts
    $results = $query->result();
    array_walk($results, 'truncate_post', 3); // truncate all but top 3 posts
        $data['blog'] = $results;
        $this->load->view('template1', $data); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...