簡體   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