Étapes

  1. Ouvrir la base de données (la sélectionner)
  2. Exécuter la requête.
  3. Commencer l'écriture de la liste déroulante
  4. Pour chaque résultat, afficher une option et tester si on doit la sélectionner.
  5. Terminer en beauté
<?php

// Constante pour les changements de ligne
define ( 'BR', '<br />'); // Balise BR en XHTML.
define ( 'NL', "\n"); // Retour de ligne Unix

// Connexion à la base de données
$db = mysql_connect('serveur','nomUsager','motDePasse') or echoMyError();
mysql_select_db('nomDeLaBaseDeDonnee', $db) or echoMyError();

// on sélectionne le id 5.
echoSelect( 'SELECT idTable as theValue, txtTable as theText FROM nameTable', 5, 'nomSelect', $db );

mysql_close($db);


/**
 * Fonction qui écrit un sélect selon une requête SQL
 * @param $pSQLSelect  La requête SQLSelect doit contenir deux champs, theValue et theText
 * @param $pValue      La valeur sélectionnée par le select
 * @param $pSelectName Nom de la balise select (attribut name)
 * @param $pDb         La ressource vers la base de données
 */
function echoSelect ( $pSQLSelect, $pValue, $pSelectName, $pDb ) {
    // Exécution de la requête
    if ( ($result = mysql_query($pSQLSelect, $pDb))  ) {

        // mysql_num_rows permet d'afficher le select seulement s'il y a des lignes à afficher
        if ( mysql_num_rows($result) ) {

            // on débute l'élément SELECT avant le While
            echo '<select name="'.$pSelectName.'">' . NL;

            // boucle parmit tous les enregistrements
            while( ($obj=mysql_fetch_object($result) ) ) {
                echo '<option value="'.$obj->theValue.'"';
                // on regarde à chaque option si on doit la sélectionner ou non
                if ( $obj->theValue === $pValue ) {
                   echo ' selected="selected"';
                }
                echo '>' . $obj->theText . '</option>' . NL;
            }

            // on finit l'élément SELECT
            echo '</select>' . NL

        } // on finit le if pour le select

    } else {
        echoMyError($pSQLSelect);
    }
}


/**
 * Affiche les erreurs MySQL avec un message 
 * supplémentaire s'il y a lieu
 * @param $pStr   Supplément, non obligatoire
 */
function echoMyError( $pStr='' ) {
 echo 'Erreur MySQL: ' . mysql_error() . BR;
 if ( $pStr != '' ) {
   echo 'Supplément: '  . $pStr . BR;
 }
}

?>