[PHP] Recherche dans un array (next, prev..)
Résolu
Odissea
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Odissea Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Odissea Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voulais savoir si l'un d'entre vous pourrait me donner un coup de pouce ...
J'expose mon soucis.
J'ai un moteur de recherche en PHP/Mysql ...
J'effectue une recherche, celui-ci me retourne X résultats
Lorsque je clique sur un des résultats, une page m'affiche les détails du résultat.
Je souhaite à partir de la voir deux liens qui me permettrait d'aller au résultat suivant et précédent.
Au départ j'avais juste fait un +1 ou -1 sur la ref ... mais cela fait que je fais suivant sur TOUTES les données de la base ... et pas seulement sur la recherche effectuée.
En clair, ma requête retourne 1, 8, 9, 12, 15 ,16, 25 ... je suis sur le résultat [b]12[/b] ... je voudrais pouvoir afficher un lien me permettant d'aller au [b]9[/b] ou au [b]15[/b] ...
J'ai essayé avec les fonction in_array, current, next, prev ... mais je m'en sort pas ...
Ma variable est une variable de session qui stock les "id" de la requete $_SESSION['resulat'] = (a,b,c,d,e,f);
La fonction que je créé explode d'abord la variable session ... et la a partir d'ici je sèche ^^
Merci pour votre aide ...
Cordialement
Je voulais savoir si l'un d'entre vous pourrait me donner un coup de pouce ...
J'expose mon soucis.
J'ai un moteur de recherche en PHP/Mysql ...
J'effectue une recherche, celui-ci me retourne X résultats
Lorsque je clique sur un des résultats, une page m'affiche les détails du résultat.
Je souhaite à partir de la voir deux liens qui me permettrait d'aller au résultat suivant et précédent.
Au départ j'avais juste fait un +1 ou -1 sur la ref ... mais cela fait que je fais suivant sur TOUTES les données de la base ... et pas seulement sur la recherche effectuée.
En clair, ma requête retourne 1, 8, 9, 12, 15 ,16, 25 ... je suis sur le résultat [b]12[/b] ... je voudrais pouvoir afficher un lien me permettant d'aller au [b]9[/b] ou au [b]15[/b] ...
J'ai essayé avec les fonction in_array, current, next, prev ... mais je m'en sort pas ...
Ma variable est une variable de session qui stock les "id" de la requete $_SESSION['resulat'] = (a,b,c,d,e,f);
La fonction que je créé explode d'abord la variable session ... et la a partir d'ici je sèche ^^
Merci pour votre aide ...
Cordialement
A voir également:
- [PHP] Recherche dans un array (next, prev..)
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Easy php - Télécharger - Divers Web & Internet
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
4 réponses
il faudrait que tu fasse une variable de session 'current id' qui dit quelle valeur de ressort de ton 'resultat' ..; un index qui tu pourras incrémenter ou décrémenter facilement.
par cotnre, attention avec la session: si la personne fait 2 recherches sur 2 pages différentes, tu risques d'avoir des conflits !
par cotnre, attention avec la session: si la personne fait 2 recherches sur 2 pages différentes, tu risques d'avoir des conflits !
En fait donc j'ai une variable session qui récupère les ID de ma requête
Ma variable :
$_SESSION['search'] = 1, 8, 9, 12, 15 ,16, 25
Ma fonction :
nextprev($id) {
// Je split la variable session
$ref_explode = explode(",", $_SESSION['search']);
// J'obtient une variable array nommée $ref_explode (1;8;9;12;15;16;25)
// En fonction de $id je voudrais récuperer les id précédents et suivants
// si $id = 12 je voudrais que $next soit = à 15 et $prev = 9
return ($next,$prev);
}
Je ne sais pas comment traiter la 2nde étape de ma fonction ... (en souligné gras)
Merci pour votre aide.
Ma variable :
$_SESSION['search'] = 1, 8, 9, 12, 15 ,16, 25
Ma fonction :
nextprev($id) {
// Je split la variable session
$ref_explode = explode(",", $_SESSION['search']);
// J'obtient une variable array nommée $ref_explode (1;8;9;12;15;16;25)
// En fonction de $id je voudrais récuperer les id précédents et suivants
// si $id = 12 je voudrais que $next soit = à 15 et $prev = 9
return ($next,$prev);
}
Je ne sais pas comment traiter la 2nde étape de ma fonction ... (en souligné gras)
Merci pour votre aide.
Bonjour,
Tu peux parcourir ton tableau et trouver manuellement les valeurs, ou alors utiliser la fonction array_search().
Pour la première méthode :
Si $next === false, cela signifie qu'il n'y a pas de suivant. Idem pour $prev. (Il faut bien utiliser le triple égal dans tes tests, pour différencier le cas ou $next (resp. $prev) vaut 0 du cas où il vaut FALSE).
La deuxième méthode est plus longue à l'exécution car l'ensemble du tableau est parcouru, mais plus simple à coder.
Xavier
Tu peux parcourir ton tableau et trouver manuellement les valeurs, ou alors utiliser la fonction array_search().
Pour la première méthode :
function nextprev($id) { // Je split la variable session $ref_explode = explode(",", $_SESSION['search']); // J'obtient une variable array nommée $ref_explode (1;8;9;12;15;16;25) $next = false; $prev = false; // On parcourt l'ensemble du tableau jusqu'à ce qu'on tombe sur $id foreach ($ref_explode as $key => $value) { if ($value == $id) { $next = (isset($ref_explode[$key + 1])) ? $ref_explode[$key + 1] : false; $prev= (isset($ref_explode[$key - 1])) ? $ref_explode[$key - 1] : false; break; } } return ($next, $prev); }
Si $next === false, cela signifie qu'il n'y a pas de suivant. Idem pour $prev. (Il faut bien utiliser le triple égal dans tes tests, pour différencier le cas ou $next (resp. $prev) vaut 0 du cas où il vaut FALSE).
La deuxième méthode est plus longue à l'exécution car l'ensemble du tableau est parcouru, mais plus simple à coder.
Xavier