2012-02-28 17 views
1

カンマ区切りの値でMySQLの「予約」フィールドにユーザーを保存するのに最適なスクリプトがあります。PHPでカンマ区切りの値の配列を削除する

例えば「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>'; 
     } 
    } 

ご迷惑をおかけして申し訳ございません。

+2

は、なぜあなたはカンマで区切られたフィールドにユーザーIDを格納していますか?とにかく、レコードを取得して文字列操作を使用して部分文字列を削除し、新しい値を持つデータベースを更新する – scibuff

+1

爆発した後、削除したい配列の部分の設定を解除してから、配列を再び文字列に入れ込み、新しい文字列を持つデータベース – Sondre

答えて

4

まあ、私のアプローチはそれを考え出すのに役立ちます。このhttp://codepad.org/KTAJ3ROb

希望のようなものになるだろう!

+0

これはリストに存在しない値を持ついくつかのバグtryを含んでいます。最初のものを削除します。 ??最初にin_arrayを使用して、unset()のみをチェックする必要があります。 –

1

これはおそらく、あなたが何をしているか分からない限り、悪いデータベースデザインです。

値を1つだけ削除する方法の1つは、セル全体を読み込み、PHPで削除して書き戻すことです。コンマは(あなたが言う、20、を持っていけない)IDは一意である分離した場合

​​

することは、あなたは、MySQL REPLACE機能を使用することができます。

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

最初と最後の値を特別に処理するためのリットルトリックがあります。ユーザーのすべてのidのは、1つのフィールドに保存されている場合

+0

"悪いデータベース設計"とは何ですか?参照整合性がカンマよりも重要でない場合、seperatetdリストは「結合」を避けてdb-queryをスピードアップする良い方法です。また、参照整合性をサポートしていないデータベース(No-SQL)もあります... – user1027167

+1

"おそらく"に更新されました。 –

0

あなたはSQL(MySQLの)で直接それを作りたいなら、あなたはこのようにそれを行うことができます。

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

これは、セパレータはないID 7でユーザーを削除します「」しかし、 a ''(空白)。問題は、空白のためにTRIM()のように最初または最後に '、'を取り除く機能がないことです。

それとも、USERS視野に「」常に先頭とテーリングを受け入れなければならないと、このようにそれを実行します。

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

-1:何のために??? – user1027167

+0

なぜこれがダウン投票をしたのか混乱しています。これは私のために完璧に働いた!どうもありがとうございました。 –

関連する問題