[RESOLU] Déplacement et recherche entre deux array.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Déplacement et recherche entre deux array.

Re: Déplacement et recherche entre deux array.

par wisefun77 » 24 oct. 2022, 10:19

Bonjour Spols,

En fait j'ai trouvé une solution de dépannage.
Sur la bouton précédent le code est ;:

Code : Tout sélectionner

<input type="button" value="Précédent" onclick="history.go(-1)">
Et dans la page qui devra s'afficher j'ai fait une boucle If Et Else.
Si on arrive par la bouton suivant, ou on arrive depuis le bouton précédent.

Je continue pour trouver le bon code avec des tableaux.

Merci à toi.
Merci à vous.

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 17:02

Bonjour Spols,
array_pop depile le tableau, donc la valeur n'y est plus après extraction. si tu veux la garder dans le tableau il y a $array[sizeof($array)-1]
Je vais étudier dès demain.
Merci à toi.

Re: Déplacement et recherche entre deux array.

par Spols » 20 oct. 2022, 16:28

array_pop depile le tableau, donc la valeur n'y est plus après extraction. si tu veux la garder dans le tableau il y a $array[sizeof($array)-1]

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 16:07

Bonjour Spols,
Je pense avoir trouvé pour que cela fonctionne.
Malheureusement un page est supprimée.
Page1 == index.php
Page2=page2.php
Page3= page3.php
Page4=page4.php
Dans la page 2 il y a un lien directe pour le retour sur la page index.
Mais la function est :

Code : Tout sélectionner

function precedentMethode(){ $_SESSION['TabSuivant'][]= $_SERVER['REQUEST_URI']; echo "<br/>Page actuelle<br/>".var_dump($_SESSION['TabSuivant'])."<br/>"; }
Dans la page3 et page4 la function est :

Code : Tout sélectionner

function precedent(){ $Page= $_SERVER['REQUEST_URI']; echo "<br/>Pages Actuelle <br/>".$Page."<br/><br/>"; $_SESSION['TabSuivant'][]=$Page; echo "<br/>Pages lues <br/>".var_dump($_SESSION['TabSuivant'])."<br/><br/>"; $_SESSION['TabPagesAnterieures'][] = array_pop($_SESSION['TabSuivant']); echo "<br/>Pages lues Antérieures <br/>".var_dump($_SESSION['TabPagesAnterieures'])."<br/>"; }
Pour les pages3 et 4, dans le bouton le code est :

Code : Tout sélectionner

<?php precedent(); $Retour= implode("",$_SESSION['TabSuivant']) ?> <button type="submit"><a href="<?PHP print_r($Retour);?>">Précédent</a> </button> </form>
Mais dès que j'arrive à la page4 cela envoi vers la page2, car la page3 n'est plus dans le tableau.
Sans avoir fait de retour sur la page3.

Merci à toi pour ton aide.

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 15:37

Bonjour Spols,

Ze ne comprends plus rien #-o #-o

J'ai modifié le code.

Code : Tout sélectionner

