簡體   English   中英

提交表單后值未保存

[英]Value not saving after form is submitted

我創建了一個包含兩列的 mysql 表。 一個是ID,另一個是標題。 我有一個運行UPDATE代碼的文本區域,每當有人提交表單時,它就會在標題下的數據庫列中更新。 這很好用,但我想在我的文本區域中顯示最后輸入的提交。 我的代碼顯示了最后輸入的值,但是當我重置頁面時,它全部變為空白並且不再顯示。 我在數據庫中查看,標題仍然存在,所以我不知道為什么它會從前端消失。

我的頁面:

<?php 

$title = 'Admin Panel - Edit';
include '../config.php';

$heading = mysqli_real_escape_string($link, $_REQUEST['heading']);

$sql = "UPDATE content SET heading='$heading' WHERE id = 1 ";
if(mysqli_query($link, $sql) == false){
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

$value=mysqli_query($link, "SELECT heading FROM content WHERE id = 1");
$currentText = mysqli_fetch_row($value);

?>

<form action="edit.php">
    <?php echo $currentText[0]; ?>
    <input type="text" name="heading" id="heading" value='<?php echo $currentText[0]; ?>' />
    <input type="submit" value="Submit" name="submit" />
</form>

因此,例如,如果我輸入 Aleksa,在提交后會得到 url ,例如edit.php?heading=Aleksa&submit=Submit 然后當我刪除 url 只是為了edit.php時,該值丟失了。

您可以在這里測試頁面: https://www.easybewussterschaffen.com/admin/edit.php

正在發生這種情況,因為它總是在您刷新頁面時嘗試插入標題。 您應該檢查請求是GET還是請求POST ,並且只有在他們提交表單時才插入它。

更新您的表單方法,將其指定為POST ,並專門檢查方法或檢查$_POST['submit']的存在,如下所示:

<?php 

$title = 'Admin Panel - Edit';
include '../config.php';

// Use one of the 2 if statements:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Trying to insert a new heading
if (isset($_POST['submit'])) { // Alternative

    $heading = mysqli_real_escape_string($link, $_REQUEST['heading']);

    $sql = "UPDATE content SET heading='$heading' WHERE id = 1 ";
    if(mysqli_query($link, $sql) == false){
         echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

$value=mysqli_query($link, "SELECT heading FROM content WHERE id = 1");
$currentText = mysqli_fetch_row($value);

?>

<form action="edit.php" method="POST">
    <?php echo $currentText[0]; ?>
    <input type="text" name="heading" id="heading" value='<?php echo $currentText[0]; ?>' />
    <input type="submit" value="Submit" name="submit" />
</form>

或者,如果您仍希望發出 GET 請求,則應檢查以確保已設置標題:

<?php 

$title = 'Admin Panel - Edit';
include '../config.php';

if (isset($_GET['submit'])) {

    $heading = mysqli_real_escape_string($link, $_GET['heading']);

    $sql = "UPDATE content SET heading='$heading' WHERE id = 1 ";
    if(mysqli_query($link, $sql) == false){
         echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

$value=mysqli_query($link, "SELECT heading FROM content WHERE id = 1");
$currentText = mysqli_fetch_row($value);

?>

<form action="edit.php" method="GET">
    <?php echo $currentText[0]; ?>
    <input type="text" name="heading" id="heading" value='<?php echo $currentText[0]; ?>' />
    <input type="submit" value="Submit" name="submit" />
</form>

我就是這樣做的,這樣好嗎? 它的工作

    <?php
$sql = "SELECT * FROM content";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo '';
        while($row = mysqli_fetch_array($result)){
                echo $row['heading'];
        }
        // Free result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM