2016-03-19 27 views
0

Bir proje için formumu biraz daha iyi hale getirmeye çalışıyorum. Değiştirmek istediğim iki konu var. Öncelikle, "firstName ;, soyadı" vb. Hatalarını yazdırmak yerine, o kutudaki kenarlık rengini kırmızıya çevirmek istiyorum. (In_array ('firstName', $ error) kullanarak ve tablodaki bir stili yankılanarak kullanmayı denedim ama işe yaramadı. Herhangi bir fikir var mı?PHP Form: hata bulunduğunda tablo verilerini değiştir

İkinci olarak, değeri korumak istiyorum. . form gönderildiğinde, ancak doğrulamak etmezse açılan listenin 'title' benim kod bunu düşündüm, ama şimdi görünür İşte

benim kodudur:.

<?php 

$checkedMale = $_POST['gender'] == 'Male' ? "checked='checked'" :      

''; 
$checkedFemale = $_POST['gender'] != 'Male' ? "checked='checked'" : 

''; 
$firstName = $_POST["firstName"]; 
$surname = $_POST["surname"]; 
$email = $_POST["email"]; 
$address = $_POST["address"]; 
$title =$_POST["title"]; 


if(isset($_POST["gender"])) { 

     $gender = $_POST["gender"]; 

} 

$formValidates = false; 

if(isset($_POST['submit']) && $_POST['submit'] == 'Register') { 

$errors = array(); 

if ($_POST['title'] == 'select') { 

    $errors[] = 'title'; 

} 

if ($_POST['firstName'] == '') { 

    $errors[] = 'firstname'; 

} 

if ($_POST['surname'] == '') { 

    $errors[] = 'surname';   

} 

if ($_POST['email'] == '') { 

    $errors[] = 'email'; 

     } else { 

       if (! filter_var   

($_POST['email'],FILTER_VALIDATE_EMAIL)) { 
         $errors[] = "<p>Please supply a valid e-mail 

address</p>"; 
        } 
       } 

if ($_POST['address'] == '') { 

    $errors[] = 'address';   

} 

if (count($errors)== 0) { 
    $formValidates = true; 
} 

} 

if (! $formValidates) { 
// Displays errors 
if (count($errors) > 0) { 
     echo "\n<ul>"; 
    foreach ($errors as $error){ 
     echo "\n\t<li>$error</li>"; 
    } 
    echo "\n<ul>"; 
} 


?> 

<table> 

     <tr> 
      <th>Title:</th> 
      <td> 
       <select name="title" > 
        <option value="select" <?php echo 

(isset($_POST['operator']) && $_POST['operator'] == 'select') ?     

'selected="selected"' : ''; ?>>Select</option> 
        <option value="mr" <?php echo 

(isset($_POST['operator']) && $_POST['operator'] == 'mr') ? 

'selected="selected"' : ''; ?>>Mr</option> 
        <option value="mrs" <?php echo 

(isset($_POST['operator']) && $_POST['operator'] == 'mrs') ? 

'selected="selected"' : ''; ?>>Mrs</option> 
        <option value="miss" <?php echo 

(isset($_POST['operator']) && $_POST['operator'] == 'miss') ? 

'selected="selected"' : ''; ?>>Miss</option> 
        <option value="mr" <?php echo 

(isset($_POST['operator']) && $_POST['operator'] == 'dr') ? 

'selected="selected"' : ''; ?>>Dr</option>     
       </select> 
      </td> 
     </tr> 

     <tr> 
      <th>First name:</th> 
      <td><input type="text" name="firstName"  

placeholder="First Name..." value="<?php 

if(isset($_POST['firstName'])){echo $_POST['firstName']; } ?>" /> 

</td> 
     </tr> 

     <tr> 
      <th>Surname:</th> 
      <td><input type="text" name="surname" 

placeholder="Surname..." value="<?php if(isset($_POST['surname'])){       

echo $_POST['surname']; } ?>" /></td>         
     </tr> 

     <tr> 
      <th>Email:</th> 
      <td><input type="text" name="email" placeholder="E-mail 


Address..." value="<?php if(isset($_POST['email'])){  
        echo $_POST['email']; } ?>"/></td> 
     </tr> 

     <tr> 
      <th>Address:</th> 
      <td><textarea name="address" placeholder="Postal Address..." value="<?php if(isset($_POST['address'])){       echo $_POST['address']; } ?>"></textarea></td> 
     </tr> 

     <tr> 
      <th>Gender:</th> 
      <td> 
       <input type="radio" name="gender" value="Male"  <?php echo $checkedMale?> >Male<br> 
       <input type="radio" name="gender" value="Female" <?php echo $checkedFemale?> >Female<br> 
      </td> 
     </tr> 

     <tr> 
      <th></th> 
      <td>       
       <input type='checkbox' name='option[]' value='Car' 
       <?php echo in_array('Car', $_POST['option']) ? 'checked' : '' ?>>I have a Car licence<br> 
       <input type='checkbox' name='option[]' value='Motorcycle' 
       <?php echo in_array('Motorcycle', $_POST['option']) ? 'checked' : '' ?>>I have a Motorcycle licence<br> 
       <input type='checkbox' name='option[]' value='Fishing' 
       <?php echo in_array('Fishing', $_POST['option']) ? 'checked' : '' ?>>I have a Fishing licence<br> 
       <input type='checkbox' name='option[]' value='TV' 
       <?php echo in_array('TV', $_POST['option']) ? 'checked' : '' ?>>I have a TV licence<br> 
       <input type='checkbox' name='option[]' value='Dog' 
       <?php echo in_array('Dog', $_POST['option']) ? 'checked' : '' ?>>I have a Dog licence<br> 
      </td> 
     </tr> 

     <tr> 
      <th></th> 
      <td><input type="submit" name="submit" value="Register" /></td> 
     </tr> 

    </table> 

</form> 

<?php } else { 

    ?> 
<table border=1> 
<tr> 
    <td>Title:</td><td><?php echo $title ?></td> 
</tr> 
<tr> 
    <td>First Name:</td><td><?php echo $firstName ?></td> 
</tr> 
<tr> 
    <td>Surname:</td><td><?php echo $surname ?></td> 
</tr> 
<tr> 
    <td>Email:</td><td><?php echo $email ?></td> 
</tr> 
<tr> 
    <td>Address:</td><td><?php echo $address ?></td> 
</tr> 
<tr> 
    <td>Gender:</td><td><?php echo $gender ?></td> 
</tr> 
<tr> 
    <td>Licences:</td><td><?php if(!empty($_POST["option"])) { 

    foreach($_POST["option"] as $checked) { echo $checked." Licence". 
         "<br>";}}?> </td> 
</tr> 
<tr> 
    <td>Registration completed: </td> <td><?php echo date("l d/m/y");     

?> at <?php echo date("h:ia"); ?></td> 
</tr> 
</table> 

<a href='<?php echo $_SERVER['PHP_SELF'] ?>'>BACK</a> 

<?php } ?> 

