Formulaire html

Résolu
Bonjour,

j'ai un formulaire html sur lequel je verifie tous mes champs

si un champ obligatoire n'a pas ete rempli, la page est rechargee et le champ est
marque en rouge

le probleme est que a ce moment la tous les autres champs se reaffichent vides

donc comment garder le contenu des input pendant le rechargement de la page ?

merci de vos reponses
Configuration: Windows XP
Opera 9.62

11 réponses

  1. ok ca marche

    moi je marrete la je resoudrai le pb du css sou ie demain merci encore pour le coup de main
  2. $headers = 'From: '.$From."\nContent-Type: text/html; charset=iso-8859-1";

    ca marche nikel

    en revanche pour le radio j'ai mis

    if (empty($_POST['a_vit_ang'])) $_POST['a_vit_ang']='valeur1';

    pour

    <INPUT type=radio name="a_vit_ang" value="angle"<?=($_POST['a_vit_ang']=='angle')?"selected":""?>>

    mais je ne vois pas quoi mettre a la place de valeur1
    1. Ben 'angle', c'est avec ça que tu compares après.

      Par exemple, si tu veux faire un oui/non :
      <?
      if (empty($_POST['ouinon'])) $_POST['ouinon']='Non'; // Non par défaut
      ?>
      <INPUT type=radio name="ouinon" value="Oui"<?=($_POST['ouinon']=='Oui')?"selected":""?>> Oui
      <INPUT type=radio name="ouinon" value="Non"<?=($_POST['ouinon']=='Non')?"selected":""?>> Non
      
  3. ok merci encore pour les reponses

    petit souci avec les radio, ils ne se rechargent pas en rouge, donc la valeur n'est pas "empty"

    toutefois le choix n'est pas recoche, et les trois radio sont vides

    autre petit souci pour creer le corps du mail j'ai une fonction load_acquereur($message)

    dans cette fonction :
    $message = "
    <table width='600' border='1'>
    <tr>
    <td colspan='2'>COORDONNEES</td>
    </tr>
    <tr>
    <td width='141'>Nom :</td>
    <td width='101'>".$_POST['c_nom']."</td>
    </tr>
    <tr>
    <td width='141'>Prénom</td>
    <td width='101'>".$_POST['c_pre']."</td>
    </tr>
    <tr>
    <td width='141'>E-mail :</td>
    <td width='101'>".$_POST['c_ema']."</td>
    </tr>
    <tr>
    <td width='141'>Téléphone :</td>
    <td width='101'>".$_POST['c_tel']."</td>
    </tr>
    </table>";
    return $message;
    }

    et je recois un mail avec precisement :

    <table width='600' border='1'>
    <tr>
    <td colspan='2'>COORDONNEES</td>
    </tr>
    <tr>
    <td width='141'>Nom :</td>
    <td width='101'>nom</td>
    </tr>
    <tr>
    <td width='141'>Prénom</td>
    <td width='101'>prenom</td>
    </tr>
    <tr>
    <td width='141'>E-mail :</td>
    <td width='101'>email</td>
    </tr>
    <tr>
    <td width='141'>Téléphone :</td>
    <td width='101'>tel</td>
    </tr>
    </table>

    (donc les post_nom,prenom, etc... sont bien sortis mais le html n'est pas pris en compte

    o fait dis moi kan tu en as marre
    1. Si tu veux forcer un des bouton radio, il te suffit de faire :
      if (empty($_POST['radio1'])) $_POST['radio1']='valeur1';
      

      Comme ça le code après cochera le bouton radio correspondant.

      À noter que c'est pour cette raison que je preferre mettre toutes les valeurs
      lues dans $_POST dans un objet et utiliser cet objet ensuite, comme ça j'ai pas
      à modifier $_POST. C'est possible, mais je trouve pas ça propre.

      foreach($_POST as $champs => $valeur)
          $objet->$champs = $valeur;
      
    2. Non, c'est bon, le forum est un peu à l'arrêt à cette heure.
      Pour moi il est 21h43, et je zieute la TV tranquillement... ;-)
    3. @Droopy_Pour envoyer un mail en HTML, il faut changer les entetes par défaut :

      notamment :
      Content-Type: text/html; charset=ISO-8859-1
      
    4. @Droopy_cad $headers =" ontent-Type: text/html; charset=ISO-8859-1"; ?
    5. @crazyghandiÇa dépend de la fonction que tu utilises pour envoyer le mail. En général, elle prévoit de pouvoir changer le header du mail...
  4. ah oui bien sur j'ai pas cite le pb

    en fait sous firefox et opera il s'affiche nikel

    mais sous ie les boutons sont en cascade vers le bas de gauche a droite

    www.cp2a.com/ei

    et dernier type de champ pour le post :

    Oui <INPUT type=radio name="v_vit_ang" value="angle">
    1. Pour ton champs <input> fait :
      <INPUT type=radio name="v_vit_ang" value="angle"<?=($_POST['v_vit_ang']=='angle')?"selected":""?>>
      

      À noter, c'est peut-être checked au lieu de selected, je suis pas sûr.
    2. @Droopy_Pour le CSS, j'ai simplifié le code au maximum et j'arrive à reproduire le problème.
      Mais ce genre de décalage en CSS m'as toujours planté. Je contourne le problème
      avec un tableau, au lieu des float CSS.

      Si quelqu'un veut tester, voici le code épuré :
      <style>
      #accueil a{
      float: left;
      position: relative;
      background: #ccccff;
      text-decoration:none;
      padding-left:120px;
      padding-bottom:35px; 
      }
      </style>
      
      <ul style="list-style-type:none; ">
      <li id="accueil" ><a href="?main=accueil.php">accueil.php</a></li>
      <li id="accueil"><a href="?main=acquereur.php">acquereur.php</a></li>
      <li id="accueil"><a href="?main=vendeur.php">vendeur.php</a></li>
      <li id="accueil"><a href="?main=offres.php">offres.php</a></li>
      <li id="accueil"><a href="?main=contact.php">contact.php</a></li>
      </ul>
      
      
  5. ok super merci beaucoup je vais applique tout ca

    autrement vu que tu as l'air de t'y connaitre pourrais tu m'aider avec un souci css ?

    c'est un menu css horizontal

    exemple sur les deux premiers boutons :

    style :
    #accueil a{
    float: left;
    position: relative;
    background-image:url(images/accueil1.jpg);
    text-decoration:none;
    padding-left:120px;
    padding-bottom:35px;
    }
    #accueil a:hover{
    background-image:url(images/accueil2.jpg);
    }
    #acquereur a{
    float: left;
    position: relative;
    background-image:url(images/acquereur1.jpg);
    text-decoration:none;
    padding-left:120px;
    padding-bottom:35px;
    }
    #acquereur a:hover{
    background-image:url(images/acquereur2.jpg);
    }

    code :

    <script type="text/javascript">
    if (navigator.appName == "Microsoft Internet Explorer") {
    document.write ("Le menu n'est pas encore opérationnel sous Internet Explorer");
    alert ("ie");
    }
    document.write ('<ul style="list-style-type:none; ">');
    document.write ('<li id="accueil" ><a href="?main=accueil.php"></a>');
    document.write ('<li id="acquereur"><a href="?main=acquereur.php"></a>');
    document.write ('<li id="vendeur"><a href="?main=vendeur.php"></a>');
    document.write ('<li id="offres"><a href="?main=offres.php"></a>');
    document.write ('<li id="contact"><a href="?main=contact.php"></a>');
    document.write ('</ul>');

    </script>

    encore merci
    1. Je suis pas expert en CSS, moi c'est plutôt, le PHP et HTML.

      C'est quoi le problème exactement ?
  6. Pour le textarea, il faut faire :

    <textarea class="input" name="v_loc_aut" rows="2" cols="45"><?=$_POST['v_loc_aut']?></textarea> 
    


    La nuance est petite, mais c'est indispensable de mettre la valeur entre le tag <textarea ...> et le champs </textarea>.
    1. ca marche parfaitement sauf pour :

      <SELECT NAME="v_sur_rdc" style="width:100px; " value="<?=$_POST['v_sur_rdc']?>">
      <OPTION VALUE=""> Select
      <OPTION VALUE="inf50" > < 50
      <OPTION VALUE="50a100" > 50 - 100
      <OPTION VALUE="sup100" > > 100
      </SELECT>

      il me remet "select"

      et pour

      <textarea class="input" name="v_loc_aut" rows="2" cols="45" value="<?=$_POST['v_loc_aut']?>"></textarea>

      il me remet un champ vide

      pour les input c'est nikel
      1. Pour le select, c'est un peu plus compliqué :

        <SELECT NAME="v_sur_rdc" style="width:100px; ">
        <OPTION VALUE=""<?=($_POST['v_sur_rdc']=="")?" selected":""?>> Select
        <OPTION VALUE="inf50"<?=($_POST['v_sur_rdc']=="inf50")?" selected":""?>> < 50
        <OPTION VALUE="50a100"<?=($_POST['v_sur_rdc']=="50a100")?" selected":""?>> 50 - 100
        <OPTION VALUE="sup100"<?=($_POST['v_sur_rdc']=="sup100")?" selected":""?>> 100
        </SELECT> 
        

        C'est lourd, mais bon. J'espere que tu est a l'aise avec l'opérateur ?:
    2. Ah, un bon choix ;-)

      Tu vas devoir remplir le champs value pour chacun des champs :
      <input type="text" class="input" name="v_ville" value="<?=$_POST['v_ville']?>"/>
      

      Et ce pour chacun des champs.
      1. j'utilise du php

        petit exemple de code :

        //controle

        if (empty($_POST['v_ville'])) {
        $v_vil_stat = "e";
        $val = 0;
        }

        //formulaire

        <tr>
        <td>
        <?php if ($v_vil_stat == "e") {
        echo "<font color='#FF0000'>Ville </font></td>"; //donc rouge si le champ ville est vide
        }else{
        echo "Ville";
        }?>
        <td class=$class><input type="text" class="input" name="v_ville"/></td>
        </tr>

        donc val reteste sur tous les champs et si el ne retoune pas 0 on envoie le mail
        1. A ta place, pour la couleur, je ferais plutôt :

          <?php
             if ($v_vil_stat == "e") 
                   $color='#ff0000';
             else $color='#000000'; // Par exemple
          
             echo "<font color='$color'>Ville </font></td>"; //donc rouge si le champ ville est vide
          }
          

          Comme ça, ça évite d'avoir deux fois Ville, car quand tu as des gros formulaires et qu'il faut les modifier, il est préférable de n'avoir à le faire qu'une fois par champs ;-)