function precedent(){ $Page= $_SERVER['REQUEST_URI']; echo "<br/>Pages Actuelle <br/>".$Page."<br/><br/>"; Pages Actuelle /Precedent/sdp-demandeall.php ////////////////////////////------------------------------------- ////////////////////////////------------------------------------- $_SESSION['TabSuivant'][]=$Page; echo "<br/>Pages lues <br/>".var_dump($_SESSION['TabSuivant'])."<br/><br/>"; array(3) { [0]=> string(26) "/Precedent/sdp-methode.php" [1]=> string(27) "/Precedent/sdp-demande0.php" [2]=> string(29) "/Precedent/sdp-demandeall.php" } Pages lues ////////////////////////////------------------------------------- ////////////////////////////------------------------------------- $_SESSION['TabPagesAnterieures'][] = array_pop($_SESSION['TabSuivant']); echo "<br/>Pages lues Antérieures <br/>".var_dump($_SESSION['TabPagesAnterieures'])."<br/>"; array(2) { [0]=> array(1) { [0]=> string(26) "/Precedent/sdp-methode.php" } [1]=> string(29) "/Precedent/sdp-demandeall.php" } Pages lues Antérieures ////////////////////////////------------------------------------- ////////////////////////////------------------------------------- }
Mais pourquoi au dernier echo cela supprime cette page>>Precedent/sdp-demande0.php et non celle-ci >>Precedent/sdp-demandeall.php?

Code : Tout sélectionner

$_SESSION['TabPagesAnterieures'][] = array_pop($_SESSION['TabSuivant']); echo "<br/>Pages lues Antérieures <br/>".var_dump($_SESSION['TabPagesAnterieures'])."<br/>"; array(2) { [0]=> array(1) { [0]=> string(26) "/Precedent/sdp-methode.php" } [1]=> string(29) "/Precedent/sdp-demandeall.php" } Pages lues Antérieures
Merci pour ta patience. Moi ze craaaaaaque.

Re: Déplacement et recherche entre deux array.

par Spols » 20 oct. 2022, 14:22

end n'extrait pas la dernière valeur du tableau array_pop le fait.

remplace tes end et test array_slice par array_pop

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 14:13

Bonjour,
voici le code.

Code : Tout sélectionner

function precedent(){ $Page= $_SERVER['REQUEST_URI']; echo "<br/>Pages Actuelle <br/>".$Page."<br/><br/>"; $_SESSION['TabSuivant'][]=$Page; echo "<br/>Pages lues <br/>".var_dump($_SESSION['TabSuivant'])."<br/>"; $_SESSION['TabPagesAnterieures'][] = array_slice($_SESSION['TabSuivant'],0,-1); echo "<br/>Pages lues Antérieures <br/>".var_dump($_SESSION['TabPagesAnterieures'])."<br/>"; $_SESSION['TabRetour'] = end($_SESSION['TabPagesAnterieures']); echo "<br/>Page précédente pour le retour <br/>".var_dump($_SESSION['TabRetour'])."<br/><br/>"; }
Mais la dernier code ne me donne pas que la page précédente, il affiche toutes les pages avant.

Code : Tout sélectionner

$_SESSION['TabRetour'] = end($_SESSION['TabPagesAnterieures']); echo "<br/>Page précédente pour le retour <br/>".var_dump($_SESSION['TabRetour'])."<br/><br/>";

Code : Tout sélectionner

Pages Actuelle>>> OK /Precedent/sdp-demandeall.php Pages lues>>>OK array(3) { [0]=> string(26) "/Precedent/sdp-methode.php" [1]=> string(27) "/Precedent/sdp-demande0.php" [2]=> string(29) "/Precedent/sdp-demandeall.php" } Pages lues Antérieures>>>OK array(2) { [0]=> array(1) { [0]=> string(26) "/Precedent/sdp-methode.php" } [1]=> array(2) { [0]=> string(26) "/Precedent/sdp-methode.php" [1]=> string(27) "/Precedent/sdp-demande0.php" } } Page précédente pour le retour>>>NOK array(2) { [0]=> string(26) "/Precedent/sdp-methode.php" [1]=> string(27) "/Precedent/sdp-demande0.php" }
J'aimerai que cela m'affiche

Code : Tout sélectionner

Page précédente pour le retour>>>OK array(2) { [0]=> string(27) "/Precedent/sdp-demande0.php" }
Merci à vous.

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 14:03

Bonjour Spols,
Je comprends. Merci.
Ce que je cherche c'est de supprimer la dernière valeur du tableau.
Je vais essayer en passant par un autre tableau.

Merci à toi.

Re: Déplacement et recherche entre deux array.

par Spols » 20 oct. 2022, 13:28

array_slice retourne un tableau utilise plutot end() tu devrais arriver à un meilleur résultat

Re: Déplacement et recherche entre deux array.

par wisefun77 » 20 oct. 2022, 12:14

Bonjour Spols,
j'ai fait ce code.

Code : Tout sélectionner

<?PHP function precedent(){ $Page= $_SERVER['REQUEST_URI']; echo "<br/>Pages Actuelle <br/>".$Page."<br/><br/>"; $_SESSION['TabSuivant'][]=$Page; echo "<br/>Pages lues <br/>".var_dump($_SESSION['TabSuivant'])."<br/>"; $_SESSION['TabPagesAnterieures'][] = array_slice($_SESSION['TabSuivant'],0,-1); echo "<br/>Pages lues Antérieures <br/>".var_dump($_SESSION['TabPagesAnterieures'])."<br/>"; $_SESSION['TabRetour'][] = array_slice($_SESSION['TabPagesAnterieures'],0,-1); $Retour = end($_SESSION['TabRetour']); echo "<br/>Page précédente pour le retour <br/>".$Retour."<br/><br/>"; } ?>
Arrivé à la deuxième page j'ai cette erreur.

Code : Tout sélectionner

PHP Notice: Array to string conversion in C:\inetpub\wwwroot\Precedent\function-Precedent.php on line 15
la ligne 15 est:

Code : Tout sélectionner

echo "<br/>Page précédente pour le retour <br/>".$Retour."<br/><br/>";
Si je la supprime les autres array fonctionnent bien.

Merci beaucoup.

Re: Déplacement et recherche entre deux array.

par Spols » 19 oct. 2022, 20:55

le visiteur arrive sur ton site à la page A, comme il a pas de session tu lui crée une variable $_session['navigation'][] = 'A';
il passe sur B sans utiliser de bouton "spécial" donc tu rajoute à sa session le nom de la page $_session['navigation'][] = 'B';
ainsi de suite pour C et D
$_session['navigation'] contient donc :
0 => A
1 => B
2 => C
3 => D

maintenant il clique sur retour,
le script voit qu'il y a une session de navigation >= 2 et qu'il n'y a pas de variable de session nommé index_navigation. il prend donc l'avant dernier index, crée la variable de session index_navigation lui donne la valeur de 2 et dirige l'utilisateur sur C
si il reclique sur retour, comme il y a désormais une variable index_navigation, il la décrémente et dirige vers la page B correspondant à $_session['navigation'][$_session['index_navigation']].
si il clique sur "avancer" (ce bouton nest disponible que si index_navigation est défini) tu incremente index_navigation et tu redirige avec $_session['navigation'][$_session['index_navigation']]. Mais si index_navigation (après incrémentation) == sizeof(navigation) - 1 il faut faire un unset()

il faut aussi gèrer le clique sur un lien classique alors que index_navigation est défini et donc couper l'array navigation pour ne garder que le début avant de reremplir des pages vues

Re: Déplacement et recherche entre deux array.

par wisefun77 » 19 oct. 2022, 16:14

Bonjour Spols,
Comme ça à l'instinct je ferai un seul tableau dans le quel je rajoute la nouvelle page si on utilise ni retour ni précédent et je garde un index dans ce tableau sur la page actuelle ainsi la continuité est assuré.
C'est quoi un Index et comment le garder ?

Ta solution ne me parle pas beaucoup, car je ne suis pas encore un pro en array.

Merci de tout cœur pour ton aide.

Re: Déplacement et recherche entre deux array.

par Spols » 19 oct. 2022, 16:02

Salut,

Comme ça à l'instiunct je ferai un seul tableau dans le quel je rajoute la nouvelle page si on utilise ni retour ni précédent et je garde un index dans ce tableau sur la page actuelle ainsi la continuité est assuré.

je ferait l'insertion de nouvelle page avec array_unshift, et ne stockerai l'index que si il y a navigation dans l'historique (la même logique peut être utilisé avec array_push)

Déplacement et recherche entre deux array.

par wisefun77 » 19 oct. 2022, 15:23

Bonjour,

J'aimerai que la page qui est lue rentre dans un array.

Code : Tout sélectionner

$_SESSION['TabSuivant'][]=$_SERVER['REQUEST_URI'];
Puis l 'user en faisant suivant la nouvelle page rentre dans le même array, et que la page précédent passe dans un autre array.

Code : Tout sélectionner

$_SESSION['TabRetour'][] = array_pop($_SESSION['TabSuivant']);
Jusque là c'est bon.

Quand l'user fait précédent cela va lire la dernière valeur de l'array $_SESSION['TabRetour'][]
L'user arrive donc à la page précédente.

Code : Tout sélectionner

<?PHP function precedent(){ $_SESSION['TabRetour'][] = array_pop($_SESSION['TabSuivant']); $_SESSION['TabSuivant'][]= $_SERVER['REQUEST_URI']; $_SESSION['Precedent']= end ($_SESSION['TabRetour']); echo "<br/>Page lue<br/>".var_dump($_SESSION['TabRetour'])."<br/>"; echo "<br/>Page actuelle<br/>".var_dump($_SESSION['TabSuivant'])."<br/>"; echo "<br/>Page bouton précédent<br/>".$_SESSION['Precedent']."<br/>"; } ?>
Et l'array retour doit perdre sa dernière valeur.

Code : Tout sélectionner

<?PHP function Retour(){ $_SESSION['PrecedentRetour'] = array_pop($_SESSION['TabRetour']); echo "<br/>Array suite au retour <br/>".$_SESSION['PrecedentRetour']."<br/>"; } ?>
MAIS C'EST ICI QUE CELA SE COMPLIQUE.
Dans le bouton précédent en cas de retour sur une page, on arrive bien à la page précédente, mais si on fait précédent de nouveau sur cette page cela nous renvoi sur la page suivante, cela tourne en boucle.
Voici le code du bouton dans le footer.

Code : Tout sélectionner

<div id="precedent"> <form> <?php precedent(); ?> <button type="submit"><a href="<?PHP print_r($_SESSION['precedent']);?>">Précédent</a></button> </form> </div>
Merci pour votre aide.