Formulaire html

Résolu
crazyghandi Messages postés 323 Statut Membre -  
Droopy_ Messages postés 252 Statut Membre -
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. Droopy_ Messages postés 252 Statut Membre 25
     
    Tu utilises quel langage ? (à part le HTML, bien sûr ;-)
    0
  2. crazyghandi Messages postés 323 Statut Membre 19
     
    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
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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 ;-)
      0
  3. Droopy_ Messages postés 252 Statut Membre 25
     
    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.
    0
  4. crazyghandi Messages postés 323 Statut Membre 19
     
    ok je test ca tout de suite merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. crazyghandi Messages postés 323 Statut Membre 19
     
    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
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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 ?:
      0
  7. Droopy_ Messages postés 252 Statut Membre 25
     
    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>.
    0
  8. crazyghandi Messages postés 323 Statut Membre 19
     
    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
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      Je suis pas expert en CSS, moi c'est plutôt, le PHP et HTML.

      C'est quoi le problème exactement ?
      0
  9. crazyghandi Messages postés 323 Statut Membre 19
     
    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">
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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.
      0
      1. Droopy_ Messages postés 252 Statut Membre 25 > Droopy_ Messages postés 252 Statut Membre
         
        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>
        
        
        0
  10. crazyghandi Messages postés 323 Statut Membre 19
     
    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
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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;
      
      0
    2. Droopy_ Messages postés 252 Statut Membre 25
       
      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... ;-)
      0
    3. Droopy_ Messages postés 252 Statut Membre 25 > Droopy_ Messages postés 252 Statut Membre
       
      Pour envoyer un mail en HTML, il faut changer les entetes par défaut :

      notamment :
      Content-Type: text/html; charset=ISO-8859-1
      
      0
    4. crazyghandi Messages postés 323 Statut Membre 19 > Droopy_ Messages postés 252 Statut Membre
       
      cad $headers =" ontent-Type: text/html; charset=ISO-8859-1"; ?
      0
    5. Droopy_ Messages postés 252 Statut Membre 25 > crazyghandi Messages postés 323 Statut Membre
       
      Ç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...
      0
  11. crazyghandi Messages postés 323 Statut Membre 19
     
    $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
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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
      
      0
  12. crazyghandi Messages postés 323 Statut Membre 19
     
    ok ca marche

    moi je marrete la je resoudrai le pb du css sou ie demain merci encore pour le coup de main
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      De rien.
      0