phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  Formulaires


Menu déroulant avec option "selected"[22-01-2002]
Posté par Cédric Sadai

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'
            
);

//-- on lance la fonction
?>
<form method="post" action="<?echo $PHP_SELF?>">
<select name="ouaich" size="1">
<option value="">Votre choix</option>
<?php ArraySelect($arr, 2); ?>
</select>
</form>

Dans cet exemple, le menu déroulant prendra "février" comme valeur par défaut.

[1 commentaire]

Formulaire et $PHP_SELF[18-01-2002]
Posté par Matthias Etienne

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.

Créer plusieurs champs de formulaire comme dans phpMyAdmin[17-11-2001]
Posté par Mikael Chelli

Comme dans phpMyAdmin quand on crée une table, on peut créer autant de champs de formulaires que l'on veut à partir d'un nombre entré dans un formulaire.
Pour cela on utilise une boucle :

<?
if($nbform)
{
    echo
"<form action=\"page.php\" method=\"post\">";
    
$i = 0;
    while(
$i != $nbform)
    {
        echo
"<input type=\"text\" name=\"champ$i\"> <b>Champ $i</b><BR>";
        
$i++;
    }
    echo
"</form>";
}
else
{
    echo
"<form action=\"$PHP_SELF\" method=\"post\">
    <input type=
\"text\" name=\"nbform\" size=\"2\">
    <input type=
\"submit\" value=\"Générer\">
    </form>"
;
}
?>


Transmettre les valeurs d'un tableau par un FORM[07-10-2001]
Posté par overseas

Je débute un peu en PHP (1 mois), mais j'ai mis au point un truc imparable et rigoureux pour transférer par FORM les valeurs d'un tableau de taille variable par cases à cocher.

Je précise que j'utilise un filtre pour sélectionner x enregistrements dans la base, affichés dans une boucle 'i' :

  1. je stocke le contenu du champs qui m'intéressent (ici le code_article, pour retrouver les enregistrements cochés par la suite) après avoir filtré ma base (j'ai stocké le nombre d'enrg affichés dans la variable $numlignes)
    $var = stripslashes($record[0]) ;
  2. comme je suis dans la boucle d'affichage du résultat de ma sélection, j'en profite pour créer dynamiquement un nom de variable pseudo-tableau :
    $casename = "code[".$i."]" ;
  3. j'associe ces deux variables dans la déclaration de la case à cocher :
    echo "<INPUT TYPE='checkbox' NAME='".$casename."' VALUE='".$var."'>" ;
  4. je passe "discrètement" le nombre de cases à cocher = nb d'enrg affichés :
    echo "<INPUT TYPE='hidden' NAME='nbkey' VALUE='".$numlignes."'>" ;
  5. dans le PHP recevant le FORM, je fais une boucle du nb de cases à cocher :
    for ($j=0; $j < $nbkey; $j++)
  6. je récupère la valeur de chacune des cases :
    { $keyvalue = $code[$j] ;
  7. si elle est différente de NULL... ben c'est qu'elle a été cochée, et je sais quel est l'enrg concerné :
    if ($codel[$j])
    ... donc je peux le traiter :
    select * from... where codeart = $keyvalue
Voilà, beaucoup de réflexion, mais c'est performant car on ne browse pas toute la table, on ne va QUE sur les
enregistrements concernés.

[1 commentaire]

Boîte de liste toujours de la même largeur[11-01-2001]
Posté par Frédéric Bouchery

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.

Ex :

<?
  
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[27-12-2000]
Posté par Perrich

Voilà un exemple de code HTML :

<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];
}
?>


[3 commentaires]

Générer une liste déroulante à partir d'une table[23-09-2000]
Posté par Perrich

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[04-06-2000]
Posté par Jacques JOCELYN

Voici le code :

<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>


Récupérer les valeurs d'un SELECT MULTIPLE[10-05-2000]
Posté par Fandrall

Dans un formulaire, afin de récupérer les valeurs provenant d'un SELECT MULTIPLE, il suffit d'ajouter [ ] derrière le nom de la variable.

Exemple :

<select name="valeur[]" multiple>
  <option value='1'>valeur_1</option>
  <option value='2'>valeur_2</option>
  <option value='3'>valeur_3</option>
  <option value='4'>valeur_4</option>
</select>

Dans le cas où les paramètres value='x' sont omis, le tableau contiendra des valeurs parmi valeur_1, valeur_2, ... Sinon il prendra ses valeurs dans l'ensemble (1,2,3,4).

[2 commentaires]

Valeurs saisies dans un formulaire[10-05-2000]

Pour récupérer les valeurs saisies dans un formulaire, utiliser les variables $HTTP_POST_VARS (si la méthode utilisée dans le formulaire est POST), ou $HTTP_GET_VARS (si la méthode utilisée dans le formulaire est GET).

Exemple de fichier saisie.html :
<FORM ACTION="traiter.php3" METHOD="post">
<INPUT TYPE="text" NAME="prenom">
...
</FORM>
La valeur saisie peut-être récupérée dans traiter.php3 par :
$HTTP_POST_VARS["prenom"]
ou par
$prenom tout simplement.


Synseo