0

詳細テーブルで、完全なフィールドが「0」の場合、特定の画像を「1」の場合に表示したいのですが、別の画像を表示したいのです。現時点では、2番目の画像のみが表示されています(完全なフィールドが1の場合)これは私が使用しているコードです:

$id = $_SESSION['user_id'];
    $isFinished= mysql_query("SELECT complete From details where user_id = $id") ?>
<p>  <img src='<?php if($isFinished) echo "correct.png"; else echo "incorrect.png"; ?>' /><a href="details.php">Details</p>

どんなアイデアでも素晴らしいでしょう!

4

6 に答える 6

2

クエリのWHERE句は、 ='1'であるselectレコードのみを指定していますcomplete

1したがって、結果に戻るだけです。

句からそれを完全に削除し、WHEREphpIFステートメントに次のことを決定させる必要がありますcomplete = '1'

于 2012-04-17T11:03:33.473 に答える
1

SQLステートメントは、complete='1'のエントリのみを選択します。ステートメントから「andcomplete='1'」を削除する必要があります。

Edite:また、上記のように、ifステートメントは、クエリが何かを返したか、エラーが発生したかどうかのみをチェックします。

そのはず

if($isFinished['complete'] == '1') {echo "correct.png";}else{echo "correcy.png";}
于 2012-04-17T11:04:22.997 に答える
1

関数

function getOne($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("db: ".mysql_error()." in ".$query);
    return FALSE;
  }
  if ($row = mysql_fetch_row($res)) {
    return $row[0];
  }
}

コード

$sql = "SELECT complete From details where user_id = ".intval($_SESSION['user_id']);
$isFinished = getOne($sql);
?>
<p>
  <img src='<?php if($isFinished): ?>correct.png<? else: ?>incorrect.png<? endif ?>' />
  <a href="details.php">Details</a>
</p>
于 2012-04-17T11:12:54.703 に答える
0

このmysql_query関数はfalse、クエリが無効な場合にのみ返されます。行がゼロの場合はfalseを返しません。

関数を使用しmysql_num_rowsて行があったかどうかを判別するか、関数を使用してmysql_fetch_*completeの値をフェッチする必要があります。

例1(元の(編集されていない)質問と同様):

$result = mysql_query("SELECT 1 From details where user_id = $id where complete = 1");
$isFinished = mysql_num_rows($result);

例2(代替):

$result = mysql_query("SELECT complete From details where user_id = $id");
$record = mysql_fetch_assoc($result);
$isFinished = $record['complete'];
于 2012-04-17T11:05:42.017 に答える
0

これはコード全体ですか?

この場合、$ isFinishedはdbから取得されたコンテンツではありません。クエリが間違っている場合はmysql_queryがfalseを返し、そうでない場合は結果をフェッチできるオブジェクトを返します。

この場合、クエリが正しいため、if($ isFinished)は常にtrueです。

クエリの実行でフェッチ部分を見逃します!

http://php.net/manual/en/function.mysql-query.php

例えば:

 $id = $_SESSION['user_id'];
 $result = mysql_query("SELECT complete From details where user_id = $id");
 $isFinished= mysql_num_rows($result);
<p>  <img src='<?php if($isFinished) echo "correct.png"; else echo "incorrect.png"; ?>'     /><a href="details.php">Details</p>

このように、クエリが1つ以上の行を返す場合、$ isFinishedは1以上です。それ以外の場合、$isFinishedは0です。if-elseは正しく機能するはずです。

元のSQLは変更していません。必要に応じて変更してください。

于 2012-04-17T11:06:46.540 に答える
0

次のようになります。

$id = $_SESSION['user_id'];
$result= mysql_query("SELECT complete From details where user_id = $id  and complete='1'") ?> 
$row = mysql_fetch_array( $result );
<p>
<?php if($row['complete']): ?>
<img src="correct.png"/>
<?php else: ?>
<img src="incorrect.png"/>
<?php endif; ?>
<a href="details.php">
Details</a>
</p>
于 2012-04-17T11:09:24.757 に答える