Page 1 sur 1

Afficher le contenus d'un choix d'un menu déroulant

Posté : 12 août 2015, 19:57
par Sharyn
Bonsoir,
J'ai crée un menu déroulant affichant les données de ma table.
J'aimerais mais je ne sais pas par où commencer et comment m'y prendre pour que quand je sélectionne un choix cela m'affiche le contenus des autres colonnes de la même table relatif au même choix.
Je m'explique :
Dans ma table ci dessous http://hpics.li/abf2671
Je veux afficher la colonne PSN dans un menu déroulant comme ceci http://hpics.li/e436a11
Ok très bien sa OK.
Maintenant si je clique sur PremierPSN en dessous je veux voir apparaître le contenus de : Objet1/Email1/MSG1
Si je clique du DeuxiemePSN idem, Objet2/Email2/MSG2

EDIT: pour le moment j'ai penser a cela :

Code : Tout sélectionner

<?php if ($_POST['PSN']) { $contenu = "SELECT (Email,Message) FROM PS_Database.dbo.Recrutement WHERE PSN='$row'"; $st = odbc_prepare($GLOBALS['dbConn'],$contenu); $odr = odbc_num_rows($st); while($rows = odbc_fetch_array($st)) echo '<'.$rows["Email"].'>'; } ?>
à la suite du menu.
Mais sa fonctionne pas, il me demande la valeur de PSN :
Undefined index: PSN in..
J'ai vu qu'il faudrait un JS pour rafraichir?
Merci

Re: Afficher le contenus d'un choix d'un menu déroulant

Posté : 13 août 2015, 11:45
par ynx
Salut,

Effectivement puisque PHP est exécuté coté serveur (pour le dire plus simplement, PHP est exécuté avant le chargement de la page), tu ne peux pas récupérer la valeur de $_POST['PSN'] au premier chargement.

Deux solutions pour récupérer la valeur sélectionnée par l'utilisateur : utiliser un formulaire ou utiliser ajax. La deuxième solution permet de ne pas recharger entièrement la page comme le fait la soumission d'un formulaire, mais dans les deux cas le principe est le même : envoyer une requête au serveur avec la valeur de la liste déroulante pour que PHP puisse l'utiliser.

Voici un exemple simple en utilisant un formulaire :
<?php
if (!empty($_POST['PSN'])) {
	// l'utilisateur a selectionné un PSN, on peut effectuer la deuxième requete
	echo 'PSN sélectionné : ' . htmlspecialchars($_POST['PSN']);
	
	// requete2 ...
} else {
	// permier chargement de la page, l'utilisateur n'a pas selectionné de PSN, on affiche la liste des PSN
	echo 'Aucun PSN selectionné';
	
	// requete1 ...
}
?>
<form method="post">
	<select name="PSN" onchange="this.form.submit()">
		<option value="valeur1">PSN1</option>
		<option value="valeur2">PSN2</option>
		<option value="valeur3">PSN3</option>
	</select>
</form>
Grâce à l'attribut onchange de la liste déroulante, on soumet le formulaire dès que l'utilisateur sélectionne une valeur.
Rien de spécial coté PHP, on retrouve le début de ce à quoi tu avais pensé.

Bon développement

Re: Afficher le contenus d'un choix d'un menu déroulant

Posté : 13 août 2015, 13:31
par Sharyn
Les valeurs du menu déroulant proviennent uniquement si on les rajoutes à la main.. mon but est que le menu déroulant pioche tous les row d'une colonnes
et qu'en cliquant sur la row cela affiche le contenus des autres colonnes relatif à la même row :/

Re: Afficher le contenus d'un choix d'un menu déroulant

Posté : 13 août 2015, 13:51
par ynx
Dans mon exemple, la liste déroulante est créée à la main. Mais tu peux évidemment parcourir les résultats de ta requête avec une boucle pour construire cette liste.

Par exemple :
<?php
// on récupère la liste des PSN
$requete1 = "SELECT PSN FROM PS_Database.dbo.Recrutement";
$st = odbc_prepare($GLOBALS['dbConn'], $requete1);
$resultatRequete1  = odbc_execute($st);


if (!empty($_POST['PSN'])) {
	$requete2 = "SELECT * FROM PS_Database.dbo.Recrutement WHERE PSN = ?";
	$st2 = odbc_prepare($GLOBALS['dbConn'], $requete2);
	$resultatRequete2  = odbc_execute($st2, array($_POST['PSN']));
}
?>
<form method="post">
	<select name="PSN" onchange="this.form.submit()">
		<?php while($row = odbc_fetch_array($resultatRequete1)) : ?>
			<option value="<?php echo htmlspecialchars($row['PSN']); ?>"<?php echo (!empty($_POST['PSN']) && $row['PSN'] === $_POST['PSN']) ? ' selected' : ''; ?>><?php echo htmlspecialchars($row['PSN']); ?></option>
		<?php endwhile; ?>
	</select>
</form>

<?php 
if (!empty($_POST['PSN'])) {
	$row = odbc_fetch_array($resultatRequete2);
	
	echo 'Email : ' . htmlspecialchars($row['Email']) . '<br>';
	echo 'Objet : ' . htmlspecialchars($row['Objet']) . '<br>';
	echo 'Message : ' . htmlspecialchars($row['Message']) . '<br>';
} 
?>

Re: Afficher le contenus d'un choix d'un menu déroulant

Posté : 13 août 2015, 15:25
par Sharyn
Ah oui j'étais loin de se que j'avais fait :x,
Mon menu affiche rien dedans, pourtant sa m'a l'air correcte dans la requêtes et $row :o