Ich entwickle ein Kommentar-System für meine Social Media, aber Kommentare werden in die Datenbank eingefügt, auch wenn es leer ist.So will ich nichts passieren, wenn Kommentarfeld leer ist, möchte ich nicht echo jede Nachricht oder die Übermittlung des Kommentars.Senden verhindern, wenn das Eingabefeld leer ist
Dies ist mein Code
<?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>
<?php echo $time_message . "<br>" .
$comment_body; ?>
<hr>
</div>
<?php
}
}
else {
echo "<center><br><br>No comments to show</center>";
}
?>
</body>
</html>
Mögliche Duplikat von [Wie verhindern Absenden des Eingabefeldes Wert des HTML-Formular, wenn es leer] (https://stackoverflow.com/a/8029581/6521116) –
nur den Kommentar überprüfen Feldwert ist leer oder nicht vor dem Einfügen in DB. Wenn es da ist, dann füge sonst nichts ein. –
In Anbetracht der Tatsache, dass Sie in Ihrem Code bereits bedingte Prüfungen vornehmen, wie es ist, müssen Sie einfach eine if -Anweisung schreiben, die prüft, ob diese Eingabe leer ist. Wenn nicht, fahren Sie fort. Wenn ja, nicht weitermachen. Ehrlich gesagt bin ich erstaunt, dass Sie diesen Code geschrieben haben und immer noch fragen mussten, ob das Formular nicht gesendet werden soll, wenn die Eingabe leer ist. –