[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
                )

        )

)

avatar katup
@katup

2 Kontribusi 0 Poin

Diperbarui 4 tahun yang lalu

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> &lt;table border="1"&gt; &lt;tr&gt; &lt;th rowspan="2"&gt;waktu&lt;/th&gt; &lt;th rowspan="2"&gt;jam&lt;/th&gt; &lt;th colspan="4"&gt;kelas&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;A&lt;/th&gt;&lt;th&gt;B&lt;/th&gt;&lt;th&gt;C&lt;/th&gt;&lt;th&gt;D&lt;/th&gt; &lt;/tr&gt;

&amp;lt;?php
foreach($waktu as $kw=&amp;gt;$vw){
	echo &quot;&amp;lt;tr&amp;gt;&quot;;
		echo &quot;&amp;lt;td rowspan=&#039;&quot;.count($vw).&quot;&#039;&amp;gt;$kw&amp;lt;/td&amp;gt;&quot;;
		foreach($vw as $kvw=&amp;gt;$vvw){
			echo &quot;&amp;lt;td&amp;gt;$vvw[jam]&amp;lt;/td&amp;gt;&quot;;
			switch($vvw[&#039;ruangan&#039;]){
				case &#039;A&#039;:
					echo &quot;&amp;lt;td&amp;gt;$vvw[kode_pelajaran] ($kvw)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&quot;;
					break;
				case &#039;B&#039;:
					echo &quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$vvw[kode_pelajaran] ($kvw)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&quot;;
					break;
				case &#039;C&#039;:
					echo &quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$vvw[kode_pelajaran] ($kvw)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&quot;;
					break;
				case &#039;D&#039;:
					echo &quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$vvw[kode_pelajaran] ($kvw)&amp;lt;/td&amp;gt;&quot;;
					break;
			}
			echo &quot;&amp;lt;/tr&amp;gt;&quot;;
		}		
}
?&amp;gt;

&lt;/table&gt; </pre>

avatar 24361
@24361

17 Kontribusi 9 Poin

Dipost 4 tahun yang lalu

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> &lt;?php foreach($waktu as $kw=&gt;$vw){ foreach($vw as $kvw=&gt;$vvw){ $ruangan[]=$vvw['ruangan']; } } sort($ruangan); $kls_terbesar_ascii = ord($ruangan[count($ruangan)-1]); $jml_kelas= $kls_terbesar_ascii-65 +1 ; ?&gt;

&lt;table border="1"&gt; &lt;tr&gt; &lt;th rowspan="2"&gt;waktu&lt;/th&gt; &lt;th rowspan="2"&gt;jam&lt;/th&gt; &lt;th colspan="&lt;?php echo $jml_kelas;?&gt;"&gt;kelas&lt;/th&gt; &lt;/tr&gt; &lt;?php echo "&lt;tr&gt;"; for($i=0,$kls='A';$i&lt;$jml_kelas;$i++,$kls++){ echo "&lt;th&gt;$kls&lt;/th&gt;"; } echo "&lt;/tr&gt;";

foreach($waktu as $kw=&amp;gt;$vw){
	echo &quot;&amp;lt;tr&amp;gt;&quot;;
		echo &quot;&amp;lt;td rowspan=&#039;&quot;.count($vw).&quot;&#039;&amp;gt;$kw&amp;lt;/td&amp;gt;&quot;;
		foreach($vw as $kvw=&amp;gt;$vvw){
			echo &quot;&amp;lt;td&amp;gt;$vvw[jam]&amp;lt;/td&amp;gt;&quot;;
			
			$ascii = ord($vvw[&#039;ruangan&#039;]);
			$idx = $ascii - 65;
			
			for($i=0;$i&amp;lt;$jml_kelas;++$i){
				if($idx==$i){
					echo &quot;&amp;lt;td&amp;gt;$vvw[kode_pelajaran] ($kvw)&amp;lt;/td&amp;gt;&quot;;
				}else{
					echo &quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&quot;;
				}
			}
			echo &quot;&amp;lt;/tr&amp;gt;&quot;;				
		}		
}
?&amp;gt;

&lt;/table&gt; </pre>

avatar 24361
@24361

17 Kontribusi 9 Poin

Dipost 4 tahun yang lalu

Tanggapan

Ok , gan...saya coba dulu, semoga berhasil.. terima kasih sebelumnya

Login untuk ikut Jawaban