从MySQL中保存的Php Comma分离值数组中删除一个值

时间:2012-02-28 11:57:17

标签: php mysql

我有一个脚本,可以很好地将用户以逗号分隔值保存到MySQL'预留'字段。

例如'510,465,8552'

然后,我在下面的脚本中回显了用户从逗号分隔的“保留”字段中输入的名称。 我正在努力的一点是能够点击其中一个用户旁边的删除图像,它将从逗号分隔值中删除用户ID。

    $entries = get_records_sql ("SELECT * FROM development ORDER BY pdorder ASC");  
    foreach($entries as $lesson) {

    $waiting = explode(",", $lesson->reserve);
    foreach($waiting as $unlucky) {
    $reserveuser = get_record("user", "id", $unlucky);

    if($reserveuser->id>1){
echo '<li id="lstno'.$lesson->id.'" name="'.$reserveuser->id.'">'.$reserveuser->firstname.'&nbsp;'.$reserveuser->lastname.' ';
echo '<a href="removereserve.php?id='.$lesson->id.'&reserve='.$reserveuser->id.'"><img title="unenrol" src="delete.gif" /></a>';
        echo '</li>';
        }
    }

任何指导都会非常感谢,提前谢谢。

3 个答案:

答案 0 :(得分:4)

好吧,如果所有用户ID都保存在一个字段中,我的方法就是这样http://codepad.org/KTAJ3ROb

希望有助于搞清楚它!

答案 1 :(得分:1)

这可能是糟糕的数据库设计,除非您知道自己在做什么。

删除一个值的一种方法是读取整个单元格,用php删除它并将其写回。

$waiting = explode(",", $lesson->reserve);
//delete desired one
unset($waiting[3]);
//implode it back
$store = implode(',', $waiting);
mysql_query("UPDATE table SET reserve='$store'");

如果逗号分隔的ID是唯一的(您没有说 11 ,20, 11 ),那么您可以使用mysql REPLACE函数。

mysql_query("UPDATE table SET
reserve=REPLACE(reserve, ',$oldid', ',$newid'),
reserve=REPLACE(reserve, '$oldid,', '$newid,')");

专门处理第一个和最后一个值有一个小问题。

答案 2 :(得分:0)

如果你想直接在SQL(MySQL)中创建它,那么你可以这样做:

UPDATE ... SET USERS = TRIM(REPLACE(' ' + USERS + ' ', ' 7 ', ' '))

这将删除ID为7的用户。分隔符不是','而是''(空白)。问题是,没有任何功能可以在开头或结尾删除',',就像空白的TRIM()一样。

或者你必须在USERS字段中始终接受一个领先和拖尾',并且这样做:

UPDATE ... SET USERS = REPLACE(USERS, ',7,', ',')