Page 1 sur 1

affichage textarea

Posté : 08 août 2023, 03:30
par tto99
bonjour

je rencontre un proble avec une boucle while($row = mysqli_fetch_assoc($requete))
en faite mon while fonctionne mais j aurai besoin d afficher dans une me tetextarea les informations concernant les personne qui ce sont incrite pour un meme poste
j utilise ce code actuellement
<?php
							//recuperation des infos des personne inscript par poste
							 $requete = mysqli_query($link, "SELECT * FROM inscription WHERE Id_epreuve=$Id_circuit1 ORDER BY Num_poste Asc ");
							// $resultat = mysqli_num_rows($requete);
							
							 while($row = mysqli_fetch_assoc($requete)) {
								 
								//$Id_p       = $row['Id_inscription'];
								$Nom        = $row['Nom']; 
								$Prenom     = $row['Prenom'];
								$Num_poste  = $row['Num_poste'];
							 ?>
							 <table class="bouton2" align="center">
								<tr>
								<td><div align="left">Poste: <?php echo $Num_poste; ?></td>
								<td><textarea name="textarea" cols="37" rows="4" style="CURSOR: hand;" disabled readonly>
									<?php 
										echo $Nom.' '. $Prenom.'<br>'; 
									?>
									</textarea></font></td>
								</tr>
							</table>
							 <?php
							 }
							 ?>
actuellement cela me généré autant de textarea que de personne qui ce sont inscrite meme si j ai 3 personne qui ce sont inscrit pour le même poste.
je sais pas si je suis asser claire, en gros je souhaiterai afficher une textarea par poste avec dans chaque textarea le nom des personnes qui sont inscrite pour ce poste.
je pense que je devrai faire un truc du genre
$i=0;
while($row[$i] = mysqli_fetch_assoc($requete)) {
$Nom        = $row[$i]['Nom'];
$i++;
mais la je suis un peu perdu sur la syntaxe,avez vous une idée.
merci

Re: affichage textarea

Posté : 08 août 2023, 10:24
par @rthur
Alors, 1ère étape logique, il faut que tu sortes ton textarea de ta boucle pour ne pas en avoir plusieurs qui s'affichent.

Et dans ta boucle, il faut que tu construises une variable qui va contenir le texte que tu veux afficher dans ton textarea. En gros, à chaque passage de ta boucle, tu vas concaténer la valeur courante avec ce qu'il y avait précédemment dans ta variable (les valeurs précédentes de ta boucle.
Donc, avant ta boucle tu inities une variable vide, par exemple $contenu_textarea = '';
Puis dans ta boucle, tu ajoutes les valeurs courantes et un séparateur (par exemple un retour à la ligne \n ) à la variable que tu es en train de construire pas à pas.
Exemple :
 $contenu_textarea = $contenu_textarea . $row['Prenom'] . ' ' . $row['Nom'] . "\n";
À noter qu'il existe l'opérateur ".=" (au lieu de "=", attention à bien voir le ".") qui permet de faire la même chose, c'est à dire concaténer du texte à la suite d'une variable :
 $contenu_textarea .= $row['Prenom'] . ' ' . $row['Nom'] . "\n";

Et enfin dans le textarea, que tu as sorti de ta boucle, et bien tu affiches la valeur de $contenu_textarea

Re: affichage textarea

Posté : 08 août 2023, 11:30
par tto99
bonjour

merci de ta réponse @rthur
si je dit pas de bêtise t on exemple me crée juste un textarea du faite de le sortir de la boucle et me met l ensemble des personnes inscrit dedans.
le problème est que pour un circuit je dispose de plusieurs poste et pour un même poste plusieurs personne peuvent s inscrire.
ce que j aimerai comme résultat c est que pour le poste 1 par exemple ca m affiche un textarea avec toutes les personnes inscrite a ce poste, puis en dessous un textarea pour le poste2 avec toutes les personne qui sont inscrite a ce poste etc etc

Re: affichage textarea

Posté : 08 août 2023, 13:57
par or 1
ce code doit lui même être dans une autre boucle, qui parcours tous les postes.
à noter, s'il n'y a que le textarea, qu'il est possible d'afficher le début du textarea avant le while, le contenu dans le while, la fermeture du textarea après le while, donc sans variable concaténée.

Re: affichage textarea

Posté : 08 août 2023, 17:53
par tto99
Merci or1

Je vai testé ca ce soir je vous tient informé des résultats

Re: affichage textarea

Posté : 09 août 2023, 14:47
par tto99
salut

j ai fait avec ta réponse or1 et ca me donne bien le résultat que je souhaite.
je met le code si ca px aider du monde.
<?php
	//recuperation des postes
	 $requete = mysqli_query($link, "SELECT * FROM inscription WHERE Id_epreuve=$Id_circuit1 GROUP BY Num_poste ASC");
			 //$resultat = mysqli_num_rows($requete);
			while($row = mysqli_fetch_assoc($requete)) {

			$Num_poste  = $row['Num_poste'];
								 
?>
			<table class="bouton2" align="center">
			<tr>
			<td colspan="4" class=tetieredate><div align="left">Poste: <?php echo $Num_poste; ?></td>
			<td colspan="4"><textarea name="textarea" cols="37" rows="4" style="CURSOR: hand;" disabled readonly>
<?php
			//recuperation des personne poste par poste
			 $Rqs = mysqli_query($link, "SELECT * FROM inscription WHERE Num_poste='$Num_poste' ");
			 //printf("Select a retourné %d lignes.\n", mysqli_num_rows($Rqs));
			while($row = mysqli_fetch_assoc($Rqs)) {
										 
				$Nom        = $row['Nom']; 
				$Prenom     = $row['Prenom'];
										
			echo $row['Nom'].' '.$row['Prenom']."\n";
			 }
													
?>
	</textarea></font></td>
	</tr>
	</table>
<?Php
	 }
 ?>
merci a vous deux de votre aide

Re: [RESOLU] affichage textarea

Posté : 09 août 2023, 19:59
par or 1
la structure de la base de données n'est probablement pas bonne. s'il y a des postes, des épreuves, des utilisateurs, des inscriptions, il faut une table pour chaque.