2012-04-12 18 views
2

好吧,我非常喜歡MySQL和PHP,但可以在這裏使用一些幫助。大視野:充滿可編輯字段的大頁面(我使用Jeditable,一種就地編輯插件),它將值存儲到MySQL數據庫的同一行中的不同字段。Jeditable,PHP + 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']; 
    ?> 

任何幫助都將是非常,非常非常讚賞(並儘量不要勞嗯!)

+0

這裏的東西看起來很不對勁,標題('h2','h3')從來都不是表單字段。另外,你可以將3'$(document).ready'塊組合成一個。 – 2012-04-12 04:23:55

回答

4

你需要做的是將每個可編輯的數據庫寫入自己的函數 - 因此你可以針對單個字段。

所以,你的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,但是這應該讓你開始。

0

好吧,我有點困惑。你的問題是你試圖瞄準某些領域,但你不能?如果是這樣,請確保有一個指定爲主鍵的字段,並使用該字段指定要更新字段的行。如果您不針對包含精確值的特定行進行匹配,那麼當您在表格中有多個表格時,我無法看到您將如何更改正確的記錄。

其次,你是如何處理所有這些領域?我希望他們不只是每次保存表單代碼時都會生成。我這樣說是因爲除非你有一個非常好的命名約定設置,否則以後要保存在表中的數據將是一場噩夢。換句話說,花一些時間清楚地標記你的領域(user_name,user_email等等),而不是field01,field02等。另外請注意,如果代碼以某種方式創建一個基於提交/提交的字段的新字段,還有一些其他的東西需要注意。一個人是否可以在HTML中創建一個包含一千個表單字段的頁面,並提交該表單和數據庫嘗試爲所有這些字段創建一個字段?如果你有某種現場驗證系統(有一些有限的限制),我建議不要依靠你沒有理解的代碼來自動建立/管理你的數據庫信息。只需製作您需要的字段並對其進行智能命名即可。

第三,爲什麼不用手工編寫PHP和MySQL的東西?這不僅可以幫助你學習如何在這兩方面更好地編寫代碼,它也聽起來像可編輯的東西是浪費時間,如果它不像你想要的那樣工作,只需要很少的調整。你所描述的並不難 - 如果你能夠幫助它,就不要使用JQuery(它是新JS人的柺杖)。

希望這有助於/回答你的問題。