2016-07-06 16 views
0

このことについてもっと考えると、私のデザインには根本的な問題があると思います。私にはフォームがあります。私は選択入力オプションがあります。ユーザーはリストから最大4つの項目を選択できます。オプションには、それぞれに関連付けられた番号が付いています。フォームが送信されると、選択された各オプションの数がカンマで区切られて一緒に追加され、データベースの列に追加されます。私はオプションを選択する順序を制御できません。彼らが選ぶことのできる合計30のオプションがあります。だから私は1から30の範囲の列に4つの数字で終わっています。ある時点で、ユーザーは別の画面でオプションを選択し、そのオプションに関連するすべての情報を表形式で表示する必要があります。私はデータベースからただ一つのオプション番号を取得するのに苦労しています。私はデータベースからのオプション番号を持つ列を選択し、カンマを区切り記号として使用して、何も返さないexplode()に渡しました。データベース列のクエリによって返された$行に対してvar_dumpを実行すると、すべての情報が取得されたことがわかります。だから私は近づいた。これが私が返されたデータを爆発させる方法です。mysqlからコンマで区切られたデータを取得する

var_dump(explode(',' , $rows['scat'])); 

私は、データベースから情報を得れば大きな問題は十分であってもよく、私はそれが1〜30および順不同であることができることを与えられたことから、特定の番号を抽出行う方法です。

+1

あなたの正しい設計が間違っている - https://en.wikipedia.org/wiki/Database_normalization –

+1

短い項目の表、(ユーザ|項目)、各1つの行 –

+2

あなたはテーブル内の区切り記号を使用する場合、idは最初と最後でそれを使用することをお勧めします。選択番号LIKE '%| 4 |%'のように '| 4 | 45 |'のように狂っているので、デリミタで囲まれたときにもっとうまく動作します。 – ArtisticPhoenix

答えて

-1

あなたが段階的に集中することがあります: - DBの使用にデータを保存しながら、

: -

$qry = "insert into registervendors (scat) values ('".implode(",", $_POST['scat'])."')"; 

をあなたがデータを取得したい場合は、このクエリを使用します -

$qry = "SELECT * FROM registervendors WHERE state='".$state."' AND FIND_IN_SET(".$scat.", scat) ORDER BY busname ASC"; 

結果使用後: -

$catIDS = explode(",", $resultROw[$key]['scat']); 

ここで$ catIdsは1〜30の間のカテゴリのリストを持っている今、あなたはそれで10を検索する必要があるので、使用: -

if(in_array(10, $catIDS)){ 
    echo "exists"; 
} 
+0

どのステップ、あなたは私にHTMLフォームを書いてもらいたいですか? –

+0

ああ、私はアプリケーションの流れについて、ストレージやデータベースの代わりに説明しています。 –

+0

あなたはこれらの値をコンマ区切り形式で保存する必要はないと思います。 –

関連する問題