2014-09-13 3 views
0

J'utilise le code suivant pour créer un formulaire. Le formulaire comporte des champs de texte, une case à cocher, des menus déroulants et une zone de texte. je pouvais montrer le texte valeurs des champs lors de la soumission du formulaire si elle est correctement rempli et affiche le message d'erreur à th fiels qui ne sont pas remplis correctement. Je veux faire la même chose pour la case à cocher, la liste déroulante et la zone de texte. Si la case à cocher est cochée pour OUI, le formulaire doit afficher la case à cocher sélectionnée OUI si le formulaire contient des champs non remplis ou remplis incorrectement lors de la soumission du formulaire. I enregistrer les champs valeurs comme ceci:Comment afficher correctement les champs remplis si le formulaire affiche des erreurs lors de la soumission?

$sender = $_POST["sendername"]; 
$name_title = $_POST["name_title"]; 
$pick_up_yes = $_POST["pick_up_yes"]; 
$pick_up_no = $_POST["pick_up_no"]; 
$special_req = $_POST["special_req"]; 

Validation:

if(empty($sender)){ 
//Blank string, add error to $errors array.   
$errors['sendername'] = "Please enter your name!"; 
     } 
if($name_title === none){ 
//if selected is none, add error to $errors array.   
$errors['name_title'] = "Please select the title of your name!"; 
} 
if (($pick_up_yes != yes) && ($pick_up_no != no)){ 
//Blank string, add error to $errors array.   
$errors['pick_up_no'] = "Please let us know your airport pick up requirement!"; 
} 

formulaire HTML:

<div class="form-label">Title</div> 
    <div class="form-input"> 
     <select name="name_title" class="name-title-input">  
      <option value="none" selected="selected">Select Title</option> 
      <option value="Mr">Mr</option> 
      <option value="Mrs">Mrs</option> 
      <option value="Miss">Miss</option> 
     </select> 
    </div> 
<div class="error-msg"> 
    <?php if(isset($errors['name_title'])) { echo '<span style="color: red">'.$errors['name_title'].'</span>'; } ?> 
    </div> 
<div class="form-label">Name</div> 
<div class="form-input"> 
    <input type="text" name="sendername" value="<?PHP if(!empty($errors)) { echo $sender;} ?>" /> 
    <div class="error-msg"> 
     <?php if(isset($errors['sendername'])) { echo '<span style="color: red">'.$errors['sendername'].'</span>'; } ?> 
    </div> 
</div> 
<div class="form-label">I need Airport pick-up</div> 
    <div class="form-input"> 
     <input type="checkbox" name="pick_up_yes" value="yes" />Yes 
     <input type="checkbox" name="pick_up_no" value="no" />No 
<div class="error-msg"> 
<?php if(isset($errors['pick_up_no'])) { echo '<span style="color: red">'.$errors['pick_up_no'].'</span>'; } ?> 
</div> 
</div> 
<div class="form-label">Write us in details if you have any special requirement</div> 
    <div class="form-input">​ 
    <textarea name="special_req" value="<?PHP if(!empty($errors)) { echo $special_req;} ?>"></textarea> 
    </div> 

Je reçois valeur "SenderName" sauvé si la forme présente des erreurs quand je voir à nouveau le formulaire. Comment puis-je obtenir la case à cocher sélectionnée, la liste déroulante et zone de texte enregistré/valeur sélectionnée lorsque le formulaire montre des erreurs?

+0

Est-ce que si certaines valeurs que vous cherchez comment enregistrer les bonnes données à votre base de données sont correctes et d'autres ne sont pas ou Cherchez-vous à résoudre le problème de rapporter à l'utilisateur quels champs sont incorrects ou montrer leurs entrées précédentes et les notifier ceux qui doivent être changés? – tylerlindell

+0

Non et Oui .. En fait ce n'est pas un formulaire DB connecté .. Ce formulaire est envoyé à un email quand il est soumis. et Oui "si certaines valeurs sont correctes et d'autres non ou alors je veux résoudre le problème de rapporter à l'utilisateur quels champs sont incorrects ou montrer leurs entrées précédentes et les notifier ceux qui doivent être changés" –

Répondre

0

Une chose que je ne serais probablement faire est de changer

if($name_title === none){ 

Pour

if($name_title == "none"){ 

Ou tout simplement en faire une valeur à blanc et d'utiliser des citations vides à la place.

également

if (($pick_up_yes != yes) && ($pick_up_no != no)){ 

Peut-être

if ($pick_up_yes == ""){ 

Si vous définissez vos valeurs à 1 pour oui et 0 pour non

Pour accomplir ce que vous cherchez, par exemple

<?php 
    if($_POST['inputName'] == 'myInputValue'){ 
     $checked = 'checked'; 
    } 
    else{ 
     $checked = ''; 
    } 

    if($_POST['inputName2'] == 'myInputValue2'){ 
     $checked2 = 'checked'; 
    } 
    else{ 
     $checked2 = ''; 
    } 

    if($_POST['inputName3'] == 'myInputValue3'){ 
     $selected3 = 'selected'; 
     $selected4 = ''; 
    } 
    else if($_POST['inputName3'] == 'myInputValue4'){ 
     $selected4 = 'selected'; 
     $selected3 = ''; 
    } 
    else{ 
     $selected = ''; 
    } 
?> 

<input type='checkbox' <?= $checked;?> name='inputName' value='myInputValue'/> 

<input type='checkbox' <?= $checked2;?> name='inputName2' value='myInputValue2'/> 

<select name='inputName3'> 
    <option <?= $selected3; ?> value='myInputValue3'> pick </option> 
    <option <?= $selected4; ?> value='myInputValue4'> me </option> 
</select> 

<textarea name='inputName4'> <?= $special_req; ?> </textarea> 

La touche i s savoir où vos valeurs sont entrées dans une entrée et faisant écho à la valeur qui a déjà été transmis via votre formulaire :-)

+0

Merci pour cela code optimisé .. mais ce n'est pas la réponse à la question –

+0

vrai, mais en simplifiant le code est le premier pas à comprendre où il y a des problèmes amenant à ne pas sauver – tylerlindell

Questions connexes