Affecter nom à des select d'après id

Résolu/Fermé
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 19 juin 2021 à 18:40
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 19 juin 2021 à 19:41
Bonjour,

A partir d'une requête jointe, je récupère des données dans un tableau. Je souhaiterai mettre un select en fin de chaque ligne pour pouvoir faire un choix et updater ensuite la totalité des choix.
Comme les select ne proposeront toujours que les 2 mêmes choix, l'idée est de pouvoir traiter toutes les lignes d'un coup et de ne pas avoir à faire ligne par ligne.
Je pense que les select doivent avoir des identifiants différents et pour cela, je me posais la question de savoir s'il était possible de nommer chaque select à partir de l'id de la ligne qui est unique.
Mais peut-être n'est-ce pas la bonne démarche...
Mon code actuel qui fonctionne bien pour l'affichage ne devrait pas permettre après avoir fait les choix pour chaque ligne d'updater les valeurs
  //préparation de la requête
   $sql =' SELECT * 
        FROM Inscriptions_ULM
		LEFT 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 des documents après récupération des informations à partir du N° de stage
      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:1; 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>
	</font> </td>
        </tr>';
    }
    echo '</tbody>
       </table>
       ';
  
}   


Je pensais à quelque chose du genre
<select name="Participationmod.$ID" id="Participationmod.$ID">
        <option value="">--Choisissez une option--</option>
        <option value="OUI">OUI</option> 
        <option value="NON">NON</option> 
        </select>


Est-ce une inepsie ?

Après si ma demande est irréalisable, j'ai toujours l'option d'appeler chaque ligne à partit de son ID, de faire le choix avec le select et de l'updater et ainsi de suite.

Merci d'avance au bienfaiteur.
Daniel
Configuration: Windows / Firefox 89.0

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 19 juin 2021 à 19:05
Bonjour,

Oui c'est possible.
Il faut juste faire de la concaténation de ligne...

Ton instruction se trouvant dans un ECHO ... et le ECHO commençant par une simple quote... il faut faire
  echo '
    ....
<select name="Participationmod'.$ID.'" id="Participationmod'.$ID.'">


1
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 19 juin 2021 à 19:06
après... en faisant comme ça.. tu risques d'avoir du mal à traiter l'envoi du formulaire.
Il vaudrait mieux utiliser la syntaxe
echo '
 ...
<select name="Participationmod['.$ID.']" id="Participationmod'.$ID.'">
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 juin 2021 à 19:05
bonjour,
en quoi cela ne te semble pas réalisable?
1
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 juin 2021 à 19:07
par contre, où se trouve ton formulaire?
0
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
19 juin 2021 à 19:41
Bonjour yg_be,

j'avais un doute sur le fait que le select prendrai chaque ID et qu'à la fin ça mettrai le brun dans la requête d'update où tout se mélangerait.
Pour ce qui est du formulaire ... c'est le formulaire.
En fait au départ j'ai juste un input qui demande quelle saison on veut traiter.
Elle est submitée sur la même page et utilisée pour une requête jointe car les champs du tableau final viennent de 2 tables avec (heureusement) des données communes.
Une partie des données de ces tables sont affichées dans un tableau et il est créer une colonne supplémentaire qui contient un sélect à chaque ligne pour pouvoir saisir une donnée (en l'occurrence OUI ou NON sur une participation effective) qui sera updatée dans une des 2 tables à la fin.
J'espère avoir été assez compréhensible.

Mon souci était de pouvoir traiter toutes les lignes du tableau en une seule fois. Ce qui nécessitait comme je le pensais de différentier chaque select.

Je profite d'écrire un peu pour remercier sincèrement tous les contributeurs qui aident les âmes en peine.
0