Accueil
Cours

 

 

Voici un petit script pratique lors de l'utilisation de menus déroulants dynamiques à partir d'une variable array. Il permet en effet d'affecter la valeur "selected" pour la valeur de votre choix.
<?
function ArraySelect($array,$value)
{
reset ($array);
while (list($key, $val) = each($array))
{
?>
<option value="<?echo $key?>" <?echo (($key == $value)? 'selected': ''); ?>>
<?php echo $val; ?></option>
<?
}
}
//-- exemple d'utilisation
$arr = array('1'=>'Janvier',
'2'=>'Février',
'3'=>'Mars',
'4'=>'Avril',
'5'=>'Mai',
'6'=>'Juin'
);
//-- on lance la fonction
?>
<form method="post" action="<?echo $PHP_SELF?>">
<select name="NomForm" size="1">
<option value="">Votre choix</option>
<?php ArraySelect($arr, 5); ?>
</select>
</form>
....;;

Formulaire et $PHP_SELF

La variable $PHP_SELF représente le script courant. Si le traitement de votre formulaire est sur la même page que le formulaire lui même, utilisez:

echo "<form method='post' action='$PHP_SELF'>";


Et les valeurs du formulaire seront envoyées sur cette même page. Vous pourrez donc naturellement changer le nom de la page sans avoir à changer le paramètre action. Cela peut s'avérer pratique lorsque vous distribuez un script : les personnes pourront sans problème renommer les pages de formulaire.

Boîte de liste toujours de la même largeur

Si vous voulez que vos boîtes de liste gardent toujours la même largeur afin de ne pas perturber votre mise en page, il faut que le texte soit toujours de la même longeur. Pour cela, il faut utiliser la fonction sprintf.

<?
echo sprintf('%-30s',$texte);
?>

Ici, le texte sera rempli par des espaces afin de faire 30 caractères, le texte étant à gauche. Si vous le voulez à droite, il faut faire sprintf('%30s',$texte).

Récupérer les valeurs de plusieurs checkbox


<input type=checkbox name=var[] value="adresse@email.com">adresse@email.com
<input type=checkbox name=var[] value="adresse@email.fr">adresse@email.fr
<input type=checkbox name=var[] value="adresse2@email.tw">adresse2@email.tw

Et le code PHP correspondant qui traite ce formulaire :
<?
for ($i = 0; $i < count($var); $i++)
{
echo $var[$i];
}
?>

Générer une liste déroulante à partir d'une table


Un script tout simple qui permet de comprendre comment afficher le contenu d'une table dans un menu de sélection (La table est de la forme [valeur] [texte]) :




<?
echo '<select size=1 name="cat">'."\n";
echo '<option value="-1">Choisir un résultat<option>'."\n";

// Récupération des informations triées par ordre alphabétique
$sql = "SELECT valeur, texte FROM ma_table ORDER BY texte";
$ReqLog = mysql_query($sql, $connexion);

while ($resultat = mysql_fetch_row($ReqLog)) {
echo '<option value="'.$resultat[0].'">'.$resultat[1];
echo '</option>'."\n";
}

echo '</select>'."\n";
?>

Créer un formulaire avec une liste déroulante provenant d''une base MySQL

 

<SELECT NAME='la_valeur'>
<?
$result = mysql_query("SELECT champ FROM mabase WHERE mes_parametres");
while ($r = mysql_fetch_array($result)) {
$valeur = $r["le_champ_a_recuperer"];
if ($valeur == $valeur_du_champ_envoye_par_le_formulaire) {
echo "<option selected>".$valeur;
} else {
echo "<option>".$valeur;
}
}
?>
</SELECT>

Envoyez un courrier électronique à Philippe Bancquart pour toute question ou remarque concernant ce site Web.