[英]Jeditable, PHP + MySQL
好的,我是MySQL和PHP的新手,但是可以在這里使用一些幫助。
宏偉的願景:一個充滿可編輯字段的大頁面(我使用的是Jeditable,一個就地編輯的jquery插件),將值存儲到MySQL數據庫同一行中的不同字段。
我完全迷失了如何正確地將值發布到MySQL數據庫的不同字段。 下面是我所擁有的; 它源自Jeditable提供的示例。 我可以在字段中輸入數據,但是會保存字段的ID(而不是數據),並將其附加到數據庫的多個列中,而不是一個正確的列中。
因此,簡而言之-如何將您在此處看到的內容映射到我的MySQL數據庫中的不同位置(例如:一個具有客戶名稱值,大小值,初始銷售價值的MRR的訂單項/記錄?)
這是我的HTML-
<!-- JQuery to extract form data... -->
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#paragraph_1').editable('save.php');
});
$(document).ready(function() {
$('#custsize').editable('save.php');
});
$(document).ready(function() {
$('#mrratsale').editable('save.php');
});
</script>
<!-- my form fields... -->
<h2 id="paragraph_1" name="paragraph_1"></h2>
<h3 id="custsize" name="custsize"></h3>
<h3 id="mrratsale" name="mrratsale"></h3>
...這是我的save.php文件...
<?php
require_once 'config.php';
$query=sprintf("INSERT INTO customerdata (ListItemID, CustName, CustSize, MrrAtSale)
VALUES (%d, '%s', '%s', '%s')",
$id, $_POST['id'], $_POST['id'], $_POST['id'], stripslashes($_POST['value']));
$dbh->exec($query);
/* What is echoed back will be shown in webpage after editing.*/
print $_POST['value'];
?>
任何幫助都將是非常非常感謝的(並且不要笑!)
您要做的就是將每個可編輯的數據庫寫入其自己的函數-因此您可以針對各個字段。
因此,您的html文件應該閱讀(我還清理了您的JS):
<!-- JQuery to extract form data... -->
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('.paragraph_1').editable('save.php?type=paragraph');
$('.custsize').editable('save.php?type=custsize');
$('.mrratsale').editable('save.php?type=mrratsale');
});
</script>
<!-- my form fields... -->
<h2 id="1" class="paragraph_1"></h2>
<h3 id="1" class="custsize"></h3>
<h3 id="1" class="mrratsale"></h3>
注意如何將查詢字符串添加到save.php文件。 您還應該將元素的ID更改為記錄中的字段,以便可以更新正確的記錄。
php文件:
<?php
require_once 'config.php';
$type = (isset($_GET['type'])) ? $_GET['type'] : "";
$value = (isset($_POST['value'])) ? $_POST['value'] : ""; //value posted
$id = (isset($_POST['id'])) ? $_POST['id'] : ""; //id of the element
if($type == "paragraph") {
mysql_query("UPDATE customerdata SET paragraph='$value' WHERE id='$id'");
} elseif ($type == "custsize") {
mysql_query("UPDATE customerdata SET CustSize='$value' WHERE id='$id'");
} elseif ($type == "mrratsale") {
mysql_query("UPDATE customerdata SET MrRatSale='$value' WHERE id='$id'");
};
print $value;
?>
您應該添加一些驗證並清理數據,然后再將其放入數據庫中,但這應該可使jEditable正常工作。
請注意,您可能應該update
記錄而不是insert
記錄,否則每次編輯數據時都會創建一條新記錄。
您可以看到ID用於更新正確的記錄。
我最近還沒有真正使用過jEditable,但這應該可以幫助您入門。
好吧,我有點困惑。 您的問題是您試圖針對某些字段,但是卻不能呢? 如果是這樣,請確保有一個指定為“主鍵”的字段,並使用該字段指定要更新該字段的行。 如果您不針對包含要匹配的精確值的特定行,那么當表中有多個記錄時,我將看不到如何更改正確的記錄。
第二,您如何處理所有這些字段? 我希望每次保存表單代碼時,它們不是即時生成的。 我之所以這樣說,是因為除非您有一個很好的命名約定設置,否則以后整理出該表中保存的數據將是一場噩夢。 換句話說,花一些時間清楚地標記您的字段(user_name,user_email等,而不是field01,field02等)。還要注意,如果代碼以某種方式基於存在/提交的字段創建一個新字段,則會打開還有其他一些要注意的東西。 一個人可以用HTML創建一個包含一千個表單域的頁面,然后提交該表單,然后您的數據庫嘗試為所有表單創建域嗎? 如果您有某種形式的現場驗證系統(有一些有限的限制),我建議您不要再依賴於您沒有/不會理解的代碼來自動地構建/管理數據庫信息。 只需填寫您需要的字段並聰明地命名即可。
第三,為什么不只手工編寫PHP和MySQL的東西呢? 這不僅可以幫助您學習如何在這兩種方法中更好地進行編碼,而且聽起來聽起來像Jeditable一樣,如果它不能像您希望的那樣通過最小的調整而無法工作,那是在浪費時間。 您描述的內容並非難事-並且如果可以幫助的話就不要使用JQuery(這對JS新手來說是一個拐杖)。
希望其中一些可以幫助/回答您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.