[英]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.