こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FORM内容をMySqlと比較

現在以下のようなプログラムを考えています。

<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="T0" value="" size="40" maxlength="40"/>
<input type="text" name="T1" value="" size="40" maxlength="40"/>

<?
省略
while($MyRow = mysql_fetch_array($MyResult,MYSQL_ASSOC))
{

$answer[] = $MyRow["a"];//データベース内容を配列に

   $param_val[$i] = $_POST["T".$i];


print("<br>");
if($answer[$i] == $param_val[$i] ){
print("OK");
}else{
print("間違いです。");
}
print("<br>");

$i++;
}
?>
このようにFORMで入力されたデータと比較しているのですが、常に「間違いです」しか表示されません。
どこか単純な見落としがあるのでしょうか?

投稿日時 - 2005-11-14 10:39:51

QNo.1777995

困ってます

質問者が選んだベストアンサー

がると申します。
んっと。まず「自分で出来るデバッグ方法」なのですが。
一番簡単なのは、各変数の状態をprintしてみる方法をお勧めします。
ものすごく原始的なdebug方法ですが、案外「ほとんどの言語のほどんどのシチュエーション」で有効です。
具体的には
while($MyRow = mysql_fetch_array($MyResult,MYSQL_ASSOC))
{

$answer[] = $MyRow["a"];//データベース内容を配列に

   $param_val[$i] = $_POST["T".$i];

print("<br>");

print "answer is " . $answer[$i] . "<BR>\n";
print "param value is " . $param_val[$i] . "<BR>\n";
print("<br>");

if($answer[$i] == $param_val[$i] ){
print("OK");
}else{
print("間違いです。");
}
print("<br>");

$i++;
}

と、こんな感じです。
こうすることである程度のdebugが出来るようになると思います。

で、間違いの原因は
「$answer[] = $MyRow["a"];//データベース内容を配列に」
であると予想されます。
ここは
$answer = $MyRow["a"];//データベース内容を配列に
と書き、以降の$answer[$i] を $answer に全て修正することでうまくいくと思います。
また、余談ではありますが、
「$param_val[$i] = $_POST["T".$i];」

「$param_val = $_POST["T".$i];」
と書き、以降の$param_val[$i] を $param_valに修正してよいと思います。
また、一応$iを、whileの直前の行で
$i = 0;
と初期化しておいたほうがよいかもしれません。

投稿されたプログラムを見る限りだと、気になるのはこのあたりでしょうか。

投稿日時 - 2005-11-14 11:53:11

お礼

ありがとうございます。
問題が解決しました!
if文の条件を指摘されたとおりに変更したらうまくいきました。
単純な質問に丁寧に答えていただいてありがとうございました。

投稿日時 - 2005-11-14 12:15:46

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問