首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jeditable,PHP + MySQL

Jeditable,PHP + MySQL
EN

Stack Overflow用户
提问于 2012-04-12 12:16:51
回答 2查看 4.7K关注 0票数 2

好吧,我是一个可怕的MySQL和PHP新手,但是这里需要一些帮助。

宏伟的愿景:一个充满可编辑字段的大页面(我使用的是Jeditable,一个就地编辑的jquery插件),它将值存储到MySQL数据库的同一行中的不同字段。

不过,我完全不知道如何正确地将值发布到MySQL数据库的不同字段。下面是我所拥有的;它是从Jeditable提供的示例派生出来的。我可以在字段中输入数据,但它会保存字段的ID,而不是数据,并将其附加到我的数据库的多个列中,而不是一个正确的列。

因此,简而言之,我将如何将您在此处看到的内容映射到我的MySQL数据库中的不同位置(例如:一行项目/记录具有客户名称值、尺寸值、初始销售值的MRR等?)

这是我的HTML-

代码语言:javascript
复制
<!-- 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文件...

代码语言:javascript
复制
   <?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']; 
     ?>

任何帮助都会非常,非常,非常感谢(尽量不要笑!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-12 13:00:20

你需要做的就是将每个可编辑的数据库写入到它自己的函数中--这样你就可以针对各个字段了。

所以你的html文件应该是这样的(我也清理了你的JS):

代码语言:javascript
复制
<!-- 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文件:

代码语言:javascript
复制
<?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,但这应该可以让你开始使用它。

票数 5
EN

Stack Overflow用户

发布于 2012-04-12 12:29:14

好吧,我有点困惑。你的问题是,你试图针对某些领域,但你不能?如果是,请确保有一个字段被指定为主键,并使用该字段指定要更新该字段的行。如果您没有针对包含要匹配的精确值的特定行,那么当表中有多个记录时,我看不出您将如何更改正确的记录。

其次,您是如何处理所有这些字段的?我希望它们不是每次保存表单代码时都在运行中生成的。我之所以这样说,是因为除非您有一个非常好的命名约定设置,否则以后要整理保存在该表中的数据将是一场噩梦。换句话说,花一些时间清楚地标记你的字段(user_name、user_email等,而不是field01、field02等)。还要注意的是,如果代码以某种方式根据当前/提交的字段创建了一个新字段,则会打开一堆需要注意的其他内容。一个人能不能用HTML制作一个有一千个表单域的页面,然后提交它,然后你的数据库试着为所有的表单域创建一个域?如果你有某种类型的现场验证系统(有一些有限的限制),我建议你不要再依赖于你没有做/理解的代码来自动地构建/管理你的数据库信息。只需创建所需的字段并智能地命名它们即可。

第三,为什么不直接手工编写PHP和MySQL代码呢?这不仅可以帮助您学习如何在这两个方面更好地编写代码,而且如果Jeditable的工作方式不能像您希望的那样进行最小的调整,那么它听起来也是在浪费时间。您所描述的内容并不难做到--如果可以的话,不要使用JQuery (它是JS新手的一个拐杖)。

希望这能帮助/回答你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10117294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档