2012-03-17 6 views
1

よしを取っています。私はjEditableの新人です。私がjEditableで持っている問題を説明しましょう。jEditableは1つのID

id car  make 
1 panamera porsche 
2 italia  ferraris 
3 avantador lamborghini 
4 slk  mercedes 

と私はwhileループ内でこのテーブルエコーつもりだし、以下のコードである - -

私は私のデータベースに、この単純なテーブルを持っている上記のコードで

<script type="text/javascript"> 
<?php 
$query2 = "SELECT * FROM inplace LIMIT 0, 6";  
$result2 = mysql_query($query2) or die ('Query couldn\'t be executed'); 
$row2 = mysql_fetch_assoc($result2); 
?> 

$(function() { 
$(".items").editable("handler.php", { 
submitdata : {userid: "<?php echo $row2['id']; ?>"}, 
indicator : "<img src='img/indicator.gif'>", 
tooltip : "Doubleclick to edit...", 
event  : "click", 
onblur : "submit", 
name : 'newvalue', 
id : 'elementid', 

}); 
}); 
</script> 

</head> 
<body> 

<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="items" id="car">'.$row['car'].'</li>'; 
echo '<li class="items" id="make">'.$row['make'].'</li>'; 
} 

?> 
</ul> 

は、私はnewvalue(ユーザー編集)とelementid(carまたはmake)をjeditableスクリプトに渡しています。また、更新する正しいデータベースIDを特定するのに役立つもう1つの識別子が必要です。だから私はsubmitdata : {userid: "<?php echo $row2['id']; ?>"}のデータベースIDを渡そうとしています。その方法が正しいかどうかはわかりません。

以下「handler.php」ファイルに更新クエリである -

require("db.php"); 

function fail($msg) { 
header('HTTP/1.0 404 Not Found'); 
die($msg); 
} 

$id = (int)@$_POST['userid']; 

$field = @$_POST['elementid']; 

$allowed_fields = array('car','make'); 
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404); 
$newvalue = $_POST['newvalue']; 
$query = "UPDATE inplace SET `$field`='$newvalue' WHERE id=$id"; 
$result = mysql_query($query); 
echo $newvalue; 

ので、ここでの問題は、このsubmitdata : {userid: "<?php echo $row2['id']; ?>"}が唯一の第一のidを渡しています。つまり、それはただ1つのIDを渡すことを意味します。だから、italiaまたはavantadorをids2と3にそれぞれ編集しても、1番目のIDが更新されます。私がクエリをエコーするとき、あなたが編集するどの車でも、それはいつもUPDATE inplace SETcar='volante' WHERE id=1として読まれます。送信データに2または3または4を直接書き込むと、正しく更新されます。その1つのIDだけを渡します。誰かが私にid="car-'.$row['id'].'"のような使い方を提案し、それを爆発させてからfooやstuffを使用しました。私はそれを使用しようとしましたが、私の仕事はありませんでした。これのための解決策を探しています。

答えて

1

あなたはID番号を含むあなたの<li>タグでカスタム属性を作ることができます。その後、jQueryで、その値を取得するだけです。

<script type="text/javascript"> 

$(function() { 

    $("li.items").each(function(index) { 

     $(this).editable("handler.php", { 
     submitdata : {userid: $(this).attr('carid')}, 
     indicator : "<img src='img/indicator.gif'>", 
     tooltip : "Doubleclick to edit...", 
     event  : "click", 
     onblur : "submit", 
     name : 'newvalue', 
     id : 'elementid', 
     }); 

    }); 

}); 

</script> 

</head> 
<body> 

<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="items" carid="'.$row['id'].'" id="car">'.$row['car'].'</li>'; 
    echo '<li class="items" carid="'.$row['id'].'" id="make">'.$row['make'].'</li>'; 
    } 
?> 

</ul> 

免責事項:私はこれをテストせず、私はjQueryの構文について100%確信していません。

[EDIT]私は各特定<li>を参照する$(this)セレクタを使用して、程度願わくは作業それを変更。

submitdata : {userid: "<?php echo $row2['id']; ?>"}, 

IDを書いている

+0

クライシス - 私は答えを試みました。しかし、私が質問をエコーし​​たときに、その場所のUPDATEとしての読書は、 'car' = 'panamera' WHERE id = 0です。 Idは0と読んでいる。 – newbiewebb

+0

ええ、私はそれをテストしなかった。これはおそらく '$(this).attr(" carid ")'と関係しています。それが正しい値を得るためのセレクタであるかどうかはわかりません。それは同様でなければなりません。 –

+0

submitdataに$(this).attr( "carid")を使用すると、更新クエリで何かを変更する必要がありますか? – newbiewebb

0

あなたのPHPコードはので、すべての提出は、それだけで一つの値を使用しますが、サーバー上でのみ実行され、一度だけ実行されます。

cillosisはあなたの問題を解決する1つの方法があります。

+0

トビー - 私はcillosisの答えを試みた。しかし、私がクエリをエコーすると、SET car = 'panamera' where id = 0のUPDATEの読み方が読み込まれます。 Idは0として読み込み中です。submitdataに$(this).attr( "carid")を使用すると、更新クエリで何かを変更する必要がありますか? – newbiewebb

関連する問題