好吧,我是一个可怕的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>...and这里是我的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'];
?>任何帮助都会非常,非常,非常感谢(尽量不要笑!)
发布于 2012-04-12 13:00:20
你需要做的就是将每个可编辑的数据库写入到它自己的函数中--这样你就可以针对各个字段了。
所以你的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,但这应该可以让你开始使用它。
发布于 2012-04-12 12:29:14
好吧,我有点困惑。你的问题是,你试图针对某些领域,但你不能?如果是,请确保有一个字段被指定为主键,并使用该字段指定要更新该字段的行。如果您没有针对包含要匹配的精确值的特定行,那么当表中有多个记录时,我看不出您将如何更改正确的记录。
其次,您是如何处理所有这些字段的?我希望它们不是每次保存表单代码时都在运行中生成的。我之所以这样说,是因为除非您有一个非常好的命名约定设置,否则以后要整理保存在该表中的数据将是一场噩梦。换句话说,花一些时间清楚地标记你的字段(user_name、user_email等,而不是field01、field02等)。还要注意的是,如果代码以某种方式根据当前/提交的字段创建了一个新字段,则会打开一堆需要注意的其他内容。一个人能不能用HTML制作一个有一千个表单域的页面,然后提交它,然后你的数据库试着为所有的表单域创建一个域?如果你有某种类型的现场验证系统(有一些有限的限制),我建议你不要再依赖于你没有做/理解的代码来自动地构建/管理你的数据库信息。只需创建所需的字段并智能地命名它们即可。
第三,为什么不直接手工编写PHP和MySQL代码呢?这不仅可以帮助您学习如何在这两个方面更好地编写代码,而且如果Jeditable的工作方式不能像您希望的那样进行最小的调整,那么它听起来也是在浪费时间。您所描述的内容并不难做到--如果可以的话,不要使用JQuery (它是JS新手的一个拐杖)。
希望这能帮助/回答你的问题。
https://stackoverflow.com/questions/10117294
复制相似问题