Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4212 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2022925
Odissine
Posté le 14-09-2010 à 16:27:12  profilanswer
 

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

mood
Publicité
Posté le 14-09-2010 à 16:27:12  profilanswer
 

n°2022941
rufo
Pas me confondre avec Lycos!
Posté le 14-09-2010 à 17:59:53  profilanswer
 

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
n°2023030
Odissine
Posté le 15-09-2010 à 11:06:59  profilanswer
 

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 ;)

n°2023039
rufo
Pas me confondre avec Lycos!
Posté le 15-09-2010 à 11:18:03  profilanswer
 

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
n°2023081
Odissine
Posté le 15-09-2010 à 14:48:38  profilanswer
 

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

n°2023085
rufo
Pas me confondre avec Lycos!
Posté le 15-09-2010 à 14:57:21  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
sujet peut-être trop métaphysique sur les tableaux htmlConsolider 2 tableaux
str_replace et tableauxProbleme prise en charge Tableaux IE/Chrome/Firefox/Opera
[VBA/EXcel] Faire plusieurs Tableaux croisés Dyn.Condition If...End if à l'intérieur d'une boucle For...Next
Problème avec des tableauxQuestions sur les tableaux
VBA: combiner 2 tableaux excel pour avoir un troisième tableau complet[résolu]comment faire pour que les cell de 2 tables ont la même taille
Plus de sujets relatifs à : Travail sur les tableaux (next, prev, current ...)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)