2017-06-16 137 views
-2

我爲我的社交媒體開發評論系統,但即使它是空的,也會將註釋插入到數據庫中。因此,如果註釋字段爲空,我不想發生任何事情,我不想回顯任何消息或提交評論。防止提交輸入字段爲空

這是我的代碼

<?php 
    // Get id of post 
    if(isset($_GET['post_id'])) { 

     $post_id = $_GET['post_id']; 
    } 

    $user_query = mysqli_query($con, "SELECT added_by, user_to FROM posts 
    WHERE id='post_id'"); 
    $row = mysqli_fetch_array($user_query); 

    $posted_to = $row['added_by']; 
    $user_to = $row['user_to']; 

    if(isset($_POST['postComment' . $post_id])) { 

     $post_body = $_POST['post_body']; 
     $post_body = mysqli_escape_string($con, $post_body); 
     $date_time_now = date("Y-m-d H:i:s"); 
    $insert_post = mysqli_query($con, "INSERT INTO comments VALUES ('', 
    '$post_body', '$userLoggedIn', '$posted_to', '$date_time_now', 'no', 
    '$post_id')"); 

    if($posted_to != $userLoggedIn) { 

     $notification = new Notification($con, $userLoggedIn); 
     $notification->insertNotification($post_id, $posted_to, "comment"); 
    } 

    if($user_to != 'none' && $user_to != $userLoggedIn) { 

     $notification = new Notification($con, $userLoggedIn); 
     $notification->insertNotification($post_id, $user_to, 
     "profile_comment"); 
    } 

    $get_commenters = mysqli_query($con, "SELECT * FROM comments WHERE 
    post_id='$post_id'"); 
    $notified_users = array(); 
    while($row = mysqli_fetch_array($get_commenters)) { 

     if($row['posted_by'] != $posted_to && $row['posted_by'] != $user_to 
      && $row['posted_by'] != $userLoggedIn && 
     !in_array($row['posted_by'], $notified_users)) { 

      $notification = new Notification($con, $userLoggedIn); 
      $notification->insertNotification($post_id, $row['posted_by'], 
      "comment_non_owner"); 

      array_push($notified_users, $row['posted_by']); 

     } 

    } 



    echo "<p>Comment Posted! </p>"; 
    } 

    ?> 

    <form action="comment_frame.php?post_id=<?php echo $post_id; ?>" 
    id="comment_form" name="postComment<?php echo $post_id; ?>" 
    method="POST"> 
    <textarea name="post_body" placeholder="Add a comment"></textarea> 
    <input type="submit" name="postComment<?php echo $post_id; ?>" 
    value="Comment"> 

</form> 

<!-- Load Comments --> 
<?php 
$get_comments = mysqli_query($con, "SELECT * FROM comments WHERE 
post_id='$post_id' ORDER BY id ASC"); 
$count = mysqli_num_rows($get_comments); 

if ($count != 0) { 

    while($comment = mysqli_fetch_array($get_comments)) { 

     $comment_body = $comment['post_body']; 
     $posted_to = $comment['posted_to']; 
     $posted_by = $comment['posted_by']; 
     $date_added = $comment['date_added']; 
     $removed = $comment['removed']; 

     //Timeframe 

     $date_time_now = date("Y-m-d H:i:s"); 
     $start_date = new DateTime($date_added); // Time of Post 
     $end_date = new DateTime($date_time_now); // Current time 
     $interval = $start_date->diff($end_date); // Difference between 
     dates 
     if($interval->y >= 1) { 
      if($interval == 1) 
       $time_message = $interval->y . " year ago"; // 1 year ago 
      else 
       $time_message = $interval->y . " years ago"; // 1+ year ago 
     } 
     else if ($interval-> m >= 1) { 

      if($interval->d == 0) { 
       $days = " ago"; 
      } 
      else if($interval->d == 1) { 
       $days = $interval->d . " days ago"; 
      } 
      else { 
       $days = $interval->d . " days ago"; 
      } 

      if($interval->m == 1) { 
       $time_message = $interval->m . " month". $days; 
      } 
      else { 

       $time_message = $interval->m . " months". $days; 
      } 
     } 
     else if($interval->d >=1) { 
      if($interval->d == 1) { 
       $time_message = "Yesterday"; 
      } 
      else { 
       $time_message = $interval->d . " days ago"; 
      } 
     } 
     else if($interval->h >= 1) { 
      if($interval->h == 1) { 
       $time_message = $interval->h . " hour ago"; 
      } 
      else { 
       $time_message = $interval->h . " hours ago"; 
      } 
     } 
     else if($interval->i >= 1) { 
      if($interval->i == 1) { 
       $time_message = $interval->i . " minute ago"; 
      } 
      else { 
       $time_message = $interval->i . " minutes ago"; 
      } 
     } 
     else { 
      if($interval->s < 30) { 
       $time_message = "Just now"; 
      } 
      else { 
       $time_message = $interval->s . " seconds ago"; 
      } 
     } 

     $user_obj = new User($con, $posted_by); 
     ?> 
     <div class="comment_section"> 
     <a href="<?php echo $posted_by?>" target="_parent"><img src="<?php 
     echo $user_obj->getProfilePic(); ?>" title="<?php echo $posted_by; 
     ?>" style="float:left;" height="30"></a> 
     <a href="<?php echo $posted_by?>" target="_parent"> <b><?php echo 
     $user_obj->getFirstAndLastName(); ?> </b> </a> 
     &nbsp;&nbsp;&nbsp;&nbsp; <?php echo $time_message . "<br>" . 
     $comment_body; ?> 
     <hr> 
     </div> 
     <?php 

    } 
    } 

    else { 

    echo "<center><br><br>No comments to show</center>"; 
    } 

    ?> 



    </body> 
    </html> 
+2

的可能的複製[如何防止提交HTML表單的輸入字段值是否爲空(https://stackoverflow.com/a/8029581/6521116) –

+0

只是檢查評論在插入到數據庫之前,字段值爲空或不是。如果它在那裏,那麼插入,否則什麼也不做。 –

+0

考慮到您已經在整個代碼中進行條件檢查,因爲它只是需要編寫一個if語句來檢查輸入是否爲空。如果沒有,繼續。如果是這樣,請不要繼續。實際上,我很驚訝你寫了這段代碼,如果輸入是空的,還是不得不詢問是否讓表單提交。 –

回答

0

這個屬性添加到正確的輸入字段:<input required: required;>應該修復它爲你:-)

看到http://w3c.github.io/html/sec-forms.html#the-required-attribute包括用於演示的更多信息

+0

我已經評論過這一點,仍然,你應該在清理檢索到的數據後在服務器端處理此檢查... –

+0

啊廢話,對不起,我誤解你的意思xD – D3nj1

+0

我會做同樣的事情,不要混淆任何人:D – D3nj1

0

下面。第一個表單將在提交時顯示一條錯誤消息 - 屬性required - (您可能不需要),第二個表單不會提供任何反饋 - 屬性required但是表單爲novalidate

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <textarea required onsubmit="return false;"></textarea><br> 
 
    <input type="submit" value="submit"> 
 
</form><br><br> 
 

 
<form novalidate onsubmit="return false;"> 
 
    <textarea required></textarea><br> 
 
    <input type="submit" value="submit"> 
 
</form>

+0

正如對其他答案評論的那樣,這個屬性本身是不夠的,可能在每個地方都不能理解。你應該將資源鏈接到你的答案,以使其值得;) –