2017-10-06 163 views
1

我在MySql表page_order中有一個單元格。當我使用php表單添加一個新行時,沒有任何內容寫入這個單元格。 我已經使用jQuery sortable與數據庫中的記錄,當我們移動的項目,然後這個單元格page_order更新。排序不正確?

這裏是我的代碼部分

<?php 
         include 'dbs.php'; 
         $db = new DB(); 
         $users = $db->getRows('artists',array('order_by'=>'page_order ASC')); 

         if(!empty($users)): $count = 0; foreach($users as $user): $count++; 
        ?> 
       <?php $idd = $_GET['id']; ?> 
       <?php if(($user['interline'] == NULL) && $user['event_id'] == $idd){ ?> 


    <div class="action-box" id="<?php echo $user['id']; ?>"> 
      <div class="action-box-count"> 
       <div class="count-number"><?php echo $count; ?></div> 
       <div class="count-time"> 
        <div class="count-time-top">15:37 <span>21</span></div> 
        <div class="count-time-bottom">15:50 <span>29</span></div> 
       </div> 
      </div> 
      <div class="action-box-info"> 
       <p class="user-name"><?php echo $user['fullname']; ?></p> 
       <p class="user-info"><?php echo $user['artist1']; ?></p> 
       <p class="user-info"><?php echo $user['artist2']; ?></p> 
      </div> 
      </div> 

    <?php } ?> 
    <?php if(($user['interline'] != NULL) && $user['event_id'] == $idd){ ?> 



    <div class="action-box action-end" id="<?php echo $user['id']; ?>"> 
       <div class="action-box-count"> 
       <div class="count-number"><?php echo $count; ?></div> 
      </div> 
      <div class="action-box-info"> 
       <div class="text-center"><?php echo $user['interline']; ?></div> 
      </div> 
     </div> 
     <?php } ?> 


    <?php endforeach; else: ?> 
        <tr><td colspan="5">Not found......</td></tr> 
        <?php endif; ?> 

    <a href="javascript:void(0);" id="addLink" onclick="javascript:$('#openForm').toggle();"><div class="action-box action-add"></div></a> 
    <?php 
$idint = $_GET[id]; 
echo "<a class='action-box action-add-small' href=\"interline.php?idi=".$idint."\"><div class='text-center'><span class='icon'>Interline</span></div> </a>"; 

?> 


    <input type="hidden" name="page_order_list" id="page_order_list" /> 
</div> 
</div> 

然後我使用AJAX來發送文件的請求時,我處理:

for($i=0; $i<count($_POST["page_id_array"]); $i++) 
{ 
$query = " 
UPDATE artists 
SET page_order = '".$i."' 
WHERE id = '".$_POST["page_id_array"][$i]."'"; 
mysqli_query($connect, $query); 
} 

阿賈克斯

$(document).ready(function(){ 
$("#order_list").sortable({ 
    placeholder : "ui-state-highlight", 
    update : function(event, ui) 
    { 
    var page_id_array = new Array(); 
    $('#order_list div').each(function(){ 
    page_id_array.push($(this).attr("id")); 
    }); 
    $.ajax({ 
    url:"order.php", 
    method:"POST", 
    data:{page_id_array:page_id_array}, 
    success:function(data) 
    { 
    alert(data); 
    } 
    }); 
    } 
}); 


}); 

的問題是: 1.錯誤的寫入db的步驟,即不是1,2,3,4,5,但如下所示:10,22,27,30,33 2.第二個問題是,當我檢查<?php if(($user['interline'] != NULL)輸出另一個字符串 - 排序和數字行爲通常是可怕的。

請告訴我如何弄清楚?

+0

小更新: 隨着: '如果(($用戶[ '隔行'] == NULL)&& $用戶[ 'EVENT_ID'] == $ IDD){} 如果(($用戶[」從一開始,幾乎所有東西都是好的(從5開始,遠到6,7,8,9,...)。 。),但排序是混亂 隨着: '如果(($用戶[ '隔行'] == NULL)&& $用戶[ 'EVENT_ID'] == $ IDD){}' 用的步驟混亂(10,12,17,27,30,...),但排序是正確的 –

+0

沒有ajax調用,很難猜到發生了什麼 –

+0

另外,兩個'if'語句中div的數量似乎沒有加起來,這可能是導致排序問題 –

回答

0

你看到差距是由這部分未來:

$('#order_list div').each(function(){ 
    page_id_array.push($(this).attr("id")); 
}); 

您選擇內部#order_list所有div。這將爲您的數組填充所有沒有ID的div的空值。由於您在索引中導致間隙,導致出現帶有間隙的有序列表。 (其實不是真正的問題,反正,因爲他們只是訂購...)

$('#order_list div.action-box').each(function(){ 
    page_id_array.push($(this).attr("id")); 
}); 

這裏,僅定位動作盒(這似乎是持有ID)將確保您的迭代只正確的divs。

+0

我明白你在說什麼。這種方法不想工作 –