2012-03-07 21 views
0
id car   make   sales 
1 panamera porsche  100 
2 italia  ferrari  200 
3 volante  astonmartin 300 
4 avantador lamborghini 400 
5 slk   mercedes  500 

所以大家好,我有這個簡單的表在我的數據庫。我將在一個while循環中回顯這張表。使用只有一個查詢來更新數據庫中的列 - 編輯

<ul> 
<?php 
$query = "SELECT * FROM inplace LIMIT 0, 6";  
$result = mysql_query($query) or die ('Query couldn\'t be executed'); 
while ($row = mysql_fetch_assoc($result)) { 
echo '<li class="editable" data-id="'.$row['id'].'" data-col="car"><a href="#">'.$row['car'].'</a></li>'; 
echo '<li class="editable" data-id="'.$row['id'].'" data-col="make"><a href="#">'.$row['make'].'</a></li>'; 
echo '<li class="editable" data-id="'.$row['id'].'" data-col="sales"><a href="#">'.$row['sales'].'</a></li>'; 
} 
?> 
</ul> 

想法是使用jQuery in-place編輯器更新此表。因此,這裏的代碼 -

$(document).ready(function() 
{ 
$(".editable").bind("dblclick", replaceHTML); 
$(".editable2").bind("dblclick", replaceHTML2); 
$(".btnSave, .btnDiscard").live("click", handler); 

function handler() 
{ 
    if ($(this).hasClass("btnSave")) 
     { 
      var str = $(this).siblings("form").serialize(); 
      $.ajax({ 
        type: "POST", 
        async: false, 
        url: "handler.php", 
        data: str, 
      }); 

     } 

} 

function replaceHTML() 

      { 

    var rowId = $(this).parent('li').data('id'); 
    var colName = $(this).parent('li').data('col'); 
    var buff = $(this).html() 
    .replace(/"/g, "&quot;"); 
    $(this).addClass("noPad") 
    .html("<form><input type=\"text\" name=\"" + colName + "\" value=\"" + buff + "\" /> <input type=\"text\" name=\"buffer\" value=\"" + buff + "\" /><input type=\"text\" name=\"id\" value=\"" + rowId + "\" /></form><a href=\"#\" class=\"btnSave\">Save changes</a> <a href=\"#\" class=\"btnDiscard\">Discard changes</a>") 
       .unbind('dblclick', replaceHTML); 


    } 

} 
); 

這是就地編輯代碼我是從互聯網,我只是把它撕碎到基層只是爲了瞭解代碼。 Behrang Saeedzadeh幫我即興「替換HTML」功能。

這裏是在handler.php文件更新查詢 -

<?php 
require("db.php"); 

if (isset($_POST['id']) && isset($_POST['car'])) { 
$id = mysql_real_escape_string($_POST['id']); 
$car = mysql_real_escape_string($_POST['car']); 

$query = "UPDATE inplace SET car ='$car' WHERE id='$id'"; 
$result = mysql_query($query) or die ('Query couldn\'t be executed'); 
if ($result) {echo 1;} 
} 

else if (isset($_POST['id']) && isset($_POST['make'])) { 
$id = mysql_real_escape_string($_POST['id']); 
$make = mysql_real_escape_string($_POST['make']); 

$query = "UPDATE inplace SET make ='$make' WHERE id='$id'"; 
$result = mysql_query($query) or die ('Query couldn\'t be executed'); 
if ($result) {echo 1;} 
} 

else if (isset($_POST['id']) && isset($_POST['sales'])) { 
$id = mysql_real_escape_string($_POST['id']); 
$sales = mysql_real_escape_string($_POST['sales']); 

$query = "UPDATE inplace SET sales ='$sales' WHERE id='$id'"; 
$result = mysql_query($query) or die ('Query couldn\'t be executed'); 
if ($result) {echo 1;} 
} 

?> 
更新查詢

在這裏,我必須寫爲每列不同的查詢。問題是我如何更新所有列只使用一個查詢?

+0

$查詢=「UPDATE就地集銷售= '$銷售',COL2 = '$變量' WHERE ID = '$ ID' 「; – psyklopz 2012-03-07 03:02:50

+0

[只使用一個函數來更新數據庫中表的不同列]可能的重複(http://stackoverflow.com/questions/9460636/using-only-one-function-to-update-different-columns-of- a-table-in-database) – ahsteele 2012-03-15 16:40:47

回答

1
if(isset($_POST['id']) { 
    $id = mysql_real_escape_string($_POST['id']); 
    $arr_check = array("car", "make", "sales"); 
    $result = array(); 
    foreach($arr_check as $check) { 
     if(isset($_POST[$check])) 
     $result[] = $check . '="' . mysql_real_escape_string($_POST[$check]) . '"'; 
    } 

    $result = implode(", ", result); 

    if($result != '') { 


     $query = "UPDATE inplace SET {$result} WHERE id='{$id}'"; 
     $result = mysql_query($query) or die ('Query couldn\'t be executed'); 
     if ($result) echo 1; 

    } 

} 

應該或多或少做

+1

Dimitri Adamou-非常感謝大家!有效!! – generalsagar 2012-03-07 03:57:21

+0

@generalsagar歡呼,沒問題:) – DdD 2012-03-07 04:47:44

0

首先,你可能會更好使整個列表開始與一個形式,而在隱藏表單字段存儲的現有記錄。然後,你應該有handler.php腳本檢查是否有新的表單條目被提交,並將它們存儲到變量中。如果沒有新的條目,變量將包含默認值。

然後,你可以一次性提交完整的更新查詢:

$query = "UPDATE inplace SET car ='$car', make='$make', sales='$sales' WHERE id='$id'"; 
$result = mysql_query($query) or die ('Query couldn\'t be executed'); 
if ($result) echo 1; 
相關問題