8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je tente de récupérer des variables prises via un get et stockées en session dans un tableau...
Pour ce faire, j'ai la solution proposée par mon professeur. Elle fonctionne mais il prend trop de raccourcis pour la débutante que je suis.
Je sais qu'un code efficace est un code court, mais j'ai pour le moment, besoin de déclarer autant de variables qu'il y a d'opérations à effectuer sous peine de me perdre...

Son code est celui-ci :

if ($_GET) {
    $_SESSION['lettres'][] = $_GET['lettre'];
    $lettretab = $_SESSION['lettres'];
    var_dump($lettretab);
}


Pour ma part, j'ai construit mon code comme suit, mais ces quelques lignes ne daignent pas construire le tableau souhaité (mon var_dump remplace la valeur précédente par la nouvelle quand je clique sur une des lettres de l'alphabet (lien) que présente ma page) :

if ($_GET==TRUE) {
    $getlettre = $_GET['lettre'];
    $_SESSION['sessionlettre'] = $getlettre;
    $tablettres[] = $_SESSION['sessionlettre'];
    var_dump($tablettres);
}


Est-ce que vous pouvez m'expliquer ce qui ne fonctionne pas dans mon code (le deuxième), svp ?

Merci par avance !
Modifié par Reka (21 Dec 2013 - 18:15)
Salut,

dans le premier code:

// rajout d'une valeur dans le tableau $_SESSION['lettres'] qui est mis en session, la valeur est donc conservée tout le temps de la session courante
$_SESSION['lettres'][] = $_GET['lettre'];

Ton soucis, comme tu le dis viens du fait que tu écrases l'ancienne valeur.

// a chaque appel tu écrase le contenu de $_SESSION['sessionlettre']
$_SESSION['sessionlettre'] = $getlettre;
// puis tu rajoutes un index au tableau $tablettres, sauf que ce tableau n'est pas mis en session ! Tu n'affiches donc que la lettre courante et pas les anciennes
$tablettres[] = $_SESSION['sessionlettre'];

J'ignore si je suis clair mais je l'espère Smiley cligne
Modifié par floreo (21 Dec 2013 - 19:13)
Merci Floreo.
Concernant mon code, je comprends la deuxième partie de l'explication mais pas la première.

"à chaque appel tu écrase le contenu de $_SESSION['sessionlettre']" -> ça, je ne comprends pas.

Le fait que je stocke mes valeurs dans un tableau qui n'est lui-même pas en session, ça j'ai capté grâce à toi. J'imagine que c'est là que se jouait le plus gros du problème...

Mais il n'empêche que je ne vois pas comment clarifier mon code à coups de variables déclarées sans passer par la solution de mon professeur.

"$_SESSION['lettres'][] = $_GET['lettre'];" est pour moi un raccourci vraiment brutal.
Je sais que si j'ai de nouveau un souci dans le genre dans 3 semaines quand je devrai plancher sur un problème tiers, je vais me casser les dents dessus à coup sûr... Smiley decu
De rien, concernant le fait que tu écrases le contenu de $_SESSION['sessionlettre'], je voulais en fait dire que du coup, tu ne conservais pas l'historique de tes lettres comme cela est le but.
Reka a écrit :

Le fait que je stocke mes valeurs dans un tableau qui n'est lui-même pas en session, ça j'ai capté grâce à toi. J'imagine que c'est là que se jouait le plus gros du problème...

Tout à fait, une solution est donc de mettre ton tableau de lettres en session, c'est ce que fais ton prof, certes en moins de ligne et en "plus court et plus clair". Du coup tu sais quoi faire, ajouter dans une variable de session de type tableau, la suite de tes lettres récupérées en GET. Smiley smile