sortableを使用したデータのUPDATE
お世話になります。
jQueryの「 sortable 」というプラグインを使用して、データベースから
「id」、「name」、「price」、「no」というデータをselectして、ブラウザで並び順を変更後に
updateするという流れですが、最終的にシリアライズした配列をDBへupdateできません。
「id」は連番にしてユニークな値が入っていて、「no」には並び順の値が半角数字で入れてあります。
シリアライズした配列のデータは、ブラウザで確認すると問題ありません。
恐らくupdateの際のforeachの処理が上手く行ってないように感じますが、
正常に「id」と「no」の整合性を取ってDBに投げるには、どの様に組み立てたら良いのでしょうか?
以下が主要箇所のソースです。
-------------------------------------------------------
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery-ui-1.10.3.custom.js"></script>
<script>
$(function() {
$(".sortable").sortable();
$(".sortable").disableSelection();
$("#submit").click(function() {
var result = $(".sortable").sortable("toArray");
$("#result").val(result);
$("form").submit();
});
});
</script>
<form action="index.php" method="post">
<ul class="sortable">
<?php
// DB接続
include "db_pdo_conn.php";
$sql1 = "SELECT id, name, price, no FROM sortable ORDER BY no";
$stmt = $conn->prepare($sql1);
$stmt->execute();
foreach ($stmt as $row) {
$id = $row["id"];
$name = $row["name"];
$price = $row["price"];
$no = $row["no"];
echo <<<li
<li class="ns" id="$id">{$name} {$price} {$no}</li>
li;
}
$result = $_POST['result'];
$result_array = explode(',', $result);
//シリアライズした$result_arrayを表示
print_r(serialize($result_array));
//データが送信されたときに変更する
if (count($_POST)) {
//nomを「 1 」から振り替える
$nom = 1;
foreach ($result_array as $id){
$nom++;
$sql2 = "UPDATE sortable SET no='$nom' WHERE id='$id'";
$stmt = $conn->prepare($sql2);
$stmt->execute(array($no_comp, $id_comp));
}
}
?>
</ul>
<input type="hidden" id="result" name="result" />
<button id="submit">submit</button>
</form>
-------------------------------------------------------
3日程試行錯誤しておりますが、解決できる糸口が見つからないので
ご存知の方がいらっしゃいましたら、ご教示の程どうぞよろしくお願い申し上げます。
----------------
▼スペック
PHP 5.3.3
MySQL 5.0.95
----------------
補足
もう持ってますよ。。。 あくまでもセカンドです。