Formulaire avec champs dans echo [Résolu]

Signaler
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
-
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
-
Bonjour,
J'ai le formulaire ci-dessous qui ne présente pas de message d'erreur, mais pourtant n'envoie aucune donnée.
Au début je pensais que c'était à cause du fait d'avoir des champs dans des echo mais après des recherches cela ne devrait pas poser de pb.
Je ne vois pas où est le souci.
Est-ce une histoire de php qui s'exécute côté serveur ?
<form name="1" method="post" action="../envoi_gestion.php">

<?php
    // met en "dur" la saison
    echo '<p> </p> Saison traitée : <font size="5" color="blue"><b>'.$Saison.'</b></font><br><br>';

echo "<FORM name='1' action='../envoi_gestion.php' method='POST'><br>";

  //préparation de la requête

//echo $sql;

   $sql =' SELECT Inscriptions_ULM.ID,Inscriptions_ULM.Nom, Inscriptions_ULM.Prenom, Inscriptions_ULM.NumANEG, Inscriptions_ULM.SSA, Inscriptions_ULM.CMCAS, 
   Inscriptions_ULM.ChoixStage, Inscriptions_ULM.Participationphys, Stages_ULM.TypeStage, Stages_ULM.LieuStage 
        FROM Inscriptions_ULM
		INNER JOIN Stages_ULM ON Inscriptions_ULM.ChoixStage = Stages_ULM.NumStage
        WHERE Stages_ULM.Saison = ?';

     //tri des datas pour les avoir dans un tableau 
     $datas = array($Saison);
     
     //Execution de la requete
     try{
     $req = $bdd->prepare($sql);
     $req->execute($datas);

     //on récupère les résultats
     $result = $req->fetchAll();
     
     }catch(Exception $e){
		// en cas d'erreur :
		echo " <br>Erreur ! ".$e->getMessage();
		echo " <br>Les datas : " ;
		print_r($datas);
	}
	
     // Mise en forme des résultats pour les champs voulus

if(!empty($result)){
  // Masque du tableau séparé pour ne pas le recopier à chaque ligne

  echo '
  <table style="border-collapse:collapse;" cellspacing="0" class="avectri" border="1">
      <thead>
        <tr> <!-- masque du tableau -->
        <th style="border-width:1; border-color:black; border-style:solid;">ID</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Nom</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Prénom</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Num ANEG</th>
        <th style="border-width:1; border-color:black; border-style:solid;">SSA</th>
        <th style="border-width:1; border-color:black; border-style:solid;">CMCAS</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Choix Stage</th>
        <th style="border-width:1; border-color:black; border-style:solid;">TypeStage</th>
        <th style="border-width:1; border-color:black; border-style:solid;">LieuStage</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Participation Physique</th>
        <th style="border-width:1; border-color:black; border-style:solid;">Saisie Participation Physique</th>
        </tr>
      </thead>
      <tbody>
    ';	

    foreach($result as $uneLigne){

      // Suite du tableau avec une ligne par groupe de données
      
      //récupération de l'ID de la ligne pour le renvoyer avec un input hidden
      $ID=$uneLigne['ID'];
      //utilisation de l'ID pour créer la variable qui nommera chaque select 
      $Participationmod="Participationmod".$ID;

      echo'

        <tr> <!-- lignes des résultats -->
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['ID'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['Nom'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['Prenom'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['NumANEG'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['SSA'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['CMCAS'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['ChoixStage'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['TypeStage'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['LieuStage'].'</td>
          <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['Participationphys'].'</td>
          <td style="border-width:0; border-color:black; border-style:solid;"><font size="4"><label for="Participationmod">Participation : </label>
    	<select name="'.$Participationmod.'" id="'.$Participationmod.'">
        <option value="">--Choisissez une option--</option>
        <option value="OUI">OUI</option> 
        <option value="NON">NON</option> 
        </select>
        <input type="hidden" name="'.$ID.'" id="'.$ID.'" value="'.$ID.'">
        <input type="text" name="'.$ID.'" id="'.$ID.'" value="'.$ID.'">   <!--Test pour vérifier la valeur de l\'imput hidden à virer ensuite-->
        <input type="text" name="test" id="test" value="'.$Participationmod.'">   <!--Test pour vérifier le nom du select à virer ensuite-->
	</font> </td>
        </tr>
    ';
        
    }
    echo '</tbody>
       </table>
       ';
}

?>
echo "<br><Input type='submit' name='envoyer' value='Saisie des participations'>";
echo "</form>"; 


Ce qui me fait dire que les données ne sont pas envoyées (ou du moins pas reçues) c'est parce que sur la page de traitement, j'ai le message "Aucune donnée arrivée"
<?php
echo 'Test<br>';

		//activation de l'affichage des erreurs PHP
		error_reporting(E_ALL);
		ini_set('display_errors', TRUE);
		ini_set('display_startup_errors', TRUE);

if (isset($_POST['ID']) AND isset($_POST['Participationmod']))
{
 echo $ID.'ID<br>';

}
else
{
   echo'Aucune donnée arrivée';
}
?> 


Je sèche lamentablement sur le pourquoi...
Merci d'avance
Daniel

Configuration: Windows / Firefox 89.0

2 réponses

Messages postés
33136
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
Bonjour
Regarde ta ligne 1 et la ligne 7 du code que tu nous montres...
Messages postés
33136
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
Je pense que tu n'envois aucune donnée ayant pour "nom" Participationmod

Donc ton IF est toujours faux.

.. pour vérifier si des données sont envoyées .. il faudrait, à la place de ton IF/ELSE ..
faire un
var_dump($_POST);

ça te permettrait de voir quelles variables tu envoies réellement...

Pour rappel .. dans ta question précédente .. je t'ai indiqué que pour ton SELECT, il fallait faire
<select name="Participationmod['.$ID.']" id="Participationmod'.$ID.'">
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
1
Bonjour Jordan45,
Effectivement, en virant ma ligne 1 qui était en doublon avec la 7 et en rentrant les echo du submit et de la fermeture du formulaire dans le php, ça marche.
Avec le var_dump (j'ai pas eu le réflexe...) j'obtiens :
array(16) { ["Participationmod1"]=> string(3) "OUI" [1]=> string(1) "1" ["test"]=> string(18) "Participationmod77" ["Participationmod2"]=> string(3) "NON" [2]=> string(1) "2" ["Participationmod3"]=> string(3) "OUI" [3]=> string(1) "3" ["Participationmod4"]=> string(3) "NON" [4]=> string(1) "4" ["Participationmod5"]=> string(0) "" [5]=> string(1) "5" ["Participationmod76"]=> string(3) "OUI" [76]=> string(2) "76" ["Participationmod77"]=> string(3) "NON" [77]=> string(2) "77" ["envoyer"]=> string(25) "Saisie des participations" }
Mes données arrivent donc bien.
Pour le Participationmod, j'avais au départ mis ce que tu m'avais indiqué et puis je suis parti sur une variable pour donner le nom du select de la ligne. Variable qui est définie juste au début entre le foreach et l'affichage de la ligne.
Surtout qu'il fallait aussi que je récupère l'ID (dans le input hidden) pour pouvoir traiter les données modifiées à l'arrivée.
En tout cas merci pour ta gentillesse, ta rapidité, ton coup d’œil à voir ce qui merdouille et surtout les conseils.