ドロップダウンメニューでフォームを作成しようとしています。フォームの値はデータベースに保存されます。後でフォームの値を変更できるようにしたいのですが、データベースに入力された値が入力されたフォームに戻ることで変更できます。
ドロップダウンメニューを除いて、すべてが機能しているようです。すべてのフィールドに正しい値を入力したいので、これはメニューにも当てはまります。そこで、if-else句で文字列比較を使用して、選択済みとして設定するオプションを決定してみました。しかし、文字列の比較は機能しません。コード例は次のとおりです。
$query = mysql_query(SELECT * FROM data);
$result = mysql_fetch_assoc($query);
if(strcmp($result['pet'],"Dog")==0)
{
echo "
<option value='Dog' selected>Dog</option>
<option value='Cat'>Cat</option>
<option value='Bird'>Bird</option>
";
}
elseif(strcmp($result['pet'],"Cat")==0)
{
echo "
<option value='Dog'>Dog</option>
<option value='Cat' selected>Cat</option>
<option value='Bird'>Bird</option>
";
}
私も試しました:
if(result['pet']=="Dog")
{
.....
}
elseif(result['pet']=="Cat")
{
.....
}
と
if(strcmp(trim(reuslt['pet']),trim("Dog"))==0)
{
.....
}
elseif(strcmp(trim(result['pet']),trim("Cat"))==0)
{
.....
}
しかし、何も機能しません。照合に関係しているのではないかと思うので、値を選択するときに変更してみました。
$query = mysql_query("SELECT * COLLATE latin_1 FROM data");
$result = mysql_fetch_assoc($query);
これにより、 「警告:mysql_fetch_assoc()は、パラメーター1がリソースであると想定しています。ブール値は/opt/lampp/htdocs/PHP/control.phpの12行目にあります」というエラーメッセージが表示されます。
だから、何が問題なのですか、そしてどうすればそれを修正できますか?
編集:クエリを少し変更しました:
$query = mysql_query("SELECT * FROM data WHERE user='$user' COLLATE uft8_general_ci") or die(mysql_error());
これから、次のエラーが発生します。
COLLATION'utf8_general_ci'は、CHARACTERSET'latin1'には無効です。
照合をlatin1_general_ciに変更すると、次のようになります。
操作'='の照合(utf8_swedish_ci、IMPLICIT)と(latin1_general_ci、EXPLICIT)の不正な組み合わせ
データベースの列に使用している照合は、それが役立つ場合はutf8_swedish_ciです。