当我点击我的网络应用程序中的项目时,它包含值,我没有收到任何错误,但是我在MySQL中创建了另一个带有空字段的项目,我点击了它,在我的网络应用程序中(PHP应用程序) ),所以我收到了这个错误:
未定义的变量:总计 第80行的C:\ wamp \ www \ architect \ projDetails.php
我有这个PHP代码:
$id = $_REQUEST['id'];
$sql = "SELECT (SELECT SUM(total_pay) FROM workers) total,workers. * FROM workers WHERE projects_id = ".$id." ORDER BY date_of_pay DESC";
$stmt = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysqli_error($con));
这里有第80行附近的html和php代码:
<tr>
<?php while($rows = mysqli_fetch_array($stmt)){ $total = 0; ?>
<tr>
<?php if($rows['total']!=0){
$total = $rows['total'];
}
else {
$total = "غير متوفر";
}
?>
<td align="center"><?php echo $rows['total_pay']?></td>
<td align="center"><?php echo $rows['date_of_pay']?></td>
<td align="center"><?php echo $name['project_name'] ?></td>
<td align="center"><!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
<input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>
</td>
</tr>
</tr>
<?php } ?>
<tr>
<td colspan="3">مجموع تكاليف العمال في مشروع <?php echo $name['project_name']?></td>
<td align="center"><?php echo $total ?></td>
</tr>
所以当total为空时,我得到错误,当它不为空时,我没有得到任何错误,那么这里有什么问题?
答案 0 :(得分:0)
尝试以下内容。
echo isset($total)? $total: 0;
答案 1 :(得分:0)
您的变量$total
目前仅在while块中存活。您将在</tr><?php } ?><tr>
语句处退出此块。这意味着您的变量不再在下面的代码行<td align="center"><?php echo $total ?></td>
中分配。要在while块下面使用此total变量,请在while块上方添加变量的声明和初始化,例如:
<tr>
<?php $total = 0;
while($rows = mysqli_fetch_array($stmt)){ ?>
<tr>
<?php if($rows['total']!=0){ <-- Check this comparison (described below)
$total = $rows['total'];
}
else {
$total = "غير متوفر";
}
?>
<td align="center"><?php echo $rows['total_pay']?></td>
<td align="center"><?php echo $rows['date_of_pay']?></td>
<td align="center"><?php echo $name['project_name'] ?></td>
<td align="center"><!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
<input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>
</td>
</tr>
</tr>
<?php } ?>
<tr>
<td colspan="3">مجموع تكاليف العمال في مشروع <?php echo $name['project_name']?></td>
<td align="center"><?php echo $total ?></td>
</tr>
希望这对你有用。上面代码中带注释的行将比较字符串和整数值。请注意,$rows['total']
将包含String类型的值。您的比较是针对整数值0
。 PHP不应该抛出错误或警告,但它可能会在此if语句中产生不需要的结果。 (更多信息:http://php.net/manual/de/language.types.type-juggling.php)
答案 2 :(得分:0)
如果我们从DB获取任何数据,那么它只会进入while循环。现在在while循环中只有$ total定义。 如果我们在while循环之外定义它,默认值将解决问题
<tr> <?php
$total = "0";
while($rows = mysqli_fetch_array($stmt)){ $total = 0;
if($rows['total']!=0){
$total = $rows['total'];
}
//.....
//.....
} ?>
</tr>
<tr>
<td colspan="3">some text <?php echo $name['project_name']?></td>
<td align="center"><?php echo $total ?></td>
</tr>
谢谢