2017-10-09 11 views
0

私は、html:Chicago、SF、NYCの3つのチェックボックスを持つフォームを持っています。Mysqlデータに基づいて事前設定/事前チェックチェックボックス

ユーザーは、これらのチェックボックスをすべてオフにすることができます。その後、データはデータベースに送られ、配列ではなく個々の値として格納されるようにデータを破棄します。

$locationpref = implode(", ",$_POST['locationpref']); 

私のページをリフレッシュすると、自分のフォームが既に選択したチェックボックスを事前にチェックしたいと思います。たとえば、シカゴとSFを自分の設定として選択すると、自分のプロフィールにログインするたびに、これらのチェックボックスをオフにします。

私はそれの背後にあるHTMLを理解していますが、implodeは配列を文字列に変換するので、 "SF"または "Chicago"の文字列を検索してそれに応じてエコー機能をトリガーする方法を見つけることができません。

<?php if (in_array("SF", $locationpref)) {echo "checked='checked'";} ?> 

アドバイスはありますか?

ありがとうございます!

+0

http://php.net/explode – Utkanos

+0

を使用まず、位置データを昏睡状態で爆発させる必要があります。 –

+0

私は明確にすべきです:私は昏睡状態の場所を爆発させましたが、in_array関数で検索すると何らかの理由で配列の最初の項目しか検出されません。たとえば、SFやNYCではなく、分解された配列で 'Chicago'のみを検出します。なぜあなたは知っていますか? – jlim

答えて

1
U need to explode the locations with coma. 

$locations = "Chicago,SF,NYC"; 
$locationpref = explode(','$locations); 

その後、

if (in_array("SF", $locationpref)) {echo "checked='checked'";} 
+0

私は明確にすべきです:私は昏睡状態の場所を爆発させましたが、in_array関数で検索すると何らかの理由で配列の最初の項目しか検出されません。たとえば、SFやNYCではなく、分解された配列で 'Chicago'のみを検出します。なぜあなたは知っていますか? – jlim

+0

来てから爆発または爆発の間にスペースを追加しないでください –

0

あなたは明らかにimplode()を見つけましたが、その反対のものはexplode()で、他の方向に変換しています。

if (in_array("SF", explode(',', $locationpref))) echo "checked='checked'"; 

それとも、ただREGEXは、ワード境界に包まれた単語を探している可能性があり:

if (preg_match('/\bSF\b/', $locationpref)) echo "checked='checked'"; 
関連する問題