1

JQueryのソート可能な関数から新しい値を取得する方法についてのガイドがたくさんあることを私は知っています。しかし、それは私が望むようには機能しません。PHP変数に新しい値を追加して、ボタンが押されたときに画面に出力したり、MySQLデータベースを更新したりできるようにする必要があります。2つの別々のファイルで作業したくありません。したがって、POST変数を使用しました。

以下に、これまでに思いついたコードを示します(PHPファイルに保存します)。

<?php

echo '
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<style>
  #sortable { list-style-type: none; margin: 0; padding: 0; width: 100%; }
  #sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
  #sortable li span { position: absolute; margin-left: -1.3em; }
</style>
<script>
  $(function() {
    $( "#sortable" ).sortable();
    $( "#sortable" ).disableSelection();
  });
</script>
</head>
<body>

<ul id="sortable">';

$array = str_split("ABCDEFGHI", 3);

for($i = 0; $i < count($array); $i++) {
  echo '<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>' . $array[$i] . '</li>';
}

echo '
</ul><br>

<form action="" method="post">
  <input type="submit" name="submit" value="Show order">
</form>

</body>
</html>';

if(isset($_POST['submit'])) {
  // How to print the new order value?
}

?>
4

1 に答える 1

0

非表示の入力フィールドを配列として使用すると、フォームを送信すると、新しくソートされた値が得られます。

あなたのために<li>

echo '<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>' . $array[$i] . '<input type="hidden" name="pos[]" value="'.$array[$i].'"></li>';

結果をダンプするには:

if(isset($_POST['submit'])) {
    foreach($_POST['pos'] as $value){
        echo $value.'<br>';
    }
    echo '<pre>',print_r($_POST['pos']),'</pre>';
}

liシャッフルされると、keyforposは常に変化します。そして、送信時に、取得された方法で (上から下に) 順序付けされます。

于 2013-03-13T19:37:44.573 に答える