2013-03-13 62 views
1

我知道有很多關於如何從JQuery可排序函數中檢索新值的指南。但它不像我想要的那樣工作。需要在PHP變量中添加新值,以便在按下按鈕時將其打印在屏幕上或更新我的MySQL數據庫。我不想在兩個單獨的文件中工作。因此我使用了一個POST變量。PHP/jQuery:檢索新的可排序值

下面你有我的代碼,我拿出這麼遠(將其保存到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? 
} 

?> 

回答

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亂了一下,keypos將永遠改變。提交後,他們會按照檢索的方式(從上到下)排序。

+0

謝謝你快速回復塞繆爾庫克。我用你給我的代碼替換了。 改爲: echo'

',print_r($_POST['pos']),'
'; 收件人: echo'
'.print_r($_POST['pos']).'
'; 但是,當我按下按鈕它說: 注意:未定義的指數:pos在/ XXXXXXX /在線43 – Treps 2013-03-13 19:46:16

+0

呵呵,我已經更新了答案。 :) – Treps 2013-03-13 19:49:57

+0

兩件事。 1,你的echo語句在你的'print_r'上不起作用(使用逗號保持一行)。 2,你需要將'form'標籤移動到'#sortable ul'之上。這樣它就包含了所有的「輸入」標籤 – 2013-03-13 19:52:51