0

在我的详细信息表中,当完整字段为“0”时,我希望出现某个图像,而当它为“1”时,我希望出现不同的图像。目前只显示第二张图片(当完整字段为 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查询子句仅指定选择记录 where complete= '1'

所以你只会得到1结果。

您应该从WHERE子句中完全删除它,让您的 php IF 语句决定是否complete = '1'

于 2012-04-17T11:03:33.473 回答
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 回答
1

您的 SQL 语句只选择 complete='1' 的条目。您应该从您的声明中删除“and complete='1'”。

编辑:如上所述,您的 if 语句仅检查您的查询是否返回某些内容或出现错误。

它应该是

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

mysql_query函数false仅在查询无效时返回。如果有零行,它不会返回 false。

您应该使用该mysql_num_rows函数来确定是否存在一行,或者使用这些mysql_fetch_*函数来获取完整的值。

示例 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) 总是正确的,因为查询是正确的!

你错过了查询执行的获取部分!

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>

这样,如果查询返回一个或多个行,则 $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 回答