簡體   English   中英

使用 PHP 和 SQL 以相同的形式有一個插入和一個編輯按鈕

[英]Have a Insert and a Edit button in the same form using PHP and SQL

我已經研究了幾個小時(在這里和谷歌搜索),但我發現沒有任何幫助我讓它工作。

我正在嘗試制作一種表格,並使用按鈕在同一表格中Insert INTOUPDATE $table SET函數。

但是無論我嘗試什么, Update都不會從表單中復制數據。 INSERT INTO作品。 但是當我嘗試編輯表單時,沒有復制任何數據。

HTML:

<form id="contact-form" method="post" action="cms_data.php" role="form">
    <div class="col-sm-12">
        <h2>id</h2>
        <input name="id" type="text" placeholder="<?php echo $id;?>" value="1">
    </div>
    <div class="col-sm-12">
        <h2>Omschrijving</h2>
        <textarea name="omschrijving" type="text" style="height:220px;width:100%;resize:none;"><?php echo $omschrijving;?></textarea>
    </div>
    <div class="col-sm-12">
        <h2>Datum</h2>
        <input name="datum" type="text" value="<?php echo $datum;?>">
    </div>
    <div class="col-sm-12">
        <h2>Tijd</h2>
        <input name="tijd" type="text" value="<?php echo $tijd;?>">
    </div>
    <div class="col-sm-12">
        <h2>Locatie</h2>
        <input name="locatie" type="text" value="<?php echo $locatie;?>">
    </div>
    <div class="col-sm-12">
        <h2>Dresscode</h2>
        <input name="dresscode" type="text" value="<?php echo $dresscode;?>">
    </div>
    <div class="col-sm-12 text-right">
        <input type="submit" class="btn btn-success btn-send" value="Versturen" id="sent" <?php // echo $_SESSION['disabled']; ?>>
        <a href="update-cms.php">Update </a>
    </div>
</form>

CMS_DATA.php

<?php session_start();?>
<?php
    $servername = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    //echo '<div style="width:100%;background:green;color:#FFF;font-size:2rem;text-align:center;">Connected to '. $dbname. '</div>';

    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

$id = $_POST['id'];
$omschrijving = $_POST["omschrijving"];
$datum = $_POST["datum"];
$item = $_POST["tijd"];
$locatie = $_POST["locatie"];
$dresscode = $_POST["dresscode"];

$quote = iconv("UTF-8", "WINDOWS-1252//TRANSLIT");
$date = date('Y-m-d');
date_default_timezone_set("Europe/Amsterdam");
$time = date("h:i:sa");
$sql = "INSERT INTO $table (ID, Omschrijving, Datum, Tijd, Locatie, Dresscode )
                        VALUES ('" .$id."','" .$omschrijving."','".$datum."',' ".$item."','".$locatie."','".$dresscode."')";

if ($conn->query($sql) === TRUE) {
    echo "";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

更新-CMS.php

<?php session_start();?>
<?php
    $servername = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    //echo '<div style="width:100%;background:green;color:#FFF;font-size:2rem;text-align:center;">Connected to '. $dbname. '</div>';

    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

$id = $_POST['id'];
$omschrijving = $_POST["omschrijving"];
$datum = $_POST["datum"];
$item = $_POST["tijd"];
$locatie = $_POST["locatie"];
$dresscode = $_POST["dresscode"];

$quote = iconv("UTF-8", "WINDOWS-1252//TRANSLIT");
$date = date('Y-m-d');
date_default_timezone_set("Europe/Amsterdam");
$time = date("h:i:sa");
$sql = "UPDATE $table SET
    Omschrijving = '$omschrijving', Datum = '$datum', Tijd = '$item', Locatie = '$locatie', Dresscode = '$dresscode' WHERE ID = '1'";

if ($conn->query($sql) === TRUE) {
    echo "Done";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

就像我說的, INSERT INTO工作正常。 但是在使用更新時不會復制任何數據(值)。 我只是用空行覆蓋ID 1 ......我希望有人可以幫助我......提前致謝。

您已經在表單action="cms_data.php"上定義了操作,因此負責提交該表單的按鈕可以正常工作,但另一方面,您已經定義了另一個按鈕(錨標記),它只有 href(因此指向另一個頁面),所以如果你點擊它,你不會傳遞任何參數。

我的建議是,正如我在您的問題下方的評論中提到的,使用兩個按鈕,都帶有提交屬性,然后通過 JavaScript 處理單擊它們。

當您捕獲提交時,您可以動態更改表單上的操作,因此您的數據將被傳遞到所需的腳本。

處理表單中的多個按鈕:在 Javascript 中使用多個提交按鈕處理表單提交

操作表單的動作屬性: 如何使用 JavaScript 更改表單動作

另一個建議是您在查詢中使用准備好的語句,這樣您就不會受到 SQL 注入的影響(從評論部分,我看到您只會在本地使用它,但這是一個很好的做法)。

使用 Mysqli 准備好的語句: https ://stackoverflow.com/a/24989090/5018750

Echo 僅在屏幕上的相應文本框中打印值,而不會將該值分配給您的實際字段。

相反,您可以做的是在聯系表單的開頭啟動會話並將這些字段存儲在會話變量中。

當用戶選擇 UPDATE 選項時,他將被重定向到 UPDATE-CMS.php 頁面。 在 UPDATE-CMS.php 中,您可以檢索存儲的會話變量並將它們分配給您的實際變量。 通過這種方式,您可以繼承舊的和新的價值觀。

錨點只是鏈接頁面它不會傳遞數據

您正在嘗試以一種形式提交和更新按鈕

解決方案:

在 html5 按鈕中有formaction屬性。 formaction指定要傳輸的頁面數據。這樣不同的按鈕可以有不同的動作頁面

<form id="contact-form" method="post" action="cms_data.php" role="form">
    <div class="col-sm-12">
        <h2>id</h2>
        <input name="id" type="text" placeholder="<?php echo $id;?>" value="1">
    </div>
    <div class="col-sm-12">
        <h2>Omschrijving</h2>
        <textarea name="omschrijving" type="text" style="height:220px;width:100%;resize:none;"><?php echo $omschrijving;?></textarea>
    </div>
    <div class="col-sm-12">
        <h2>Datum</h2>
        <input name="datum" type="text" value="<?php echo $datum;?>">
    </div>
    <div class="col-sm-12">
        <h2>Tijd</h2>
        <input name="tijd" type="text" value="<?php echo $tijd;?>">
    </div>
    <div class="col-sm-12">
        <h2>Locatie</h2>
        <input name="locatie" type="text" value="<?php echo $locatie;?>">
    </div>
    <div class="col-sm-12">
        <h2>Dresscode</h2>
        <input name="dresscode" type="text" value="<?php echo $dresscode;?>">
    </div>
    <div class="col-sm-12 text-right">
        <buttin formaction="CMS-DATA.php" type="submit" class="btn btn-success btn-send" value="Versturen" id="sent" <?php // echo $_SESSION['disabled']; ?>>
        <button formaction="UPDATE-CMS.php" >Update </button>
    </div>
</form>

暫無
暫無

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

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