cevap

1

İlk q uestion: eğer isim ayarlanmadıysa, stilde kırmızı bir sınır belirlemelisiniz. Bu bir örnektir: Diğer bir soruda, kodunuzda neredeyse yanıtınız var demektir. Sadece bu $_POST['operator'] hiçbir şey yapmıyor. $title değişkenine değiştirirseniz, çalışır.

<option value="mr" <?php echo ($title == 'mr') ? 'selected="selected"' : ''; ?>>Mr</option> 

Düzenleme: İlk sorunda ek if deyimleri eklendi;

+0

Başlığı işe yarıyor! Teşekkür ederim. Kodu başka bir komut dosyasından kopyaladım ve değiştirmeyi unuttum. 'FirstName' biri, tam sonra ne olduğumu değil. Sınırı varsayılan olarak kırmızı olarak, yani sayfa yüklendiğinde olduğu gibi boşsa. Yalnızca formun gönderilmesi ve giriş alanının boş bırakılması durumunda kenarlık stilinin değişmesini istiyorum. Bunu nasıl yapacağımı biliyor musun? – Tatws24

+0

Hatam, kullanıcının formu gerçekten gönderip göndermediğini ve "$ _POST ['firstName']' in aslında boş olduğunu kontrol etmeyi unuttum. Deneyin: ' /> ' –

+0

Bu mükemmel çalışır. Sahip olduğum son konu aynı, ancak farklı alanlar. Metin alanı alanıyla (adres) - sadece giriş kutusunda görüntülenen hata mesajını alıyorum. Bunun için nasıl geçeceğimi biliyor musun? Etrafta oynadım ama doğru cevabı bulamıyorum. Ayrıca aşağı açılan kutu için bunu çözemiyorum. Buna nasıl giderim? – Tatws24