Problème exercice PHP : tableau etc ... [Résolu/Fermé]

Signaler
-
Messages postés
33009
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 juin 2021
-
Bonjour, je suis sur un petit projet en PHP ou je crée un site avec deux page une "liste Eleve" et une "Modifier liste élèves " donc j'ai commencé par créer le design et tous par de problème et je suis arrivé au PHP . Enfaîte dans la page "liste Eleve" on doit juste avoir la liste des élèves d'un tableau et d'en la page "Modifier la liste élève" on a deux input avec chacun un bouton . Le premier input sert à rajouter un élèves dans le tableau qui est près rempli dans mon code et le deuxième input sert à supprimer un élève dans le tableau . Donc j'ai commencer et dans la page "modifier liste élève"
dans le input rajouter un élève je par exemple "louis " donc toujours sur la même page j'ai en sorte que ça m'affiche ligne par ligne avec une boucle "Foreach" . Donc la encore pas de problème ça m'affiche instantanément le nouveau prénom donc "louis" dans le tableau mais quand je veux retirer "louis " ça deviens bizarre car il y en a deux qui partent d'un coup enfin ça fait n'importe quoi et en plus quand je veux rajouter admetton louis et encore rajouter un autre ça ne le fais pas mais ça modifie louis genre
je veux rajouter Bernard et bas ça efface louis pour ajouter Bernard . Voila pour le premier problème ...
Donc après je vais dans la page afficher liste élève et ça ne m'affiche que le dernier nom que j'ai entrée dans modifier liste élève mais pas le tableau complet :/
J'ai beaucoup cherché j'ai vue qu'il y avait array_push mais sans succès .
Je vous donne donc mon code php des deux page :


Page "Modifier liste élève" :
<?php
session_start();
$tab = array("benoit","augustin","jean claude","martin");
if (isset($_POST['ajouter'])) {
 $tab[] = $_POST['ajoutEleve'];
 foreach ($tab as $_SESSION['tab2']) {
  echo "<br>".$_SESSION['tab2'];
 }
}
if (isset($_POST['retirer'])) {
 unset($tab[array_search($_POST['retireEleve'], $tab)]);
 foreach ($tab as $_SESSION['tab2']) {
  echo "<br>".$_SESSION['tab2'];
 }
}


?>


Page "liste élève":


session_start();
$tabModifier = $_SESSION['tab2'];
echo "<br>".$tabModifier;
?>



Merci d'avance pour vos evantuelle réponses :)




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Messages postés
33009
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 juin 2021
3 571
Bonjour,

Deux soucis :
1 - A chaque fois que tu reviens sur ta page Modifier liste élève tu réinitialise ta variable $tab avec les valeurs
 array("benoit","augustin","jean claude","martin");

Et donc... tes éventuelles modifications d'avant n'existent plus.

2 - ... a quelle moment stockes tu ta variable $tab en SESSION ?
Je ne suis pas sûr que ceci fonctionne :
 foreach ($tab as $_SESSION['tab2']) { 


A la limite... il vaudrait mieux écrire :
// affichage 
foreach ($tab as $nom) {
  echo "<br>".$nom;
 }

// on stocke l'array dans une variable de session
$_SESSION['tab2'] = $tab;




bref... tout le code modifié devriendrait ainsi :

<?php
session_start();

//------------------------------------------------------------------------//
// si la variable de session contenant les noms existe en 
// s'en sert... 
//------------------------------------------------------------------------//
if(isset($_SESSION['tab2']){
	$tab = $_SESSION['tab2'];
}else{
   //sinon on l'initialise avec le tableau ci-dessous
  $tab = array("benoit","augustin","jean claude","martin");
}
//------------------------------------------------------------------------//
// AJOUT
//------------------------------------------------------------------------//
if (isset($_POST['ajouter'])) {
 // On ajoute un nom au tableau
 $tab[] = $_POST['ajoutEleve'];
}

//------------------------------------------------------------------------//
// SUPPRESSION
//------------------------------------------------------------------------//
if (isset($_POST['retirer'])) {
	//on supprime un nom du tableau
 unset($tab[array_search($_POST['retireEleve'], $tab)]);
}

//------------------------------------------------------------------------//
// AFFICHAGE 
//------------------------------------------------------------------------//
	foreach ($tab as $nom) {
		echo "<br>".$nom;
	}

//on stocke l'array dans une variable de session
$_SESSION['tab2'] = $tab;
 
 


Merci beaucoup pour ta réponse très pertinente :)
Tu m'a bien aider !
Messages postés
33009
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 juin 2021
3 571 > acatrax
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane