0

データベースを新しい情報で更新し、古い情報も保持するにはどうすればよいですか?

私の目的は、クリックするとアイテムIDがメンバーのお気に入りリストに追加されるお気に入りボタンを作成することです。

ボタンを追加してデータベースからアイテムIDを取得する方法を知っています。更新するために実行するmysqlクエリと、データベース列を作成するときの「タイプ」が本当に必要です。

行内の情報は次のようになります

1,12,14,15,34,46,74

メンバーがアイテム 98 を追加したい場合は、次のように更新されます。

1,12,14,15,34,46,74,98

末尾に 98 を追加します。

これは一種の「これをやってくれませんか」という投稿だと思いますが、どこから始めればよいかわかりません。

4

4 に答える 4

2

次のような名前の新しいテーブルを作成する必要があります。

MembersFavoritePage:

  • MemberId.
  • PageId.
  • ...

次に、ユーザーがページをお気に入りページとしてマークするたびに、このテーブルに挿入します。

于 2012-10-30T13:33:36.217 に答える
1

文字列を維持したい場合は、クエリでこれを行うことができます:

UPDATE `table`
SET `fav` = CONCAT(`fav`, ",98")
WHERE `id` = 1234;

または、PHP で concat を実行し、それを更新するだけです。つまり、最初に既存の文字列を取得しますが、これは 2 つのクエリを意味します。

しかし、@MahmoudGamal によって提案されているように、別のテーブルが最適です。これは項目を「削除」するのが難しいため、PHP 側で操作を行う必要があります。

于 2012-10-30T13:42:03.907 に答える
1

コンマ区切りの値を単一の列に保存しないでください。第 1 正規形の違反です

より広い説明については、以下の回答を確認してください。

区切られたリストをデータベース列に保存するのは本当に悪いことですか?

最良のアプローチは、@Mahmoud Gamal が提案するように、長期的に維持しやすい別のテーブルを作成することです。

于 2012-10-30T13:42:48.563 に答える
-1

ID とそれをお気に入りリストに追加したユーザーを格納できるテーブル「お気に入り」を作成するのはどうですか?

ID | USER_ID
------------
5  | user_1
6  | user_1
8  | user_2
6  | user_2

select ID from favs where USER_ID = "user_1"

これにより、user_1 のページ ID が取得されます。

ユーザーがお気に入りページを追加/削除する必要がある場合は、このテーブルの挿入/更新/削除を管理する必要があることに注意してください。

より簡単な解決策は、ユーザーの詳細にお気に入りページ フィールドを持つことです。

USER_ID| FAVS
-------|-----
user_1 | 5*6
user_2 | 8*6

このソリューションを使用すると、 favs フィールドを簡単に解析して、ページに関する情報を取得できます (この場合、文字列を解析するだけで済みます)。

ユーザーのお気に入りリストからページを更新または削除する必要がある場合は、文字列を解析し、削除するページ ID を削除するか、新しいページを文字列に追加するだけです。

この場合の短所は、お気に入りのページを簡単に見つけることができないことです (LIKE コンストラクトを使用することになります)。

于 2012-10-30T13:48:21.703 に答える