PHP和MYSQL使用条件语句在HTML中创建表

PHP和MYSQL使用条件语句在HTML中创建表,php,mysql,if-statement,Php,Mysql,If Statement,我有一张桌子 kode_propinsi | nama_satker | kode_satker 500 | A | 1 500 | B | 2 500 | C | 3 500 | D | 4 另请参阅表tb_上载 kode_propinsi | kode_satker | month 500

我有一张桌子

kode_propinsi | nama_satker  |  kode_satker
500           | A            |  1
500           | B            |  2
500           | C            |  3
500           | D            |  4
另请参阅表tb_上载

kode_propinsi | kode_satker  |  month
500           | A            |  1
500           | A            |  2
500           | B            |  3
我想创建php和mysql代码来生成如下表

No | UPT | Jan | Feb | Mar | Apr | Mei | Jun | Jul | Ags | Sep | Okt | Nov | Des
1  | A   | 1   | 2   | 0   | 0   | 0   | 0   | 0   |  0  | 0   | 0   | 0   | 0
2  | B   | 0   | 0   | 3   | 0   | 0   | 0   | 0   |  0  | 0   | 0   | 0   | 0
3  | C   | 0   | 0   | 0   | 0   | 0   | 0   | 0   |  0  | 0   | 0   | 0   | 0
4  | D   | 0   | 0   | 0   | 0   | 0   | 0   | 0   |  0  | 0   | 0   | 0   | 0
这是我的php代码,它的工作是创建主表,在这里的活代码

但是,如果没有值(0),如何生成包含非活动图像的表,如果月份填充了值(1/2/3/4…等),如何生成包含活动图像的表

这是创建表的php代码

$result = mysql_query($view);
$jumlah=mysql_num_rows($result);
            $nomor=0;
    while
            ($baris=mysql_fetch_array($result))
            {
            $namasatker=$baris['nama_satker'];
            $kodepropinsi=$baris['kode_propinsi'];
            $bulanisi=$baris['bulan'];
            $nomor=$nomor+1;

?>
                                        <tr>
                                            <td><? echo $nomor;?></td>
                                            <td><? echo $namasatker;?></td>
                                            <td><? if($bulanisi==1){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==2){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==3){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==4){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==5){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==6){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==7){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==8){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==9){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==10){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==11){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>
                                            <td><? if($bulanisi==12){?>1<img src="images/active.png"><? } else {?><img src="images/inactive.png">0<? }?></td>


            <? }?>
                        </tr>

我认为这并不难,在圈内,你可以把这些值放进去:

<tr>
<td><? echo $nomor;?></td>
<td><? echo $namasatker;?></td>
<td><?php if ($baris['month'] == 1) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 2) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 3) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 4) echo '<img src="images/inactive.png">'; ?></td>
...
首先,
用于标题,因此应该只指定一次(在您的情况下,在
中)。对于其余部分,您必须使用
标记

其次,select语句没有提供所需的任何数据。创建包含两个表中数据的单独表(最简单的方法)或使用join(有点挑战性)

可能连接的示例(不完美,不确定是否完全100%正确):

它应该为您提供包含几乎所有您需要的内容的行。之后,你们需要研究如何处理结果,我把它留给你们。(可能使用GROUP BY?)只需在HaidiSQL或任何其他SQL工具中运行此语句,并检查它提供的结果

谈论你的主要问题。在你的while循环中,你需要12条if语句,理论上这些语句应该能解决你的问题。 比如说

<?while
($baris=mysql_fetch_array($result))
{
... fetching code here ...
?>
    <tr>
        <th><? echo $nomor;?></th>
        <th><? echo $nama_satker;?></th>
        <th><? if ($jan == 0) echo '<img src="images/inactive.png">' else echo '<img src="images/active'.$jan.'.png">'; ?></th>'
        ... ^ similar to line before...
    </tr>
<? }?>

'
... ^ 类似于之前的行。。。

还应注意键入(?)和关闭标记的位置。

th
用于
thead
,在
tbody
中使用
td
…是的,我在数据库中没有月字段列表,只有tbu上传的单月值1,因为它显示satker A上传了第1个月(1月)和第2个月(2月)的数据,抱歉,如果它没有回答您的问题您好抱歉,我已经更新了我的进度检查我的问题使用您的方式,但坚持多值,检查我的链接
$view = "
SELECT 
$tb_satker.kode_propinsi, $tb_satker.nama_satker, $tb_satker.kode_satker,
max(case when tb_upload.bulan=1 then tb_upload.path else 0 end) as jan,
max(case when tb_upload.bulan=2 then tb_upload.path else 0 end) as feb, 
max(case when tb_upload.bulan=3 then tb_upload.path else 0 end) as mar,
max(case when tb_upload.bulan=4 then tb_upload.path else 0 end) as apr,
max(case when tb_upload.bulan=5 then tb_upload.path else 0 end) as mei,
max(case when tb_upload.bulan=6 then tb_upload.path else 0 end) as jun,
max(case when tb_upload.bulan=7 then tb_upload.path else 0 end) as jul,
max(case when tb_upload.bulan=8 then tb_upload.path else 0 end) as ags,
max(case when tb_upload.bulan=9 then tb_upload.path else 0 end) as sep,
max(case when tb_upload.bulan=10 then tb_upload.path else 0 end) as okt,
max(case when tb_upload.bulan=11 then tb_upload.path else 0 end) as nov,
max(case when tb_upload.bulan=12 then tb_upload.path else 0 end) as des
FROM $tb_satker
LEFT JOIN $tb_upload ON $tb_satker.kode_satker = $tb_upload.kode_satker
WHERE $tb_satker.kode_propinsi ='$propinsi'
GROUP BY kode_satker";
<tr>
<td><? echo $nomor;?></td>
<td><? echo $namasatker;?></td>
<td><?php if ($baris['month'] == 1) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 2) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 3) echo '<img src="images/inactive.png">'; ?></td>
<td><?php if ($baris['month'] == 4) echo '<img src="images/inactive.png">'; ?></td>
...
<td><?php  if(in_array(1, $kode_month)) echo '<img src="images/inactive.png">'; ?></td>
<td><?php  if(in_array(2, $kode_month)) echo '<img src="images/inactive.png">'; ?></td>
...
SELECT * FROM $tb_satker a LEFT JOIN $tb_upload b where a.kode_propinsi = b.kode_propinsi, a.name_satker = b.kode_satker
<?while
($baris=mysql_fetch_array($result))
{
... fetching code here ...
?>
    <tr>
        <th><? echo $nomor;?></th>
        <th><? echo $nama_satker;?></th>
        <th><? if ($jan == 0) echo '<img src="images/inactive.png">' else echo '<img src="images/active'.$jan.'.png">'; ?></th>'
        ... ^ similar to line before...
    </tr>
<? }?>