URI et liste déroulante

D'après le message de JcbCreusois

  1. CODE PHP
  2. CODE JavaScript
  3. Formulaire HTML
  4. Code en entier
  5. Commentaires
  6. Télécharger le script `select.php` et le JavaScript: `jslib.js`

N.B.: le fichier s'appelle select.php dans l'exemple.

I. CODE PHP

<?php
session_start(); // primordial
if (!defined('SID2')) define ('SID2',session_name() . '=' . session_id());

// connexion à la base de données
$gdb = mysql_connect() or die('Erreur de connexion: ' . mysql_error());

// fonction qui construit la liste déroulante
// Paramètres: ressource vers la base de données
//             nom du lien (page web)
function strMySQLOption($pdb,$pstrPagePHP)
{
	$strRetour = '';
	$strSQL = 'SELECT id,nom FROM tblTable';
	// exécution
	if ( $result = @mysql_query($strSQL,$pdb))
	{
		// boucle
		while ( $assoc = mysql_fetch_assoc($result) )
		{
			$strRetour .= '    <option value="'.$pstrPagePHP.'?id='.$assoc['id'].'">'.$assoc['nom'].'</option>'."\n";
		}
		mysql_free_result($result);
	}
	// retour des options...
	return $strRetour;
}
?>
		

II. Fonction Javascript (jslib.js)

/*
	Fonction: GOTOURI()
	Va à la page identifée dans la liste et ajoute l'identifiant de session à l'URI.
	Paramètres:
		pselect : identifiant du select
		phidSession : champ avec le nom de la session et son id.
	Retour:
		aucun retour
*/
function gotouri(pselect,pstrSID)
{
	var idx = pselect.selectedIndex;
	if (idx > 0 )
	{
		var strUrl = pselect.options[idx].value;
		if (pstrSID != "")
			strUrl += '&' + pstrSID;
		self.location.href = strUrl;
	}
	else
		alert('Veuillez faire un choix au menu.');
}
		

III. Formulaire HTML

<form method="post" action="select.php">
	<select name="selectname" onchange="gotouri(this,'<?=SID2 ?>');">
		<option>==== Faites un Choix ====</option>
		<?php echo strMySQLOption($gdb,'detail.php'); ?>
	</select>
</form>
		

N.B.: En souligné, les liens entre la page HTML, le script PHP et le script JavaScript.

IV. Code en entier

		

V. Commentaires

  1. N'oubliez pas de modifier la requête de sélection des champs.
  2. Si les champs ne sont pas id et nom, il faut changer les champs du tableau (dans la chaine de caractères aussi).
  3. N'oubliez pas de créer la page de référence (ici c'est detail.php).