2

好的,我对 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']; 
     ?>

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

4

2 回答 2

5

您要做的是将每个可编辑的数据库写入其自己的功能 - 这样您就可以针对单个字段。

所以你的 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-12T05:00:19.903 回答
0

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

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

第三,为什么不手动编写 PHP 和 MySQL 代码呢?这不仅可以帮助您学习如何在这两种方法中更好地编码,而且听起来 Jeditable 的东西如果不能像您想要的那样工作,只需进行最少的调整,就会浪费时间。你所描述的并不难做——如果你能帮助它,不要使用 JQuery(它是新 JS 人的拐杖)。

希望其中一些可以帮助/回答您的问题。

于 2012-04-12T04:29:13.647 回答