-1

これは、データベースに個別に保存されるドラッグ アンド ドロップ コードです。ユーザーの選択に応じてダッシュボードのレイアウトを保存できる機能をユーザーに提供したいと考えています。次の画像を見て、何か提案があれば教えてください。前もって感謝します!

ここに画像の説明を入力

    **index.php**
        <script type="text/javascript">
        $(document).ready(function(){ 

            $(function() {
                $("#contentLeft #db_boxes").sortable({ opacity: 0.6, cursor: 'move', update: function() {
                    var order = $(this).sortable("serialize") + '&action=updateRecordsListings'; 
                    $.post("updateDB.php", order, function(theResponse){
                        $("#contentRight").html(theResponse);
                    });                                                              
                }                                 
                });
            });

        }); 
        </script>

    **updateDB.php**

    <?php 
    require("db.php");
    $username = $_SESSION['username'];

    $action = mysql_real_escape_string($_POST['action']); 
    $updateRecordsArray = $_POST['recordsArray'];

    if ($action == "updateRecordsListings"){

        $listingCounter = 1;
        foreach ($updateRecordsArray as $recordIDValue) {

            $query = "UPDATE dnd_records SET recordListingID = " . $listingCounter . " WHERE username = " . $username;
            mysql_query($query) or die('Error, insert query failed');
            $listingCounter = $listingCounter + 1;  
        }

        echo '<pre>';
        print_r($updateRecordsArray);
        echo '</pre>';

    }
    ?>
4

2 に答える 2

1

そのようにデータベースを非正規化することは、通常は良い考えではありませんが、もちろん、特定のユース ケースはわかりません。

そうしたい場合はjoin、配列に対して関数を使用して、特定の区切り文字を使用して結合された配列の要素を持つ文字列を取得できます。これは、JavaScript 側 ( を使用Array#join) または PHP 側join( のエイリアスimplode) で実行できます。

于 2013-04-03T09:52:30.280 に答える
0

私の意見:非正規化されたデータベースをモデル化しないでください。一度もない。もしあなたがそれをしなければならないと思うなら、あなたは悪い方法で考えています。もう一度考えて、より良いものにしましょう。JavaScript で返された複数の行 (レコード) を操作する方法をご存知ですか? またはPHPでも?それでは、SQL クエリから返された複数の行を処理する方法について質問します。foreach()またはwhile()ループを使用することをお勧めします。

JavaScript の問題である場合は、JSON 配列を JavaScript スクリプトに返す/送信し、ループを使用してレコードを調べます...

|またはを介し​​て結合されたデータを保存すること;は非常に古く、非常に悪い強制です - どこかで見た場合は、すぐに忘れて、より良い新しいものを学びましょう -データベースの正規形.

編集: まだそのようなバラストデータを保存する必要がある場合は、より良い方法で実行してください-配列/オブジェクトでシリアル化します:

$array = array('One', 'Two', 'Three');
$serialized = serialize($array);
// output something like: a:3:{s:3:One;s:3:Two;s:5:Three}

この$serialized文字列を値ではなくデータベースに格納しOne|Two|Threeます... データベース呼び出しから取得した後:

$array = unserialize($serialized);

行を更新するまでの場合:

  1. 行を取得する
  2. シリアライズ解除
  3. 配列への追加/変更
  4. シリアライズ
  5. 保存
于 2013-04-03T10:31:24.543 に答える