在数据库中,某些课程值为NULL,我不想打印具有NULL值的课程。 我不知道如何在php或mysql中实现这一点。我需要这样的东西:
if(course1!=NULL || course2!=NULL || course3!=NULL || course4!=NULL){
// echo course1; echo course2; echo course3; echo course4; }
数据库如下所示:
检查课程是A,B,C,D,E还是F的remark()函数无法正常工作。 我希望remark()函数在等级上输出Excellent,Credit,Pass或fail。
以下是代码:
function remark(){
global $mathematics, $physics, $chemistry, $lang;
if($mathematics=='A' || $physics=='A' || $chemistry=='A' || $lang=='A'){
$remark = "Excellent";
}
elseif($mathematics=='B' || $physics=='B' || $chemistry=='B' || $lang=='B' || $mathematics=='C' || $physics=='C' || $chemistry=='C' || $lang=='C'){
$remark = "Credit";
}
elseif($mathematics=='D' || $physics=='D' || $chemistry=='D' || $lang=='D' || $mathematics=='E' || $physics=='E' || $chemistry=='E' || $lang=='E'){
$remark = "Pass";
}
else{
$remark = "Fail";
}
return $remark;
}
if(isset($_POST['student_id']) && !empty($_POST['student_id'])){$student_id = $_POST['student_id'];
$check = "SELECT * FROM sample1 WHERE student_id='$student_id'";
$check_query = mysqli_query($connection, $check);
if(mysqli_num_rows($check_query)>0){
while($query_row = mysqli_fetch_assoc($check_query)){
$mathematics = $query_row['mathematics'];
$physics = $query_row['physics'];
$chemistry = $query_row['chm'];
$lang = $query_row['lang'];
echo "<table border=1 width=50%>
<tr> <td>Name: ".$query_row['name']." </td>
<td>Student Id: ".$query_row['student_id']."</td>
<td>Level: ".$query_row['level']."</td>
</tr>
<tr>
<th> Course </th>
<th> Grade </th>
<th> Remark </th>
</tr>
<tr> <td>Mathematics </td> <td>".$mathematics." </td></td> <td>".remark()." </td></tr>
<tr> <td>Physics </td> <td>".$physics."</td> </td><td>".remark()." </td></tr>
<tr> <td>Chemistry </td> <td>".$chemistry."</td> </td><td>".remark()." </td></tr>
<tr> <td>Language </td> <td>".$lang."</td> </td><td>".remark()." </td></tr>
</table>";
}
}
else{echo "Record not found";}
}
答案 0 :(得分:1)
关于MYSQL非null值,您可以使用:
SELECT * FROM yourtable WHERE course1 IS NOT NULL
因此,IS NOT NULL将为您提供查询,其中该列(course1)不为null。 Here更多信息。
对于PHP,您的remark()
函数有错误的方法。我会给你一个对你的家伙来说是正确的。
function remark($course){
switch($course) {
case 'A':
return 'Excellent';
break;
case 'B':
case 'C':
return 'Credit';
break;
case 'D':
case 'E':
return 'Pass';
break;
default:
return 'Fail';
break;
}
}
因此,在HTML表格中,您可以为每个课程执行此操作:
while ($query_row = mysqli_fetch_assoc($check_query)) {
$mathematics = $query_row['mathematics'];
$physics = $query_row['physics'];
$chemistry = $query_row['chm'];
$lang = $query_row['lang'];
echo "<table border=1 width=50%>
<tr> <td>Name: " . $query_row['name'] . " </td>
<td>Student Id: " . $query_row['student_id'] . "</td>
<td>Level: " . $query_row['level'] . "</td>
</tr>
<tr>
<th> Course </th>
<th> Grade </th>
<th> Remark </th>
</tr>"
if(!is_null($mathematics)) echo "<tr> <td>Mathematics </td> <td>" . $mathematics . " </td></td> <td>" . remark($mathematics) . " </td></tr>";
if(!is_null($physics)) echo "<tr> <td>Physics </td> <td>" . $physics . "</td> </td><td>" . remark($physics) . " </td></tr>";
if(!is_null($chemistry)) echo "<tr> <td>Chemistry </td> <td>" . $chemistry . "</td> </td><td>" . remark($chemistry) . " </td></tr>";
if(!is_null($lang)) echo "<tr> <td>Language </td> <td>" . $lang . "</td> </td><td>" . remark($lang) . " </td></tr>";
echo "</table>";
}
答案 1 :(得分:1)
第一个问题的快速回答延伸@ P0IT10n(?)的答案:
<?php
if(!is_null($mathematics)) {
?>
<tr> <td>Mathematics </td> <td>".$mathematics." </td></td> <td>".remark($mathematics)." </td></tr>
<?php
}
?>
// repeat for other courses
<强> BUT 强>
重新考虑您的数据库结构
一旦你有了另一门课程,你就得到了... ***
课程应该有自己的表,结果是另一个
阅读有关数据库规范化的信息!
修改强>
另一个延伸:
如果你有这样的数组会更容易:
$remarks = array('A'=>'Excellent', 'B'=>'Good',...);
那么你不需要使用开关的额外功能,你需要做的就是:
echo $remarks[$mathematics]; // -> Excellent