[RESOLU] récupération valeur array() avec foreach ou for

Eléphanteau du PHP | 31 Messages

03 sept. 2023, 20:40

petite question comment je px faire pour récupérer le contenu de ma variable qui ce trouve dans une 1er page
name="epreuve<?Php echo $Id_epr[$i]; ?>"

ce qui me donne bien name="epreuve1" , name="epreuve2"...
dans une autres page
j essai avec une boucle for dans mon autre page avec ce code
$epreuve = $_POST["epreuve"];
echo $texte;
forcement ca me dit que la variable 'epreuve' existe pas
j essai avec foreach avec ce code et ca me dit "Invalid argument supplied for foreach()" avec ce code
$epreuve = $_POST["epreuve"];
foreach ($epreuve as $value) {
    echo "\$epreuve[$i] => $value.\n";
    $i++;
}
et si je fait un var_dump($_POST, $_GET) ca me donne bien mon array()
array(6) { ["epreuve1"]=> string(1) "1" ["Nom"]=> string(4) "bob" ["Prenom"]=> string(7) "steve" ["POSTE5"]=> string(6) "POSTE5" ["epreuve2"]=> string(1) "2" ["valider"]=> string(7) "Valider" } array(0) { }
je pense que ca doit etre un truc tout bete mais je trouve :(

Mammouth du PHP | 2703 Messages

03 sept. 2023, 20:54

$i = 1;
$epreuve = $_POST["epreuve$i"];
echo $epreuve;
$i = 2;
$epreuve = $_POST["epreuve$i"];
echo $epreuve;

Eléphanteau du PHP | 31 Messages

03 sept. 2023, 21:07

bonjour
effectivement si je met ca
$epreuve = $_POST["epreuve1"]; l
a tout ce passe bien le problème est que une personne px s 'inscrire a plusieurs épreuve du coup je ne sais pas combien de fois il va s affiche sur la première page.
par exemple la il s affiche 2 fois pour deux épreuves différentes mais je vx le modifier que sur une en l occurrence la 1ere mais pas toucher a la seconde

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 00:23

Code : Tout sélectionner

name="epreuve[<?php echo $Id_epr[$i]; ?>]"
tu récupère ensuite ton tableau "épreuve" via $_POST['epreuve']

Écris <?php, non <?Php ;)

Eléphanteau du PHP | 31 Messages

04 sept. 2023, 00:41

bonjour
effectivement si je met ton code et que je fait un
print_r($_POST["epreuve"]);
ca me retourne bien Array ( [1] => 1 [2] => 2 )
mais du coup pour l'inserer dans une requete tu ecrit ca comment
UPDATE ins SET Num_poste='$post' WHERE  Id_epreuve='".$_POST["epreuve"]."';
je suis un peux perdu sur ce coup

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 01:09

