CodeIgniter Les Résultats De La Recherche De La Pagination
Eh bien, j'ai cherché et cherché tout autour, mais je ne peut toujours pas trouver une solution à mon problème. Je suis encore nouveau pour php et codeigniter alors peut-être que j'ai raté la réponse déjà, mais en tout cas, voilà ce que je suis en train de faire.
C'est mon Contrôleur (c_index.php) - les appels d'une fonction de recherche et effectue la pagination sur le tableau résultant.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class C_index extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('m_search');
$this->load->library("pagination");
$this->load->library("table");
}
/** Index Page for this controller */
public function index()
{
if($this->session->userdata('logged_in')){
$this->load->view('v_user');
}
else{
$this->load->view('index');
}
}
public function search()
{
//start of search
$search_term = $this->input->post('word');
$books = $this->m_search->search_books($search_term);
//start of pagination
$config['base_url'] = "http://localhost/test/index.php/c_index/search";
$config['per_page'] = 5;
$config['num_links'] = 7;
$config['total_rows'] = count($books);
echo $config['total_rows'];
$this->pagination->initialize($config);
$data['query'] = array_slice($books,$this->uri->segment(3),$config['per_page']);
$this->load->view("index",$data);
}
}
Voici mon point de vue (index.php) - essentiellement simplement l'affichage de la pagination résultat
<h3> Search Results </h3>
<!-- table -->
<table class="table table-condensed table-hover table-striped" id="result_table">
<tbody>
<?php
if(isset ($query)){
if(count($query)!=0){
foreach($query as $item){
echo "<tr><td>". $item['title'] ." by " .$item['author'] ."<br/></td></tr>";
}
echo $this->pagination->create_links();
}
else
{
echo "No results found for keyword ' ". $this->input->post('word')." ' .";
}
}
else
{
echo "Start a search by typing on the Search Bar";
}
?>
</tbody>
</table>
Mon modèle (m_search.php) - essentiellement de la recherche dans la base de données et renvoie un tableau de résultats.
<?php
classe M_search s'étend CI_Model{
function search_books($search_term='default')
{
$filter = $this->input->post('filter');
//echo $filter;
if($filter == 'title')
{
//echo 'title';
$this->db->select('*');
$this->db->from('book');
$this->db->like('title',$search_term);
//Execute the query.
$query = $this->db->get();
return $query->result_array();
}else if($filter == 'author')
{
//echo 'author';
$this->db->select('*');
$this->db->from('book');
$this->db->like('author',$search_term);
//Execute the query.
$query = $this->db->get();
return $query->result_array();
}else if($filter == 'type')
{
//echo 'type';
$this->db->select('*');
$this->db->from('book');
$this->db->like('book_type',$search_term);
//Execute the query.
$query = $this->db->get();
return $query->result_array();
}else if($filter == 'status')
{
//echo 'status';
$this->db->select('*');
$this->db->from('book');
$this->db->like('book_status',$search_term);
//Execute the query.
$query = $this->db->get();
return $query->result_array();
}else
{
//echo 'all';
$this->db->select('*');
$this->db->from('book');
$this->db->like('book_status',$search_term);
$this->db->or_like('book_type',$search_term);
$this->db->or_like('author',$search_term);
$this->db->or_like('title',$search_term);
//Execute the query.
$query = $this->db->get();
return $query->result_array();
}
}
}
Maintenant mon problème est de garder les résultats pour la pagination.
La première page c'est bien, mais à chaque fois que je clique sur un lien de la page, les résultats du tableau montrent l'ensemble de la base de données et n'est pas limité à mes résultats de recherche.
J'ai lu quelque part que j'ai besoin d'utiliser les sessions pour conserver ma search_term de sorte que cela fonctionne lorsque je change de pages, mais je ne sais pas où le mettre.
Tous les conseils ou suggestions seraient grandement appréciés. Merci.
OriginalL'auteur user3348358 | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs de façons différentes de gérer la recherche et de la pagination en fonction de vos besoins. En fonction de votre code existant, c'est ce que je ferais.
Changement
à
fait-il résoudre le problème vous ont été fasing
OriginalL'auteur Samutz
Juste essayer de réduire votre Modèle de code, si vous ne voulez pas utiliser de "session" et que vous souhaitez copier, coller le lien de l'url et obtenir le même résultat dans votre recherche, alors vous devriez utiliser l'uri de la classe dans votre contrôleur.
OriginalL'auteur Prem Bikram Limbu
Essayer de cette manière dans votre Contrôleur,
OriginalL'auteur Ganesh Karthikeyan
vous pouvez utiliser le code suivant dans votre contrôleur toutes de chaîne de requête affichera dans la pagination des liens.
pour des paramètres supplémentaires dans la pagination lien, vous pouvez le commentaire suivant de 2 lignes.
OriginalL'auteur Waqas