[PHP] Recherche dans un array (next, prev..)
Résolu/Fermé
Odissea
Messages postés
5
Date d'inscription
mardi 14 septembre 2010
Statut
Membre
Dernière intervention
15 septembre 2010
-
14 sept. 2010 à 16:31
Odissea Messages postés 5 Date d'inscription mardi 14 septembre 2010 Statut Membre Dernière intervention 15 septembre 2010 - 15 sept. 2010 à 14:34
Odissea Messages postés 5 Date d'inscription mardi 14 septembre 2010 Statut Membre Dernière intervention 15 septembre 2010 - 15 sept. 2010 à 14:34
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
- Recherche adresse - Guide
- Recherche musique - Guide
- Recherche par image - Guide
4 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
14 sept. 2010 à 16:35
14 sept. 2010 à 16:35
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 !
Odissea
Messages postés
5
Date d'inscription
mardi 14 septembre 2010
Statut
Membre
Dernière intervention
15 septembre 2010
15 sept. 2010 à 11:13
15 sept. 2010 à 11:13
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.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 sept. 2010 à 11:54
15 sept. 2010 à 11:54
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
Odissea
Messages postés
5
Date d'inscription
mardi 14 septembre 2010
Statut
Membre
Dernière intervention
15 septembre 2010
15 sept. 2010 à 14:34
15 sept. 2010 à 14:34
Merci Xav, t'es un chef !