繁体   English   中英

可编辑,PHP + MySQL

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM