2010-01-22 5 views
0

Je tente d'implémenter la pagination en utilisant plusieurs critères de recherche. Supposé J'ai une table d'étudiant. J'utilise aussi la pagination lorsque la liste des étudiants est affichée. Le lien de pagination est. site_url . '/student/page/'; alors j'utilise $config['uri_segment'] = 1; de sorte que le lien sera de paginationComment implémenter la pagination à l'aide de plusieurs critères de recherche dans codeigniter

<a href="http://mysite/index.php/student/page/0">1</a> 
<a href="http://mysite/index.php/student/page/1">2</a> 

et son fils. Après cela, je veux rechercher les données des étudiants en utilisant 3 critères de recherche mis en œuvre en utilisant le champ de texte.

id name address. 

L'utilisateur peut effectuer une recherche par identifiant, nom ou adresse ou combinaison des trois critères. l'URL devient

http://mysite/index.php/student/page/0 
href=http://mysite/index.php/student/page/1 

et son fils. Mais j'utilise la méthode get pour la recherche. et en essayant de recherche en utilisant le champ de critères de recherche l'url se

href="http://mysite/index.php/student/page/1?id=1&name=a&address=b 

le problème est survenu lorsque je tente de créer en fonction de critères de pagination. parce que le lien de pagination qui contiennent à la chaîne de requête je ne sais pas comment créer devenir

href="http://mysite/index.php/student/page/0?id=1&name=a&address=b 
href="http://mysite/index.php/student/page/1?id=1&name=a&address=b 

ou avez-vous une meilleure pratique pour résoudre ce problème?


Pour résoudre ce problème, j'essaie d'utiliser $this->uri->uri_to_assoc(). D'abord, je crée un tableau asocc pour le lien de pagination.

$array = array('id' => '001', 'name' => 'a', 'address' => 'canada'); 

l'url se id/001/name/a/address/canada. J'utilise la fonction $this->uri->uri_to_assoc() pour obtenir la clé et la valeur du segment.

array (
    id => 001, 
    name=>a, 
    address=>canada 
) 

mais certains critères de recherche ne sont pas inclus lors de la recherche. disons, l'utilisateur ne recherche que par nom et adresse. le tableau se $array = array('id' => '', 'name' => 'a', 'address' => 'canada'); et l'url id/name/a/address/canada le tableau assoc deviennent

array (
    id => name, 
    a=>address, 
    canada=> 
) 

le tableau assoc n'est pas désorganisé à nouveau. donc je ne peux pas obtenir la bonne valeur du tableau assoc. Je pense que je vais définir l'identifiant pour les critères de recherche s'il n'est pas inclus. Je suppose que je mets #.

if isset($_GET['id']) then 
$id = '#' 
else 
$id = $_GET['id'] 

$array = array('id' => $id, 'name' => 'a', 'address' => 'canada'); 

Que diriez-vous de ...? ou s'il y a une autre meilleure pratique?

Merci

Répondre

0

Je l'ai toujours trouvé un peu une douleur à traiter des années uri ci.
Est-il possible de définir une valeur par défaut pour vos valeurs si l'utilisateur ne l'inclut pas dans le cadre de sa recherche? ou même ne pas inclure la clé?il retourne quelque chose comme

id/10/name/false/address/canada 

ou

id/10/address/canada 

alors vous pouvez

$uri = $this->uri->uri_to_assoc(); 

$id = array_key_exists("id", $uri) ? $uri['id'] : false; 
$id = $id == 'false' ? false : $id; 
$query .= $id ? "AND id = $id" : ""; 

etc ...

0

Quand j'utilise uri_to_assoc, j'ai toujours un tableau par défaut , donc dans mon application, je peux toujours obtenir le paramètre requis, même s'il manque de la uri

$param_default = array('cat','page'); 
$param_array = $this->uri->ruri_to_assoc(3, $param_default); 

Maintenant, je peux accéder en toute sécurité $param_array['cat'] et $param_array['page'] même si uri ne contient pas ce paramètre.

Je toujours user ruri_to_assoc et ruri_segment, donc le paramètre supplémentaire commence toujours dans le troisième segment uri.

Questions connexes