[英]Have a Insert and a Edit button in the same form using PHP and SQL
我已經研究了幾個小時(在這里和谷歌搜索),但我發現沒有任何幫助我讓它工作。
我正在嘗試制作一種表格,並使用按鈕在同一表格中Insert INTO
和UPDATE $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.