Travail sur les tableaux (next, prev, current ...)

Travail sur les tableaux (next, prev, current ...) - PHP - Programmation

Marsh Posté le 14-09-2010 à 16:27:12    

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 12 ... je voudrais pouvoir afficher un lien me permettant d'aller au 9 ou au 15 ...
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

Reply

Marsh Posté le 14-09-2010 à 16:27:12   

Reply

Marsh Posté le 14-09-2010 à 17:59:53    

le mieux est que tu mettes soit dans l'url (mais falsifiable) soit dans la session les id des enregistrements suivant et précédent


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-09-2010 à 11:06:59    

Bonjour,  
C'est justement ce que j'ai fait ... lorsque la recherche est faite, la variable $_SESSION[search] récupère tous les ID de la requête ... mon problème survient après ... je voudrais en fonction de l'ID selectionné pouvoir naviguer sur le précédent ID ou le suivant ...  
$_SESSION[search] = 1, 8, 9, 12, 15 ,16, 25
Je split la variable et j'obtient un array (1;8;9;12;15;16;25) ... admettons que j'affiche l'ID 12 .. je voudrais pouvoir en cliquant sur suivant aller sur l'ID 15 et 9 en cliquant sur précédent.
 
Merci pour votre aide ;)

Reply

Marsh Posté le 15-09-2010 à 11:18:03    

Ben rien de compliqué du coup. Suffit de trouver la position de l'ID courant affiché dans le tableau avec array_search(). Ca va te donner si trouvé un entier que tu stockes mettons dans $iPosID. Après, t'affiches 2 liens avec en paramètre get l'ID se trouvant à $_SESSION[search][$iPosID-1] et $_SESSION[search][$iPosID+1] (tu prends soins de vérifier quand même que le $iPosID-1 >= 0 et $iPosID+1 < count($_SESSION[search]).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-09-2010 à 14:48:38    

Merci :)
C'est simple oui mais je ne connais pas encore très bien les fonction liés aux tableaux en PHP ;)
 
Milles merci !

Reply

Marsh Posté le 15-09-2010 à 14:57:21    

Ben le fonctionnement des tableaux sous php est semblable à pas mal de langages. T'imagines des cases, notées de 0 à n, avec une valeur dedans. Les tableaux peuvent être à plusieurs dimensions (2 dim = matrices), pour ce déplacer dedans un boucle par dimension. Donc si y'a 2 dimensions, faut une double boucle du genre :

Code :
  1. foreach($Matrice as $i => $Ligne)
  2. {
  3.    foreach($Ligne as $j => $Valeur)
  4.    {
  5.         echo $Valeur;
  6.    }
  7. }


 
Avec for, ça donne ça :

Code :
  1. $iNbLignes = count($Tableau);
  2. $iNbCols = count($Tableau[0]):
  3. for($i = 0; $i < $iNbLignes; $i++)
  4. {
  5.    for($j = 0; $j < $iNbCols; $j++)
  6.    {
  7.         echo $Tableau[$i][$j];
  8.    }
  9. }


 
Après, y'a aussi les tableaux associatifs : tu mets à la places des clés de 0 à n des chaînes de caractères du genre :

Code :
  1. $Tableau = array(
  2.                        "Fruits" => array("Pomme", "Banane", "Orange" ),
  3.                        "Légumes" => array("Patate", "Carotte", "Courgette", "Haricots verts" )
  4.                      );


 
Bien sûr, tu peux combiner les 2 (tableaux "indicés" et tableaux associatifs). Tu peux regarder le Config.php de mon appli Astres pour avoir un ex de la puissance des tableaux en php ;) Je les trouve très pratiques.
Par contre, pas question d'en avoir de trop grosse taille (genre pour du calcul matriciel sur des grosses matrices, genre > 100x100), sinon les perfs sont minables.


Message édité par rufo le 15-09-2010 à 15:02:04

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed