2015-09-16 42 views
1

我正在處理聯繫表單,如果某些字段留空,將會吐出一些錯誤,如果表單提交成功,用戶將看到一條成功的消息。在提交php表單之前顯示的css類

目前,我有一個錯誤類和一個成功的類 - 這些都是如下:

.errors { 
    font-family: 'Open Sans', sans-serif; 
    font-size: 13px; 
    padding: 7px 5px; 
    color: #A94442; 
    font-weight: 400; 
    width: 100%; 
    border-radius: 2px; 
    border: 1px solid #EBCCD1; 
    background-color: #F2DEDE; 
    margin: 0 0 10px 0; 
} 

.success { 
    font-family: 'Open Sans', sans-serif; 
    font-size: 13px; 
    padding: 7px 5px; 
    color: #3C763D; 
    font-weight: 400; 
    width: 100%; 
    border-radius: 2px; 
    border: 1px solid #D6E9C6; 
    background-color: #DFF0D8; 
    margin: 0 0 10px 0; 
} 

至於PHP驗證推移,錯誤/成功消息是否按預期工作,但這個問題我當用戶最初進入聯繫頁面時,這些類的背景顏色和邊框顯示爲空白。

您可以通過查看頁面來查看頁面Contact Page,您將立即看到問題。

請你能給我一些建議/建議如何隱藏這些,直到他們需要?我可以從類中刪除背景顏色和邊框,只是有文本,但理想情況下,我想保持原樣。

這裏是去與此相應的PHP和也HTML表單

$errors = array(); 
$success = ""; 
$name = ""; 
$email = ""; 
$website = ""; 
$budget = ""; 
$message = ""; 

if (isset($_POST['contact_submit'])) { 

    if (isset($_POST['name'])) { 
     $name = $_POST['name']; 
    } 

    if (isset($_POST['email'])) { 
     $email = $_POST['email']; 
    } 

    if (isset($_POST['website'])) { 
     $website = $_POST['website']; 
    } 

    if (isset($_POST['budget'])) { 
     $budget = $_POST['budget']; 
    }  

    if (isset($_POST['message'])) { 
     $message = $_POST['message']; 
    } 

    if (empty($name)) { 
     $errors[] = "Please enter your name."; 
    } 

    if (empty($email)) { 
     $errors[] = "Please enter a valid email address."; 
    } 

    elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $errors[] = "Please enter a valid email address."; 
    } 

    if (empty($message)) { 
     $errors[] = "Don't forget your message!"; 
    }  

    if (count($errors) == 0) { 

     $headers = "From: email here...\r\n"; 
     $headers .= "Content-type: text/html\r\n"; 
     $myaddress = "email here..."; 
     $subject = "Website Enquiry"; 
     $emailmessage = "<b><u>Name:</u></b><br>$name<br><br><b><u>Email:<br></u></b>$email<br><br><b><u>Message:<br></u></b> $message"; 

     if (!mail($myaddress, $subject, $emailmessage, $headers)) { 
      $errors[] = "A problem occurred sending your email."; 
     } 

     else { 
      $success = "Your message was sent successfully!"; 
      $name = ""; 
      $email = ""; 
      $message = ""; 
     } 

    } 

} 


       <form method="POST" action=""> 
        <div class="row"> 
         <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
          <?php echo "<div class=\"errors\">" . implode("<br>", $errors) . "</div>"; ?> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
          <?php echo "<div class=\"success\">" . $success . "</div>"; ?> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> 
          <input type="text" name="name" placeholder="Your Name &#42;" value="<?php echo htmlentities($name); ?>"> 
         </div> 
         <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> 
          <input type="text" name="email" placeholder="Your Email &#42;" value="<?php echo htmlentities($email); ?>"> 
         </div>       
        </div> 
        <div class="row"> 
         <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> 
          <input type="text" name="website" placeholder="Website (optional)" value="<?php echo htmlentities($website); ?>"> 
         </div> 
         <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> 
          <input type="text" name="budget" placeholder="Budget (optional)" value="<?php echo htmlentities($budget); ?>"> 
         </div>       
        </div>  
        <div class="row"> 
         <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
          <textarea type="text" name="message" placeholder="Your Message &#42;"><?php echo htmlentities($message); ?></textarea> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
          <button type="submit" name="contact_submit" class="btn-one">Send</button> 
         </div> 
        </div> 
       </form> 

在此先感謝!

+0

請分享你的PHP代碼 –

+0

你應該提供呈現頁的相關部分的代碼。 –

+0

對不起,現在增加了php代碼... –

回答

1

你必須做一些這樣的事

<?php 

    if(!empty($errors)) 
    { 
     ?> 
     <div class="row"> 
      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
       <?php echo "<div class=\"errors\">" . implode("<br>", $errors) . "</div>"; ?> 
      </div> 
     </div> 
    <?php 
    } 
    else 
    { 

    } 

    if(!empty($success)) 
    { 
     ?> 
     <div class="row"> 
      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
       <?php echo "<div class=\"success\">" . $success . "</div>"; ?> 
      </div> 
     </div> 
    <?php 
    } 
    else 
    { 

    } 

?> 
+0

感謝你們,這就是我想要的,不知道爲什麼我沒有想到這樣的東西:) –

0

這將是有益的,如果你可以分享你的PHP代碼,但沒有,我猜你正在做的事情,如:

<div class="errors"> 
    <?php 
    foreach ($errors as $error) { 
     echo $error . '<br>'; 
    } 
    ?> 
</div> 

查看您的網站的HTML時,<div class="errors"></div> HTML已經存在。

您應該將<div>isset()語句包裝起來,因此僅在需要顯示內容時輸出HTML。

例如:要做到這一點

<?php if (isset($errors) && !empty($errors)): ?> 
    <div class="errors"> 
     <?php 
     foreach ($errors as $error) { 
      echo $error . '<br>'; 
     } 
     ?> 
    </div> 
<?php endif; ?> 
0

最簡單的方法:

// your php code goes here 
<?php 

    $http_post = ('POST' == $_SERVER['REQUEST_METHOD']); 
    if($http_post) 
    { 
     if(empty($error)) 
      $class = 'error'; 
     else 
      $class = 'success'; 
    } 

?> 

    // your html code 


<div class="<?php echo $class?>"></div>