2017-10-13 94 views
0

我有一個關於如何從img_ids中刪除所需號碼的問題。正如您在img_ids下面的表格中看到的,如68,67,66,65,64,。我想刪除例如67,我怎樣才能用PHP做到這一點。由於逗號,我的頭腦混亂:S。從數據中刪除所需號碼

enter image description here

<div class="delete" id="67">Delete Image</div> 

阿賈克斯

$("body").on("click", ".delete", function(){ 
    var deleteimgid = $(this).attr("id"); 
    var data = 'img='+deleteimgid; 
$.ajax({ 
    type: 'POST', 
    url: 'delete.php', 
    data: data, 
    cache: false, 
    beforeSend: function(){}, 
    success: function(response){ 

    } 
}); 
}); 

delete.php

<?php 
    include_once 'inc.php'; 

    if(isset($_POST['img'])){ 
     $imgid = mysqli_real_escape_string($db, $imgid); 

     // Then what should be the query ? 
     // I am confused because of the commas. 
    } 
?> 
+4

處理BLOB數據很容易想想你的規範化數據庫,而不是存儲逗號分隔的數據...真的很難處理 - 您將遇到與可維護性,可擴展性和性能相關的更大問題 –

+0

**不要**將多個值存儲在單個字段中。使用另一個表。 – axiac

回答

4

即使壽你不應該存儲這樣的數據,在這裏工作的方法:

$imgList = '12,23,45,56,67,78'; 
$imgid = 12; 

$imgIds = explode(',', $imgList); 
$imgIds = array_filter($imgIds, function ($item) use ($imgid) { 
    return $imgid != $item; 
}); 

$imgList = implode(',', $imgIds); 
print $ImgList; // prints 23,45,56,67,78 

做些什麼:

  1. 分裂ID列表到一個數組由逗號
  2. 使用array_filter映射陣列並卸下所需的值
  3. 用逗號
  4. 再次內爆列表

您究竟應該/可以存儲您的數據

正如其他人在評論中指出的,你應該規範你的數據庫。 Read more

你也可以使用一個BLOB字段,而不是文本字段,因爲PHP可以使用serialize/unserialize

+0

我真的明白你的答案。我會給你投票。它解決了這個問題。所以我可以問一個來自stackoverflow聊天部分的迷你問題嗎? – Azzo

+0

當然,創建一個房間並向我發送鏈接 –