$_POST["epreuve"][ici l'id], comme un tableau (array)

Eléphanteau du PHP | 31 Messages

04 sept. 2023, 01:21

ca fonctionne pas
que je modifie un truc dans n importe quelle choix ma requête me renvoi
Id_epreuve='1'
en faite dans ma 1er page j affiche autant de fois une épreuve sur laquelle une personne c est inscrit avec $Id_epr[$i] afin de pouvoir faire des modifications sur une épreuve ou sur une autres, la personne peu s inscrire sur différentes épreuve.
exemple toto c est inscrit sur 4 épreuves différentes donc ca va m afficher 1 fois toto sur l epreuve avec l id 1, une fois toto avec l épreuve avec l id2 etc etc.
du coup si je modifie par exemple l épreuve avec l id3 il faudrait que ma requête update ce termine par Id_epreuve='3' mais la que je modifie la 1er ou la 3ieme ca me met Id_epreuve='1' a la fin de ma requête update.

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 08:44

Fais un effort sur la ponctuation et l'orthographe s'il te plaît, c'est compliqué de te lire.

Colle ton code HTML, le formulaire.

Eléphanteau du PHP | 31 Messages

04 sept. 2023, 13:26

bonjour
ci-dessous le code de mon formulaire actuellement que je modifie n importe quelle épreuve le résultat de name="epreuve[]" est 1 dans ma page de traitement
// creation de la boucle for et affichage du tableau avec les textarea 
for ($i = 0; $i < count($tabe_poste); $i++) :
$requete2 = mysqli_query($link,"SELECT * FROM epreuve WHERE Id='".$tabe_epv[$i]."'");
while($data = mysqli_fetch_array($requete2)) {
$Id_epr		= $data['Id'];
$Nom_epreuve[]  = $data['Nom_epreuve'];
$Id_circuit              = $data['Id_circuit'];
echo $Id_epr."<br>"; // m écrit  bien le bon id de l épreuve
	}
?>			
<input type="hidden"  name="epreuve[]" value="<?= $Id_epr; ?>"> // le probleme viens de cette ligne qui renvoi pas la bonne info
<table class="bouton1" align="center" width="560px" style="padding-bottom: 1rem;">
<tr>
<td colspan="4" align="center" class="war">Epreuve: <?= $Nom_epreuve[$i]; ?>
</td>
</tr>
<td>
<?php 
//recup des infos dans la table poste pour le nom et la valeur max par post
$req_po3 = mysqli_query($link, "SELECT * FROM poste WHERE Id_circuit='".$Id_circuit."'");
	while($data = mysqli_fetch_array($req_po3)) {
	 $Nom_post  = $data['Nom_poste'];
	 $Maxi	  = $data['Max'];
//compte les inscriptions  par poste pour la condition if 
$req_test =mysqli_query($link, "SELECT * FROM inscription WHERE Num_poste='".$Nom_post."'");
$res_test = mysqli_num_rows($req_test);
if ($res_test >= $Maxi) { 
 echo $Nom_post;
 ?>
 <input type="checkbox" name="poste_com" value="<?= $Nom_post; ?>" disabled="readonly" checked><br>
 <?php
} else {
 echo $Nom_post;
?>
<input type="checkbox" id="<?Php echo $Nom_post; ?>" name="poste_com" value="<?= $Nom_post; ?>"><br>
<?php
}
} 
?>
</td>
</tr>
<tr>
<td  colspan="4" class=tetiere22><div align="center"><br>
<input type='submit' name='valider' value='Valider' class=bouton1>
<input type='button' name='retour' value='Retour' class='bouton1' onClick="window.location.href='../index.php'">
</td>
</tr>
</table>
<?php
endfor; 
?>
page de traitement si je fait
Array ( [0] => 1 [1] => 2 [2] => 4 ) 
$epr = print_r($_POST['epreuve']);
$epr = 1
alors que j ai modifier l épreuve avec l id 4 soit [2] => 4 et non [0] => 1
tout pase bien sauf cette valeur
<input type="hidden"  name="epreuve[]" value="<?= $Id_epr[$i]; ?>">

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 14:08

Je ne comprends pas bien le début de ton formulaire sans les balises <form..> qui l'entoure.

je vois que tu fais avec le value et non avec la dimension du tableau, comme j'ai mis en précédente réponse :

Code : Tout sélectionner

name="epreuve[<?php echo $Id_epr[$i]; ?>]"
As tu essayé ?

Eléphanteau du PHP | 31 Messages

04 sept. 2023, 15:48

Je vai réessayer ce soir car je sais pas trop comment traiter le résultat avec la d'immension du tableau.
En faite j ai juste besoin de récupéré la valeur $Id_epr[$i] dans ma page de traitement. Je te redit ça cette nuit.

Mammouth du PHP | 2703 Messages

04 sept. 2023, 16:17

avec le formulaire version 1er message
$i = 1;
while( isset($_POST["epreuve$i"]) ){
echo $_POST["epreuve$i"];
$i++;
}

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 16:21

Si je comprends bien tu as un formulaire ou tu regroupe plusieurs "cadres" (les épreuves) et tu souhaite modifier que les cadres modifiés ?

Si c'est le cas, je te conseillerais de faire une modification épreuve par épreuve, ou sinon de mettre tes champs (tes input et autres comme les textarea) obligatoirement en tableau et de les traiter ensuite en les bouclant.

Eléphanteau du PHP | 31 Messages

04 sept. 2023, 22:50

c est bon j ai trouver ou était mon problème tu ma mis sur la voie toute a l heure two3d avec cette phrase
"Je ne comprends pas bien le début de ton formulaire sans les balises <form..> qui l'entoure."
en faite le début de mon <form...> était hors de ma boucle du coup il me prenait uniquement la valeur1.
donc en le mettant dans ma boucle for ca me permet de traiter les informations comme je veux.
merci de vos réponse a tous
je cloture

Avatar du membre
Mammouth du PHP | 1564 Messages

04 sept. 2023, 23:01

OK, passe en Résolu le sujet, tu as un bouton en haut ;)