Problème de création de formulaire avec champs pré remplis

Résolu/Fermé
slefevre77 Messages postés 33 Date d'inscription samedi 11 décembre 2021 Statut Membre Dernière intervention 14 janvier 2022 - Modifié le 7 janv. 2022 à 21:40
slefevre77 Messages postés 33 Date d'inscription samedi 11 décembre 2021 Statut Membre Dernière intervention 14 janvier 2022 - 8 janv. 2022 à 11:17
Bonsoir,

J'ai un formulaire de ce type qui affiche un ascenseur dans lequel je sélectionne une ou plusieurs valeurs :

<FORM id="add_film" method="post" action="add_film.php">
<p>Sélectionner le(s) Genre(s) du Film</p>
 <select name=genre[] size=7 multiple>
  <?php
   while($data_genre = $result_genre->fetch_array()) {
    $data_genres[] = $data_genre;
   }
   
   foreach($data_genres as $data_genre) {
    echo "<option value='$data_genre[genre]'>" . $data_genre['genre'] . "</option>";
   }

   /* free result set */
   $result_genre->close();
  ?>
  <option value="new_genre"><input type="varchar" size="20" name="new_genre" style="width:150px"></option>
 </select>

<input name="submit" type="submit" value="Ajouter" />
</FORM>
</code>

Je les insère dans une base de données, jusqu'à là tout va bien.

Mais comment écrire un formulaire qui affiche dans un ascenseur du même type toutes les valeurs possibles et pré sélectionne les valeurs récupérées dans la base de données (précédemment insérées) en vue d'un UPDATE afin de ne pas avoir à les re sélectionner si on ne fait aucun changement ?

Je n'arrive pour le moment qu'à afficher les valeurs insérées mais les autres valeurs possibles :

<?php
$genres = $data_infos_film["genres"];
$exp_genres = explode(', ', $genres);
$nb_genres = count($exp_genres);
?>

<FORM method=post action="update_film.php?id=<?php echo $id; ?>&page=<?php echo $page; ?>">
<p>Sélectionner le(s) Genre(s) du Film</p>
<select name=genre[] size=7 multiple>
 <?php
  $nb = $nb_genres;
  $i = 1;
  $j = 0;
  while ($i <= $nb) {
   $exp_genre = explode(' ', $exp_genres[$j]);
   $array_genre = var_dump($exp_genre);
   echo "<option value='$exp_genre[0]'>" . $exp_genre[0] . "</option>";
   
   $i++;
   $j++;
  }
  $result_genre->close();
 ?>
<input name="submit" type="submit" value="Modifier" /><br><br></div>
</FORM>


Par avance merci pour vos idées et aide pour la suite.

Sébastien

Configuration: Windows / Firefox 95.0
A voir également:

4 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
7 janv. 2022 à 21:46
Bonjour,

Tout simplement par ce que tu dois faire la même boucle que dans ton autre formulaire...
et y ajouter un IF/ELSE pour sélectionner la/les valeur(s) déjà enregistrées dans la bdd.


0
slefevre77 Messages postés 33 Date d'inscription samedi 11 décembre 2021 Statut Membre Dernière intervention 14 janvier 2022
Modifié le 8 janv. 2022 à 09:26
Bonjour,

Pour remettre toutes les valeurs possibles dans l'ascenseur, OK.
Mais dans la bouche IF je trouve l'une des valeurs insérées précédemment ...... (Quelle commande ?) pour la sélectionner dans la liste ?

C'est la sélection que je ne sais pas faire.

Lors d'un ajout je sélectionnes les valeurs à la souris avec la touche CTRL enfoncée si plusieurs valeurs.
Mais pour re sélectionner ces valeurs, en ligne de commande je ne connais pas la fonction.


Peux-tu m'éclairer un peu plus ?
0
slefevre77 Messages postés 33 Date d'inscription samedi 11 décembre 2021 Statut Membre Dernière intervention 14 janvier 2022
8 janv. 2022 à 10:14
J'ai réglé mon problème avec des mots clés mieux adaptés dans GOOGLE :-)

En fait ce que je ne savais pas c'est : selected='selected'
dans la balise <option> pour sélectionner une valeur.

Donc mon code devient :

<?php
$genres = $data_infos_film["genres"];
$exp_genres = explode(', ', $genres);
$nb_genres = count($exp_genres);
?>

<FORM method=post action="update_film.php?id=<?php echo $id; ?>&page=<?php echo $page; ?>">
<p>Sélectionner le(s) Genre(s) du Film</p>
		<select name=genre[] size=7 multiple>
			<?php
				$nb = $nb_genres;
				while($data_genre = $result_genre->fetch_assoc()) {
					$data_genres[] = $data_genre;
				}
				foreach($data_genres as $data_genre) {
					$i = 1;
					$j = 0;
					$k = 0;
					while ($i <= $nb) {
						$exp_genre = explode(' ', $exp_genres[$j]);
						$array_genre = var_dump($exp_genre);
						if ($data_genre[genre] == $exp_genre[0]) {
							echo "<option value='$data_genre[genre]' selected='selected'>" . $data_genre[genre] . "</option>";
							$k++;
						}
						$i++;
						$j++;
					}
					if ($k == 0) {
						echo "<option value='$data_genre[genre]'>" . $data_genre['genre'] . "</option>";
					}
				}
						/* free result set */
						$result_genre->close();
			?>
		</select>
<input name="submit" type="submit" value="Modifier" /><br><br></div>
</FORM>
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
8 janv. 2022 à 11:13
On pourrait optimiser tout ca...
Déjà.. tu utilises pdo ou mysli ?
1
slefevre77 Messages postés 33 Date d'inscription samedi 11 décembre 2021 Statut Membre Dernière intervention 14 janvier 2022
Modifié le 8 janv. 2022 à 11:18
J'utilise mysqli.

Je me débrouille, mais je débute.

Je suis preneur de toute information pour coder correctement :-) !
0