我有一個 HTML 文本欄位和一個發布按鈕,您可以單擊該按鈕發布帖子。現在,為了將這篇文章發送到資料庫,我創建了一個名為 post.php 的單獨檔案來處理 PHP 和 MySQL 代碼,為此,我必須將 HTML 元素(表單和按鈕)保留在一個表單中,使用post.php 的一個動作。現在,無論表單是否為空,通過單擊 post 按鈕,它都會重定向到 post.php 頁面,這是我不希望發生的。發生的事情是當我單擊 post 按鈕時,它會重定向到 post.php 頁面。它不應該這樣做。我的發布文本區域在彈出視窗中,當您輸入一些文本并單擊發布時,它應該關閉彈出視窗并顯示該帖子(我稍后會制作),如果您不輸入任何內容,則不應該 t 關閉彈出視窗并顯示我通過給它顯示 flex (我已經使用 js 編碼)制作的錯誤訊息。所以,基本上,如果 textarea 被填充,它不應該重定向到 post.php 頁面,它應該保持在同一頁面上。因此,如果 textarea 為空,它應該顯示我制作的錯誤訊息,并且我已經撰寫了使用 javascript 的邏輯,它不應該重定向到 post.php 頁面,彈出視窗應該保持可見并且應該顯示錯誤訊息。現在,當填充文本并單擊帖子按鈕時,它應該關閉彈出視窗并顯示帖子(稍后我將對其進行編碼),但在任何一種情況下都不應該重定向到 post.php 頁面。這是代碼:它應該保持在同一頁面上。因此,如果 textarea 為空,它應該顯示我制作的錯誤訊息,并且我已經撰寫了使用 javascript 的邏輯,它不應該重定向到 post.php 頁面,彈出視窗應該保持可見并且應該顯示錯誤訊息。現在,當填充文本并單擊帖子按鈕時,它應該關閉彈出視窗并顯示帖子(稍后我將對其進行編碼),但在任何一種情況下都不應該重定向到 post.php 頁面。這是代碼:它應該保持在同一頁面上。因此,如果 textarea 為空,它應該顯示我制作的錯誤訊息,并且我已經撰寫了使用 javascript 的邏輯,它不應該重定向到 post.php 頁面,彈出視窗應該保持可見并且應該顯示錯誤訊息。現在,當填充文本并單擊帖子按鈕時,它應該關閉彈出視窗并顯示帖子(稍后我將對其進行編碼),但在任何一種情況下都不應該重定向到 post.php 頁面。這是代碼:我稍后撰寫代碼),但在任何一種情況下都不應該重定向到 post.php 頁面。這是代碼:我稍后撰寫代碼),但在任何一種情況下都不應該重定向到 post.php 頁面。這是代碼:
HTML (yourposts.php):
<form class="popup-form" action="post.php" method="post">
<textarea id="postContent" name="postContent" rows="8" cols="80" class="postContent" placeholder="What's going on, <?php echo $firstname ?>?"></textarea>
<button id="pos" class="pos">Post</button>
<div id="noText" style="font-family: 'Rajdhani'; margin-top:95px; margin-left:270px; font-size:25px; border:2px solid black; padding-left:7px; padding-top:10px; padding-bottom:7px; width:290px; border-radius:10px; background:orange; visibility:hidden; position:fixed">Your post cannot be empty.</div>
</form>
Javascript(用于顯示錯誤訊息“#noText”,如果 post 為空)(yourposts.php):
var postContent = document.getElementById('postContent');
var postBtn = document.getElementById('pos');
var noText = document.getElementById('noText');
var popup = document.getElementById('popup');
postBtn.addEventListener('click', () => {
if (postContent.value === "") {
noText.style.visibility = 'visible';
popup.style.display = 'flex';
} else {
noText.style.visibility = 'hidden';
popup.style.display = 'none';
}
});
PHP (post.php):
<?php
session_start();
// Making Connection To The Database
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$database = "signup";
$connection = mysqli_connect($dbHost, $dbUser, $dbPass, $database) or die ("Sorry, we could not connect to the database");
// Posting System
if (!empty($_POST['postContent'])) {
$post = $_POST['postContent'];
$firstname = $_SESSION['firstname'];
$lastname = $_SESSION['lastname'];
$postSQL = "INSERT INTO posts (firstname, lastname, body, date_posted) VALUES (?, ?, ?, NOW())";
$stmt = mysqli_prepare($connection, $postSQL);
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $post);
mysqli_stmt_execute($connection, $stmt);
} else {
echo "No post insertion, as field is empty!";
}
if (mysqli_query($connection, $sql)) {
echo "";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
?>
uj5u.com熱心網友回復:
當您action在表單元素中包含一個屬性時,您是在告訴表單將??用戶發帖和重定向到何處。
如果您想停留在同一頁面上,可以洗掉該action屬性。這將告訴瀏覽器發布form data到頁面。要處理資料,您需要post.php在頁面頂部包含。
在yourposts.php頁面頂部的<html>標記之前,插入<?php include 'post.php';?>
您還可以研究使用 AJAX 提交表單。
uj5u.com熱心網友回復:
一種方法是使用“PHP_SELF”方法。因此,如果您有一個包含 php 和 html 的檔案,如下所示:
<form class="popup-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<!--Note the difference in the above line where it changes "action" to PHP_SELF-->
<textarea id="postContent" name="postContent" rows="8" cols="80" class="postContent" placeholder="What's going on, <?php echo $firstname ?>?"></textarea>
<button id="pos" class="pos">Post</button>
<div id="noText" style="font-family: 'Rajdhani'; margin-top:95px; margin-left:270px; font-size:25px; border:2px solid black; padding-left:7px; padding-top:10px; padding-bottom:7px; width:290px; border-radius:10px; background:orange; visibility:hidden; position:fixed">Your post cannot be empty.</div>
</form>
<?php
session_start();
// Making Connection To The Database
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$database = "signup";
$connection = mysqli_connect($dbHost, $dbUser, $dbPass, $database) or die ("Sorry, we could not connect to the database");
// Posting System
if (!empty($_POST['postContent'])) {
$post = $_POST['postContent'];
$firstname = $_SESSION['firstname'];
$lastname = $_SESSION['lastname'];
$postSQL = "INSERT INTO posts (firstname, lastname, body, date_posted) VALUES (?, ?, ?, NOW())";
$stmt = mysqli_prepare($connection, $postSQL);
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $post);
mysqli_stmt_execute($connection, $stmt);
} else {
echo "No post insertion, as field is empty!";
}
if (mysqli_query($connection, $sql)) {
echo "";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
?>
在 PHP 與 HTML 位于同一頁面時,您可以呼叫 PHP_SELF 并且它不會重定向頁面。這個頁面有一些關于其他解決方案的更多細節,盡管我個人認為這是最簡單的。我所做的所有代碼都會阻止頁面重定向,您仍然需要添加您打算關閉彈出視窗和其他所有內容的任何內容。
此外,頂部的文字墻有點難以閱讀。在以后的帖子中,您可能應該嘗試將其與段落分開。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351383.html
標籤:javascript php html
