Modifikasi array cara mudah

Kategori: Belajar MySQL
23 minutes
Modifikasi array cara mudah

Suatu saat kita dihadapkan pada pembuatan rekapitulasi di aplikasi berbasis web dan berhadapan dengan array-array yang sulit. Diubah pakai fungsi array bawaan PHP juga sulit. Mengubah query SQL sulit, kalaupun bisa mungkin membebani server databasenya. Pakai view? Mungkin bisa juga tapi kali ini kita akan memodifikasi array dengan cara loop kemudian menjadikannya array baru. Berat di server? gak juga sih..  

Contoh kasusnya gini, kita mempunyai table di database seperi ini:

Kemudian kita ingin menjadikannya seperti ini:

Untuk enaknya langsung kita praktek, bikin databasenya:

CREATE TABLE `nilai` (
  `nim` varchar(255) DEFAULT NULL,
  `nama` varchar(255) DEFAULT NULL,
  `smt` varchar(255) DEFAULT NULL,
  `skor` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `nilai`
--

INSERT INTO `nilai` (`nim`, `nama`, `smt`, `skor`) VALUES
('001', 'ani', '1', '90'),
('001', 'ani', '2', '50'),
('002', 'budi', '1', '85'),
('002', 'budi', '2', '75'),
('003', 'caca', '1', '90'),
('003', 'caca', '2', '95'),
('003', 'caca', '3', '100'),
('004', 'doni', '1', '95'),
('004', 'doni', '2', '65'),
('005', 'eca', '1', '85'),
('006', 'fani', '1', '45'),
('006', 'fani', '2', '87'),
('006', 'fani', '3', '98'),
('006', 'fani', '4', '100'),
('006', 'fani', '5', '55');

Kemudian kode PHPnya seperti ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php

$mysqli = new mysqli("localhost", "root", "", "tanya");

$query  = "SELECT * FROM nilai";
$query2  = "SELECT DISTINCT nim,nama FROM nilai";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {

        $skor[$row['nim']][$row['smt']]= $row['skor'];
    }
    /* free result set */
    $result->free();
}

?>

<table border='1'  cellspacing="0">
  <tr>
    <th>NIM</th>
    <th>NAMA</th>
    <th>SMT 1</th>
    <th>SMT 2</th>
    <th>SMT 3</th>
    <th>SMT 4</th>
    <th>SMT 5</th>
  </tr>

<?php
if ($result2 = $mysqli->query($query2)) {
    while ($r = $result2->fetch_assoc()) {
?>

  <tr>
    <td><?= $r['nim'] ?? '-' ?></td>
    <td><?= $r['nama'] ?? '-' ?></td>
    <td><?= $skor[$r['nim']][1] ?? '-' ?></td>
    <td><?= $skor[$r['nim']][2] ?? '-' ?></td>
    <td><?= $skor[$r['nim']][3] ?? '-' ?></td>
    <td><?= $skor[$r['nim']][4] ?? '-' ?></td>
    <td><?= $skor[$r['nim']][5] ?? '-' ?></td>
  </tr>
<?php

        $skor[$row['nim']][$row['smt']]= $row['skor'];
    }
    /* free result set */
    $result2->free();
}
?>
</table>

<?php
/* close connection */
$mysqli->close();

?>

Sangat sederhana khan? 
Semoga membantu.