Postingan lainnya
Kelas Premium!
Belajar bikin website dari nol sekarang
Gunakan kupon "lebihcepat" untuk diskon 25%!
[ask] membuat tampilan tabel dari php multidimentional array
Halo,
Perkenalkan nama saya irwan, saya ingin menampilkan tabel html dari multidimensional array php, yg bentuknya kira2 seperti ini:
|-----------|-----------|----------|----------|---------|
|Waktu |Jam | Kelas |
| | |----------|----------|---------|
| | | A | B | C |
|-----------|-----------|----------|----------|---------|
| Senin | 7.30-8.30 | Mat (G1) | | |
| | 8.30-9.30 | Mat (G1) | Fis (G2) | Bio (H1)|
| |10.00-11.00| Kim (F1) | Fis (G2) | Bio (H1)|
| |11.00-12.00| Kim (F1) | | |
|-----------|-----------|----------|----------|---------|
| | 7.30-8.30 | | Mat (G1) | |
| Selasa | 8.30-9.30 | | Mat (G1) | |
| |10.00-11.00| Bio (G2) | | Fis (F1)|
| |11.00-12.00| Bio (G2) | | Fis (F1)|
....
|-------------------------------------------------------|
Hasil dari database dibuatkan lagi array untuk keperluan seperti diatas. Tapi untuk menghasilkan tabel seperti itu, sya masih bingung caranya. Jika hanya menampilkan Jam tanpa nama Hari sudah bisa saya lakukan, tapi untuk menambahkan hari sya masih bingung. Ini contoh arraynya :
$kolom = [];
$waktu = [];
foreach($jadwal AS $row)
{
// $jadwal hasil query database
// F, G, H (nama ruangan)
// A, B, C (nama golongan/kelas)
if(!in_array($row->nama_kelas, $kolom))
{
$kolom[] = $row->nama_kelas;
}
$waktu[$row->hari][$row->nama_kelas] = ['jam' => $row->waktu,'ruangan' => $row->ruangan,
'kode_pelajaran' => $row->kode_pelajaran];
}
Semoga ada yang bisa membantu. Terima kasih sebelumnya.
EDIT: TAMBAHAN HASIL ARRAY
Array
(
[SENIN] => Array
(
[E-1] => Array
(
[jam] => 11:00-12:00
[ruangan] => A
[kode_pelajaran] => FIS-1
)
[E-2] => Array
(
[jam] => 08:30-09:30
[ruangan] => D
[kode_pelajaran] => FIS-1
)
[AV-2] => Array
(
[jam] => 11:00-12:00
[ruangan] => C
[kode_pelajaran] => FIS-1
)
)
[SELASA] => Array
(
[D-1] => Array
(
[jam] => 16:00-17:00
[ruangan] => D
[kode_pelajaran] => FIS-1
)
[AV-1] => Array
(
[jam] => 11:00-12:00
[ruangan] => B
[kode_pelajaran] => FIS-1
)
)
)
Tanggapan
isi array kamu sekarang seperti apa? kita ngga tahu, coba perlihatakan diatas
2 Jawaban:
asumsinya E-1,E-2, dst adalah yg ada di dalam kurung (). A,B,C, dst adalah nama kelas. <pre> <table border="1"> <tr> <th rowspan="2">waktu</th> <th rowspan="2">jam</th> <th colspan="4">kelas</th> </tr> <tr> <th>A</th><th>B</th><th>C</th><th>D</th> </tr>
&lt;?php
foreach($waktu as $kw=&gt;$vw){
echo "&lt;tr&gt;";
echo "&lt;td rowspan='".count($vw)."'&gt;$kw&lt;/td&gt;";
foreach($vw as $kvw=&gt;$vvw){
echo "&lt;td&gt;$vvw[jam]&lt;/td&gt;";
switch($vvw['ruangan']){
case 'A':
echo "&lt;td&gt;$vvw[kode_pelajaran] ($kvw)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;";
break;
case 'B':
echo "&lt;td&gt;&lt;/td&gt;&lt;td&gt;$vvw[kode_pelajaran] ($kvw)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;";
break;
case 'C':
echo "&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;$vvw[kode_pelajaran] ($kvw)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;";
break;
case 'D':
echo "&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;$vvw[kode_pelajaran] ($kvw)&lt;/td&gt;";
break;
}
echo "&lt;/tr&gt;";
}
}
?&gt;
</table> </pre>
Tanggapan
x Terima kasih sudah memberikan jawaban. Tapi format tabel sudah seperti yang sya jelaskan dan tampilan tabel yang ingin dibuat seperti pertanyaan di atas gan... Semua data dinamis gan, diambil dr database jadi penggunaan switch tidak cocok untuk situasi disini
kalau mau dinamis kira2 gini
<pre> <?php foreach($waktu as $kw=>$vw){ foreach($vw as $kvw=>$vvw){ $ruangan[]=$vvw['ruangan']; } } sort($ruangan); $kls_terbesar_ascii = ord($ruangan[count($ruangan)-1]); $jml_kelas= $kls_terbesar_ascii-65 +1 ; ?>
<table border="1"> <tr> <th rowspan="2">waktu</th> <th rowspan="2">jam</th> <th colspan="<?php echo $jml_kelas;?>">kelas</th> </tr> <?php echo "<tr>"; for($i=0,$kls='A';$i<$jml_kelas;$i++,$kls++){ echo "<th>$kls</th>"; } echo "</tr>";
foreach($waktu as $kw=&gt;$vw){
echo "&lt;tr&gt;";
echo "&lt;td rowspan='".count($vw)."'&gt;$kw&lt;/td&gt;";
foreach($vw as $kvw=&gt;$vvw){
echo "&lt;td&gt;$vvw[jam]&lt;/td&gt;";
$ascii = ord($vvw['ruangan']);
$idx = $ascii - 65;
for($i=0;$i&lt;$jml_kelas;++$i){
if($idx==$i){
echo "&lt;td&gt;$vvw[kode_pelajaran] ($kvw)&lt;/td&gt;";
}else{
echo "&lt;td&gt;&lt;/td&gt;";
}
}
echo "&lt;/tr&gt;";
}
}
?&gt;
</table> </pre>
Tanggapan
Ok , gan...saya coba dulu, semoga berhasil.. terima kasih sebelumnya