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>
<? }?>