我有一个脚本,可以很好地将用户以逗号分隔值保存到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.' '.$reserveuser->lastname.' ';
echo '<a href="removereserve.php?id='.$lesson->id.'&reserve='.$reserveuser->id.'"><img title="unenrol" src="delete.gif" /></a>';
echo '</li>';
}
}
任何指导都会非常感谢,提前谢谢。
答案 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,', ',')