Bagi yang baru belajar bahasa pemrograman, entah apapun bahasanya maka bisa dipastikan akan melakukan hal ini: meletakkan query database di dalam loop (perulangan).
Hal ini juga terjadi bagi sebagian programmer yang sudah lama mengerti tentang programming dan malah sudah diposting pada blog mereka!!!
Hal ini harus diantisipasi sejak awal.. kenapa? karena jika aplikasi sudah kompleks maka bisa dipastikan akan “lelah” untuk memperbaikinya, untuk itu mari kita antisipasi sejak dini..
Kembali ke topik…
Apa maksud Query MySQL di Dalam Loop PHP? ya sesuai artinya, kita mengeksekusi query mysql di dalam perulangan PHP, bisa jadi perulangan for, while, dan foreach…
Query yang dimaksud disini adalah semua statemen SQL ( baik SELECT
, INSERT
, maupun UPDATE
) kecuali DELETE
.
Agar tidak terlalu panjang, kita batasi pembahasan hanya pada statemen yang sering digunakan, yaitu: INSERT
dan SELECT
.
I. Query Insert MySQL Pada Perulangan PHP
Pada bagian pertama ini, kita bahas query INSERT
di dalam loop PHP.
Langsung saja, kita bahas beberapa kasus…
Studi Kasus #1
Beberapa waktu lalu saya mendapat email dari pengunjung web ini dengan permasalahan kurang lebih seperti ini:
Rekan kita ingin memasukkan data sebanyak kurang lebih 400 data, namun baru sampai data ke 8, data tidak mau masuk, tidak ada pesan kesalahan apapun….!!!
Lantas dimana kesalahannya?
Ketika saya melihat kode yang ada, saya langsung cari apakah ada query insert di dalam loop? dan ternyata ada!!! Saya langsung tahu, pasti disini masalahnya, kodenya kurang lebih seperti ini:
...
<tbody>
<?php
$urut = 0;
for ($i=0;$i<count($hasilrangking);$i++){
?>
<tr>
<td><?php echo $urut=($i+1);?></td>
<td><?php echo $alternatifrangking[$i];?></td>
<td><?php echo number_format($hasilrangking[$i],4); ?></td>
</tr>
<tbody>
<?php
$sql="INSERT INTO ranking_saw (nama, hasil, rankingsaw) VALUES
('".$alternatifrangking[$i]."','".$hasilrangking[$i]."','".$urut."')";
mysql_query($sql);
}?>
</tbody>
...
Sudah terlihat kan kesalahannya dimana?
Yup, betul sekali, ada fungsi mysql_query
di dalam loop for
, jika banyaknya loop ada 400, maka akan ada 400 statemen INSERT
, bagaimana jika 1.000?
Dampaknya?
Overhead!!!, server MySQL Anda akan hang…. proses insert akan berhenti dan data tidak masuk.
Solusinya?
Lantas bagaimana solusinya?
Solusinya, gunakan hanya sekali statemen INSERT
untuk banyak row sekaligus, format SQL Querynya adalah sebagai berikut:
INSERT INTO tabel (col1, col2, col3) VALUES (val1, val2, val3), (val1, val2, val3), ...
Bagaimana penerapannya pada PHP? Caranya, gunakan loop untuk menyusun query INSERT
nya, setelah itu eksekusi query tersebut.
Perhatikan script berikut:
...
<tbody>
<?php
$sql="INSERT INTO ranking_saw (nama, hasil, rankingsaw) VALUES ";
$urut = 0;
for ($i=0;$i<count($hasilrangking);$i++)
{?>
<tr>
<td><?php echo $urut=($i+1);?></td>
<td><?php echo $alternatifrangking[$i];?></td>
<td><?php echo number_format($hasilrangking[$i],4); ?></td>
</tr>
<?php
$sql .= "('".$alternatifrangking[$i]."','".$hasilrangking[$i]."','".$urut."'), ";
}
$sql = rtrim($sql, ', ');
mysql_query($sql);
?>
</tbody>
...
Pada script diatas, loop for
akan membentuk query berikut:
$sql='INSERT INTO ranking_saw (nama, hasil, rankingsaw) VALUES ("..." , "..." , "..."), ("..." , "..." , "..."), ...';
Selanjutnya, kita hanya perlu mengeksekusi satu statement INSERT
tersebut…
INSERT
, maka kita perlu memperhatikan kekuatan server, untuk amannya, maksimal 3.000 data sekali insert, jika lebih dari itu, buat statemen INSERT
yang baru Studi Kasus #2
Kasus kedua ini berkaitan dengan form input HTML, perhatikan script berikut:
<?php
if($_POST['submit']){
$conn = mysqli_connect('localhost', 'root', '', 'universitas');
foreach ($_POST['matkul'] AS $kd_matkul) {
$sql = 'INSERT INTO mahasiswa_matkul (nim, kd_matkul) VALUES ("'.$_POST['nim'].'", "'.$kd_matkul.'")';
$insert = mysqli_query($conn, $sql);
}
}
Data tersebut akan memasukkan data mata kuliah yang dipilih oleh mahasiswa.
Model seperti ini banyak kita temui di internet, jika penasaran googling sendiri ya…
Apakah ada yang salah dengan kode ini?
Tidak…. kode ini 100% work dan berjalan dengan baik.
Lalu, dimana letak kesalahannya?
Dengan script diatas, jika data yang diinput sedikit, tidak masalah, namun jika datanya banyak, maka akan berpotensi menimbulkan masalah serius.
Kenapa?
Karena kita mengeksekusi statemen INSERT
berkali kali sebanyak perulangan yang ada, seperti yang terjadi pada Kasus #1
Lalu seharusnya seperti apa?
Sama seperti Kasus #1, perhatikan query berikut:
<?php
if($_POST['submit']) {
$conn = mysqli_connect('localhost', 'root', '', 'universitas');
$sql = 'INSERT INTO mahasiswa_matkul (nim, kd_matkul) VALUES ';
foreach ($_POST['matkul'] AS $kd_matkul) {
$sql .= '("'.$_POST['nim'].'", "'.$kd_matkul.'"),';
}
$sql .= rtrim($sql, ',');
$insert = mysqli_query($conn, $sql);
}
Pada query diatas, kita hanya mengeksekusi satu perintah sql, berapapun jumlah data yang mahasiswa yang akan dimasukkan…
II. Perulangan Query Select Pada PHP Loop
Pada bagian kedua ini kita akan membahas query SELECT didalam loop PHP
Ada ya bentuk seperti itu?
Ada, dan ini riil terjadi dilapangan, coba Anda googling sendiri ya….
Studi Kasus #1
Pada contoh kasus pertama ini kita akan menampilkan data kategori beserta sub kategorinya, misal kita memiliki tabel kategori sebagai berikut:
+-------------+------------------+--------+
| id_kategori | nama_kategori | parent |
+-------------+------------------+--------+
| 1 | Kategori 1 | 0 |
| 2 | Kategori 2 | 0 |
| 3 | Kategori 3 | 0 |
| 4 | Kategori 4 | 0 |
| 5 | Kategori 5 | 0 |
| 6 | Sub Kategori 1-1 | 1 |
| 7 | Sub Kategori 1-2 | 1 |
| 8 | Sub Kategori 1-3 | 1 |
| 9 | Sub Kategori 1-4 | 1 |
| 10 | Sub Kategori 1-5 | 1 |
| 11 | Sub Kategori 1-6 | 1 |
| 12 | Sub Kategori 4-1 | 4 |
| 13 | Sub Kategori 4-2 | 4 |
| 14 | Sub Kategori 4-3 | 4 |
| 15 | Sub Kategori 4-4 | 4 |
| 16 | Sub Kategori 4-5 | 4 |
| 17 | Sub Kategori 2-1 | 2 |
| 18 | Sub Kategori 2-2 | 2 |
| 19 | Sub Kategori 2-3 | 2 |
| 20 | Sub Kategori 2-4 | 2 |
| 21 | Sub Kategori 2-5 | 2 |
| 22 | Sub Kategori 3-1 | 3 |
| 23 | Sub Kategori 3-2 | 3 |
| 24 | Sub Kategori 3-3 | 3 |
| 25 | Sub Kategori 3-4 | 3 |
| 26 | Sub Kategori 3-5 | 3 |
| 27 | Sub Kategori 3-6 | 3 |
| 28 | Sub Kategori 5-1 | 5 |
| 29 | Sub Kategori 5-2 | 5 |
| 30 | Sub Kategori 5-3 | 5 |
| 31 | Sub Kategori 5-4 | 5 |
| 32 | Sub Kategori 5-5 | 5 |
+-------------+------------------+--------+
Format output yang kita inginkan adalah:
<ul class="main-category">
<li>Kategori 1
<ul>
<li>Sub Kategori 1-1</li>
<li>Sub Kategori 1-2</li>
<li>Sub Kategori 1-3</li>
<li>Sub Kategori 1-4</li>
<li>Sub Kategori 1-5</li>
<li>Sub Kategori 1-6</li>
</ul>
</li>
<li>Kategori 2
<ul>
<li>Sub Kategori 2-1</li>
<li>Sub Kategori 2-2</li>
<li>Sub Kategori 2-3</li>
<li>Sub Kategori 2-4</li>
<li>Sub Kategori 2-5</li>
</ul>
</li>
<li>Kategori 3
<ul>
<li>Sub Kategori 3-1</li>
<li>Sub Kategori 3-2</li>
<li>Sub Kategori 3-3</li>
<li>Sub Kategori 3-4</li>
<li>Sub Kategori 3-5</li>
<li>Sub Kategori 3-6</li>
</ul>
</li>
<li>Kategori 4
<ul>
<li>Sub Kategori 4-1</li>
<li>Sub Kategori 4-2</li>
<li>Sub Kategori 4-3</li>
<li>Sub Kategori 4-4</li>
<li>Sub Kategori 4-5</li>
</ul>
</li>
<li>Kategori 5
<ul>
<li>Sub Kategori 5-1</li>
<li>Sub Kategori 5-2</li>
<li>Sub Kategori 5-3</li>
<li>Sub Kategori 5-4</li>
<li>Sub Kategori 5-5</li>
</ul>
</li>
</ul>
Nah, bagaimana script yang seharusnya kita buat?
Kebanyakan akan membuat script seperti ini:
$conn = mysqli_connect('localhost', 'root', '', 'tutorial_web');
$sql = 'SELECT * FROM kategori WHERE parent = 0';
$query = mysqli_query($conn, $sql);
$first = true;
$html = '<ul class="main-category">';
while($row = mysqli_fetch_array($query))
{
$html .= '<li>' . $row['nama_kategori'] . '<ul>';
$sql_subkat = 'SELECT nama_kategori FROM kategori WHERE parent = ' . $row['id_kategori'];
$query_subkat = mysqli_query($conn, $sql);
while($row_subkat = mysqli_fetch_array($query_subkat)) {
$html .= '<li>' . $row_subkat['nama_kategori'] . '</li>';
}
$html .= '</ul></li>';
}
$html .= '</ul>';
echo $html;
Kenapa?
Karena mudah dilogika, betul? yup memang betul, alurnya mudah di mengerti, sehingga alur logikanya mudah disusun.
Apakah Anda juga seperti itu? jika ya, tidak apa apa? karena sebentar lagi Anda akan selangkah lebih maju dari rekan Anda.
Baiklah, mari kita hitung ada berapa query yang akan di eksekusi oleh MySQL: 1 untuk kategori, dan 5 untuk sub kategori, total ada 6, bagaimana jika ada ribuan user yang mengakses aplikasi/web anda…?
Belum lagi jika di bagian lain dari aplikasi kita terdapat hal serupa (kasus #2), tambah berat lagi kinerja database kita…
Seharusnya bagaimana?
Solusi
Untuk model data berjenjang seperti pada contoh diatas, gunakan recursive, perhatikan contoh script versi saya berikut ini:
<?php
$conn = mysqli_connect('localhost', 'root', '', 'tutorial_web');
$sql = 'SELECT id_kategori, nama_kategori, parent FROM kategori';
$query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($query))
{
$tmp[$row['id_kategori']]['nama_kategori'] = $row['nama_kategori'];
if ($row['parent'] == 0) {
$data[$row['id_kategori']] = &$tmp[$row['id_kategori']];
}
else {
$tmp[$row['parent']]['child'][$row['id_kategori']] = &$tmp[$row['id_kategori']];
}
}
function build_cat($array, $child = false) {
$html = '<ul>';
foreach ($array as $arr) {
$html .= '<li>' . $arr['nama_kategori'];
if (key_exists('child', $arr)) {
$html .= build_cat($arr['child'], true);
}
$html .= '</li>' . "\r\n";
}
$html .= '</ul>';
return $html;
}
echo build_cat($data);
Pada contoh diatas, kita hanya perlu mengeksekusi satu perintah SQL untuk memperoleh hasil yang sama persis, jauh lebih sedikit dari sebelumnya yang perlu mengeksekusi enam perintah SQL
Jauh lebih efisien bukan?
Studi Kasus #2
Contoh kasus lainnya adalah ketika kita ingin menampilkan data artikel beserta kategorinya dengan kriteria: setiap kategori akan menampilkan 5 artikel terbaru yang diurutkan berdasarkan tanggal terbit.
Familiar dengan model ini? yup… model ini sering kita jumpai pada portal berita, seperti republika, vivanews, dll, atau pada web ecommerce untuk menampilkan item per kategori.
Untuk contoh datanya, kita gunakan tabel kategori pada contoh kasus sebelumnya dan kita gunakan tabel artikel dengan data sebagai berikut:
+------------+---------------+-------------+------------+
| id_artikel | judul_artikel | id_kategori | tgl_terbit |
+------------+---------------+-------------+------------+
| 1 | Artikel 1-1 | 1 | 2017-06-01 |
| 2 | Artikel 1-2 | 1 | 2017-06-02 |
| 3 | Artikel 1-3 | 1 | 2017-06-05 |
| 4 | Artikel 1-4 | 1 | 2017-06-04 |
| 5 | Artikel 1-5 | 1 | 2017-06-06 |
| 6 | Artikel 2-1 | 2 | 2017-05-04 |
| 7 | Artikel 2-2 | 2 | 2017-05-03 |
| 8 | Artikel 2-3 | 2 | 2017-05-13 |
| 9 | Artikel 2-4 | 2 | 2017-05-07 |
| 10 | Artikel 2-5 | 2 | 2017-05-22 |
| 11 | Artikel 3-1 | 3 | 2017-05-04 |
| 12 | Artikel 3-2 | 3 | 2017-05-01 |
| 13 | Artikel 3-3 | 3 | 2017-05-05 |
| 14 | Artikel 3-4 | 3 | 2017-05-10 |
| 15 | Artikel 3-5 | 3 | 2017-05-01 |
| 16 | Artikel 4-1 | 4 | 2017-04-01 |
| 17 | Artikel 4-2 | 4 | 2017-04-02 |
| 18 | Artikel 4-3 | 4 | 2017-03-30 |
| 19 | Artikel 4-4 | 4 | 2017-04-24 |
| 20 | Artikel 4-5 | 4 | 2017-03-11 |
| 21 | Artikel 5-1 | 5 | 2017-03-01 |
| 22 | Artikel 5-2 | 5 | 2017-03-07 |
| 23 | Artikel 5-3 | 5 | 2017-03-02 |
| 24 | Artikel 5-4 | 5 | 2017-03-17 |
| 25 | Artikel 5-5 | 5 | 2017-03-04 |
+------------+---------------+-------------+------------+
Hasil yang diharapkan adalah seperti ini:
<ul class="artikel">
<li>Kategori 1
<ul>
<li>Artikel 1-5</li>
<li>Artikel 1-3</li>
<li>Artikel 1-4</li>
<li>Artikel 1-2</li>
<li>Artikel 1-1</li>
</ul>
</li>
<li>Kategori 2
<ul>
<li>Artikel 2-5</li>
<li>Artikel 2-3</li>
<li>Artikel 2-4</li>
<li>Artikel 2-1</li>
<li>Artikel 2-2</li>
</ul>
</li>
<li>Kategori 3
<ul>
<li>Artikel 3-4</li>
<li>Artikel 3-3</li>
<li>Artikel 3-1</li>
<li>Artikel 3-2</li>
<li>Artikel 3-5</li>
</ul>
</li>
<li>Kategori 4
<ul>
<li>Artikel 4-4</li>
<li>Artikel 4-2</li>
<li>Artikel 4-1</li>
<li>Artikel 4-3</li>
<li>Artikel 4-5</li>
</ul>
</li>
<li>Kategori 5
<ul>
<li>Artikel 5-4</li>
<li>Artikel 5-2</li>
<li>Artikel 5-5</li>
<li>Artikel 5-3</li>
<li>Artikel 5-1</li>
</ul>
</li>
</ul>
Bagaimana query yang seharusnya kita buat?
atau…
Anda coba bayangkan sejenak query seperti apa yang akan Anda buat?
Kebanyakan akan membuat query seperti ini:
<?php
$conn = mysqli_connect('localhost', 'root', '', 'tutorial_web');
$sql = 'SELECT id_kategori, nama_kategori, parent FROM kategori WHERE parent = 0';
$query = mysqli_query($conn, $sql);
$html = '<ul class="artikel">';
while($row = mysqli_fetch_array($query)) {
$sql_artikel = 'SELECT judul_artikel
FROM artikel
WHERE kategori = '.$row['id_kategori'] . '
ORDER BY tgl_terbit DESC
LIMIT 3';
$query_artikel = mysqli_query($conn, $sql_artikel);
$html .= '<li>' . $row['nama_kategori'] . '<ul>';
while($row_artikel = mysqli_fetch_array($query_artikel)) {
$html .= '<li>' . $row_artikel['judul_artikel'] . '</li>';
}
$html .= '</ul></li>';
}
$html .= '</ul>';
echo $html;
Kenapa?
Ya sama seperti contoh sebelumnya.. alur query diatas mudah dimengerti dan dicerna sehingga mudah membuat alur logikanya…
Apakah Anda juga seperti itu? Jika ya, tidak apa-apa sebentar lagi skill Anda akan lebih mumpuni dibanding yang lain.
Baiklah coba kita hitung berapa query yang akan dieksekusi: 1 untuk kategori dan 5 untuk artikel, totalnya 6. Jika ditambah dengan contoh sebelumnya jumlahnya 12, jika di kali 1.000 user, maka sudah 12.000 eksekusi query.
Seharusnya bagaimana?
Solusi…
Coba perhatikan query versi saya berikut ini:
$conn = mysqli_connect('localhost', 'root', '', 'tutorial_web');
$sql = 'SELECT nama_kategori, judul_artikel, tgl_terbit
FROM
( SELECT id_kategori, nama_kategori, judul_artikel, tgl_terbit,
IF ( @curr_idkat = id_kategori, @urut := @urut + 1, @urut := 1) AS urut,
IF ( @curr_idkat != id_kategori, @curr_idkat := id_kategori, NULL) AS curr
FROM artikel
LEFT JOIN kategori USING(id_kategori)
ORDER BY id_kategori, tgl_terbit DESC
) AS tmp
WHERE urut <= 3';
$query = mysqli_query($conn, $sql);
$curr_cat = '';
$html = '<ul class="news">';
$first = true;
while ($row = mysqli_fetch_array($query))
{
if ($curr_cat != $row['nama_kategori']) {
$curr_cat = $row['nama_kategori'];
$close_tag = '</ul></li>';
if ($first) {
$close_tag = '';
$first = false;
}
$html .= $close_tag . '<li>' . $row['nama_kategori'] . '<ul>';
}
$html .= '<li>' . $row['judul_artikel'] . '</li>';
}
$html .= '</ul></li></ul>';
echo $html;
Lebih rumit?
Yup, bagi sebagian orang query diatas lebih rumit, tetapi jika mindset Anda sudah terbentuk, Anda akan berusaha bagaimana caranya membuat aplikasi se-efisien mungkin terutama dari sisi database.
Pada contoh script diatas, kita hanya perlu mengeksekusi satu perintah SQL, dibanding cara sebelumnya yang perlu mengeksekusi enam perintah SQL..
Bagaimana jika kategorinya 10… ?
Query kedua tetap hanya perlu satu kali eksekusi perintah SQL, sedangkan cara kedua? Anda tinggal mengalikan saja…
III. Perulangan Query Update Pada PHP Loop
Terkadang kita perlu melakukan updating data dengan kriteria yang ada di dalam loop. Dalam kondisi tertentu model updating data ini tidak dapat terelakkan, sehigga terkadang tidak ada cara lain untuk melakukan optimasi.
Namun demikian, pada kondisi tertentu query update didalam loop dapat dioptimasi jika kriteria updatenya sama, sebagai contoh kita akan mengupdate status user dari non aktif menjadi aktif dengan id user tertentu, misal:
<?php
$sql = "SELECT id_user FROM user WHERE tgl_daftar = "2019-08-24"
$query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($query)) {
$sql = 'UPDATE user SET status = "Aktif" WHERE id_user = ' . $row['id_user'];
mysqli_query($conn, $sql);
}
Pada script diatas, perintah update dijalankan sebanyak id_user yang dihasilkan dari query pertama.
Lantas, apakah bisa dioptimasi?
Pada kondisi diatas ya, bisa, caranya kita kumpulkan id_user menjadi satu kemudian kita jalankan perintah update sekali saja, misal:
<?php
$sql = "SELECT id_user FROM user WHERE tgl_daftar = "2019-08-24"
$query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($query)) {
$id_user[] = $row['id_user'];
}
$sql = 'UPDATE user SET status = "Aktif" WHERE id_user IN (' . join($id_user, ',') . ')';
mysqli_query($conn, $sql);
Pada script diatas, terlihat bahwa query update hanya dilakukan sekali sehingga tidak memberatkan server
Penutup
Ketika membangun aplikasi, banyak hal yang harus diperhatikan, tidak hanya bagian front end, tapi back end juga tidak kalah penting.
So.. selalu bentuk mindset kita, bagaimana agar kode yang kita buat selalu efisien.
Demikian pembahasan mengenai meletakkan query MySQL di dalam PHP loop, semoga bermanfaat.
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
110 Feedback dari pembaca
Pa saya mau tanya, bagaimana jika kasusnya insert data dengan looping php namun pada saat insert juga terjadi pengecekan data secara looping, jika data ditemukan maka tidak akan diinsert, jadi disini ada insert dan select dalam looping sekaligus. trima kasih sebelumnya pa atas jawabnnya.
Sangat tergantung model pengecekannya mas dan data yang akan dimasukkan.
Jika data sedikit tidak masalah di dalam looping, jika berpotensi data yang dimasukkan akan berjumlah besar, maka hindari loop. data yang akan dicek bisa di simpan dulu didalam array, selanjutnya penngecekan bisa dilakukan menggunakan array tersebut (if (!in_array()){…}
setelah baca ini saya baru sadar, kalau yang saya bkin selama ini sangat beresiko. Kalau user dalam jumlah yang kecil iya gak ada masalah, kalau udah user banyak ini akan sangat beresiko terhadap kecepatan
Bagaimana untuk proses pengulangan pada perintah update?
Tergantung model updatenya seperti apa mas…
sangat mencerahkan sekali artikelnya pak.
Dan saya mau tanya, ini untuk kasus kita menggunakan model MVC katakanlah saya menggunakan framework laravel, kerjaan untuk urusan query biasanya ada pada sisi controller, setelah itu baru dioper ke view.
Nah, framework biasanya punya builder query tersendiri, nah cara ngejalanin solusi seperti yang bapak tulis itu kira2 bagaimana pak?
semisal:
Nah, DB::insert itu adalah bawaan dari laravel untuk query builder. cara saya agar DB::insert itu ada di luar loop bagaiamana?
Terimakasih banyak pak.
Sebelum insert, querynya dibuat dulu mas:
Saya sangat terbantu banget dgn artikel anda….disini saya mau tanya bagaimana jika insertnya disertai dgn “ON DUPLICATE KEY UPDATE “??
Terima kasih
Tinggal disertakan di querynya mas, misal: INSERT INTO tabel (a,b) VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+1;
assalamualaikum pak,
bapak punya chanel youtube apa tidak ya pak,?saya mau belajar web progaming,
Waalaykumsalam mas…
Sementara belum ada mas…
Sementara belum ada mas…
pak bisa di bantu untuk sampel query update nya
kalo script update nya
script update sederhana
seperti
UPDATE nama_table
set nama_filed = $parameter
WHERE nama_filed = $parameter
trimakasih…..
Maksudnya bagaimana ya mas?
Iya memang seperti itu untuk script update nya….
maksut nya sample penulisan Query update nya saat di dalam looping php pak.
Contohnya seperti apa mas?
Saya kalo menampilkan data seperti ini apakah sama kurang tepat dengan contoh” diatas?
Framework codeigniter dan script diatas di simpan pada controller
Mungkin bisa disederhanakan menggunakan
GROUP BY id
mas dan seharusnya query pada $get_barcode bisa di keluarkan dari loopgroup by id pada table rincian_produksi maksudnya pak?
kalo query $get_barcode dikeluarkan dari loop, ngga terbaca ke viewnya pak, adakah saran lain dari pemanggilan data ini?
Sebenarnya ada 1table lagi yg belum saya masukan diatas mas, table tersebut mengambil data omset dari 6bulan terakhir, tapi hal ini membuat loadingnya lama banget, adakah solusi untuk pemanggilan seperti ini? Menggunakan teknik join contoh yang terakhir bapak contohkan saya kebingungan tidak bisa meng aplikasikannya, mohon bantuannya pak, terimakasih
Ini perlu di lakkukan pengecekan script sama desain databasenya mas… bila berkenan bisa menggunakan fasilitas premium support
asslamualaikum.
mas agus sya meiliki kendala dalam menampilkan loop, sya ingin data setiap field tampi dan langsung trkalkulasi, tapi datanya yg tampilcma satu ajah. tolong pencerahnnya, msh proses belajar. terimakasih
@foreach($umur as $cocol)
{{$cocol->usia}}
{{$cocol->bobot}}
@endforeach
normalisasi
c1
c2
c3
c4
c5
{{$cocok}}
{{$cocok}}
==================================================== controller
public function carinilai()
{
$kecocokans= Kecocokan::all();
$umur = Umur::all();
$asets = Aset::all();
$gajis = Gaji::all();
$saudaras = Saudara::all();
$tanggungans = Tanggungan::all();
$piagams = Piagam::all();
$max = Umur::max(‘id’);
foreach ($umur as $usia)
$cocok = $max / $usia->usia;
return view(‘cocok.nilai’, compact(‘umur’,’asets’,’gajis’,’saudaras’,’tanggungans’,’piagams’,’kecocokans’,’cocok’));
}
Ini menggunakan framework apa mas?
terima kasih tutorial.y mas… sy cb berhasil tuk inputan data d bawah 8, d atas tu g bs, kl pake printah insert berulang bs masuk cm 8 aja paling banyak. kira2 tu masalah.y d mn mas… mohon bntuan.y
Pesan error nya seperti apa mas?
Pak agus saya mempunyai masalah pada saat insert tidak terbentuk. Contoh data yang saya Select ada 400 lebih, pada saat saya pilih data yang lebih dari 125 dengan checkbox data tidak ke insert dalam tabel tetapi data yang kurang dari 124 ke insert dengan sempurna.
Sebelumnya Terima Kasih Pak
Maksudnya combo box nya ada 400 mas? coba cek nama dari combo box tersebut, mungkin ada yang dobel?
Terima Kasih tutorialnya mas, ada yang masih saya bingung..
misal ada kasus saya ingin membuat looping for untuk menambahkan data, tapi sebelum menambahkan data, aplikasi mencari apakah ada data yang sama atau tidak? kalau ada data yang sama looping itu nantinya akan mengupdate data yang sama, sedangkan jika yang tidak sama baru akan di insert..
kalau seperti itu kasusnya bagaimana implementasi for, select, insert dan updatenya mas? terimakasih sebelumnya..
Bisa dicoba pengecekan di luar database mas, misal terlebih dahulu diambil data yang mau dicek, kemudian misal disimpan di array, selanjutnya bandingkan data yang mau diinsert dengan array tersebut, kelumpokkan mana yang perlu diinsert dan mana yang perlu diupdate.
Atau kalau ngga bisa di truncate table terus diinsert semua datanya sekaligus…
bisa dicontohkan untuk modelnya ga pak? kalo saya bayangannya spt ini
<?php
$sql = "insert into table values ";
for ($i=0; $i 0) {
$update = mysqli_query($conn,”update table set”);
}
else{
$sql .= “(isi data ), “;
}
}
$sql = rtrim($sql, ‘, ‘);
$tambah = mysql_query($conn, $sql);
?>
untuk logika nya apa seperti ini pak??
Bisa seperti itu mas, cuman kalau yang diinsert banyak, rata-rata lebih dari 4.000 row, maka statement insertnya perlu dipecah lagi. Untuk yang update jika data yang diupdate banyak dan membuat proses update jadi lama, maka perlu diubah bentuk query nya…
untuk query yang lebih efisiennya spt apa ya kira2? bisa tolong dicontohkan mas?
Itu sudah pas mas tinggal nanti ketika implementasi jika ada yang lemot baru diperbaiki
terima kasih mas buat informasinya.. Alhamdulillah programnya sudah bisa jalan..
sukses terus mas….
Alhamdulillah… sama sama mas…
Terimakasih tutorialnya sangat membantu saya
Sama sama mas…
Selama ini saya telah melakukan kesalahan, memang betul dalam logika, namun proses query di dalam loop betul2 memberatkan server, terima kasih sangat membantu artikelnya
Sama sama mas…
saya punya kasus seperti pada contoh 1 dan sudah saya perbaiki sesuai dengan solusi 1
tetapi array yang dikirim ternyata tidak sesuai dengan array yang di tampilkan
Coba dicek lagi querynya mas
Selamat sore, maaf pak Agus saya baru belajar SQL dan tutorial penyelesaiannya sangat membantu.
Cuma yang saya bingungkan pada Studi Kasus #1, untuk row ‘child’ di sini apa? apakah variabel yang dibuat, atau sebenarnya ada row ‘child’ pada tabelnya? terimakasih banyak.
Row child maksudnya row pada child tabel mas, misal row menu dan row sub menu, row sebagai sub menu disebut row child
Tes, coba karena saya post tidak bisa
Bisa mas
bagaimana kasusnya kalau melakukan update mas dalam looping.
saya masih bingung querynya.
kalau insert kan INSERT INTO tablename (COL1, COL2) VALUES
(‘ID1’, ‘VAL1’), (‘ID2’, ‘VAL2’).
nah kalau untuk update gimana querynya sedang parameter kolom updatenya kan pasti beda2.?
Tergantung kasusnya mas seperti apa?
Terimakasih pencerahanya, walaupun masih bingung penerapanya…
Sama sama mas…
Luar biasa mas, terima kasih atas penjelasannya.
saya coba terapkan apa yang sudah di paparkan, hasilnya luar biasa! Namun saya masih kurang yakin dengan dengan query UPDATE yang saya buat. Kira2 ada contoh untuk kasus UPDATE tidak?
$json = json_decode($arrayData, true);
$sql = “INSERT INTO t_login (tlogin_email, tlogin_password, tuser_id) VALUES “;
$sql2 = “”;
foreach ($json as $key => $value) {
$email = $value[“userEmail”];
$password = $value[“userPass”];
$userId = $value[“userId”];
$sql .= “(‘$email’, ‘$password’, ‘$userId’),”;
$sql2 = “UPDATE t_user SET tuser_status = ‘VERIFIED’ WHERE tuser_id = ‘$userId’;”;
$update = mysqli_query($conn, $sql2);
}
$sql = rtrim($sql, ‘,’);
$insert = mysqli_query($conn, $sql);
Terima kasih mas, itu bisa dijadikan satu query update
$sql2 = “UPDATE t_user SET tuser_status = ‘VERIFIED’ WHERE tuser_id IN ( … )”;
Met pagi mas Agus….
Terima kasih atas sharing ilmunya & sepertinya saya harus banyak belajar trik yang diajarkan di atas untuk meningkatkan performa aplikasi yang sedang saya buat.
Mohon pencerahan atas kesalahan penulisan script di bawah, pada saat dieksekusi keluar warning pada variabel $b dan $konfir
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\test\admin\pertanahan.php on line 57
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\test\admin\pertanahan.php on line 58
Terima kasih.
if($leveluser==’Administrator’ OR $leveluser==’Eksekutif’){
$lahan = mysqli_query($koneksi,”SELECT * FROM lahan_target ORDER BY tahun,unit,triwulan ASC”); }else{
$lahan = mysqli_query($koneksi,”SELECT * FROM lahan_target WHERE unit=’$unituser’ ORDER BY tahun,unit,triwulan ASC”); }
while($w = mysqli_fetch_array($lahan)){
$kode=$w[‘project_code’];
$cek = mysqli_query($koneksi,”SELECT * FROM lahan_real WHERE project_code=$kode”);
$b = mysqli_fetch_array($cek);
$konfir = mysqli_num_rows($cek);
if($konfir > 0){ $butuh=$b[‘luas_butuh’];}else{$butuh=’0′;}
Itu biasanya SQL nya yang error mas, bisa dicoba untuk menjalankan secara manual Query SQL yang ada menggunakan aplikas database manajemen seperti phpmyadmin atau HeidiSQL
Ilmu baru, terimakasih kak. Sangat bermanfaat…
Trima kasih mas, tulisan anda sangat membatu..
Tapi saya mesih sedikit bingung untuk penerapannya dalam MVC mas, saya menggunakan codeigniter..
mohon berikan contoh mas dari kasus yang dibawah, biar saya dan teman-teman yang lain bisa menerapkannya…
$kategori = $this->input->post(‘kategori’);
foreach ($kategori as $term_id) {
$term_kategori = [
‘object_id’ => $this->input->post(‘post_id’),
‘term_taxonomy_id’ => $this->input->post(‘term_id’),
];
$this->db->insert(‘tbl_term_relationships’,$term_kategori);
}
Itu insertnya di taruh diluar loop mas, mungkin bisa seperti ini
Kalau query di dalam loop apakah mempengaruhi efisiensi Mas.
Contohnya:
$query=mysqli_query($conn, “SELECT * FROM tabel1”);
while($row=mysqli_fetch_array($query){
$row2=mysqli_fetch_array(mysqli_query($conn, “SELECT * FROM table2 WHERE id=’$row[id]'”));
}
Supaya lebih efisien bagaimana caranya?
Itu sudah dibahas di artikel diatas mas, dijadikan satu query…
Ingin tanya jika terdapat tabel :
Ingin menampilkan :
Ditampilin di tabel php mysql.
Mohon solusinya
Coba menggunakan SELECT DISTINCT mas
Kategori 1
Sub Kategori 1-1
Item 1
Item 2
Item 3
Sub Kategori 1-2
Item 1
Item 2
Item 3
Sub Kategori 1-3
Sub Kategori 1-4
Sub Kategori 1-5
Sub Kategori 1-6
Kategori 2
Sub Kategori 2-1
Sub Kategori 2-2
Sub Kategori 2-3
Sub Kategori 2-4
Sub Kategori 2-5
Gmn mas cara membuat tampilan query data spt kasus diatas?
Sudah dibahas di artikel diatas mas
Saya ingin bertanya
Saya punya tabel seperti ini:
+—-+———–+——–+
| Id | Name | Total|
+—-+———–+——–+
| 1 | Joni | 2 |
| 2 | Brad | 1 |
| 3 | Joni | 3 |
| 4 | Chuck | 1 |
| 5 | Brad | 3 |
| 6 | Brad | 5 |
+—-+————+——+
Dan ingin ditampilkan seperti ini:
+———-+———+
| Name | Total |
+———-+———+
| Joni | 5 |
| Brad | 9 |
| Chuck | 1 |
+———-+———+
Untuk column `name` (SELECT DISTINCT) saya bisa, tapi yang `total` masih bingung.
Jadi nanti `total` nanti akan ditotal menurut `name` yg sudah di DISTINCT. Terima kasih
Bisa menggunakan SUM mas:
SELECT nama, SUM(total)
FROM tabel
GROUP BY nama
Terimakasih, master.
Saya mau tanya, bagaimana kalau output yang dihasilkan hanya ingin menghitung jumlah (qty) sub kategori ? misal
Kategori 1 | 5 Sub
Kategori 2 | 4 Sub
dst..
Coba pakai COUNT mas kemudian di group BY kategori
<?php
if($_POST['submit']) {
$conn = mysqli_connect('localhost', 'root', '', 'universitas');
$sql = 'INSERT INTO mahasiswa_matkul (nim, kd_matkul) VALUES ';
foreach ($_POST['matkul'] AS $kd_matkul) {
$sql .= '("'.$_POST['nim'].'", "'.$kd_matkul.'"),';
}
$sql .= rtrim($sql, ',');
$insert = mysqli_query($conn, $sql);
}
saya ingin bertanya kalau itu setelah tutup foreach ada $sql .= rtrim($sql , ',');
rtrim fungsinya untuk apa dan kenapa parameter kedua diisikan dengan ','
apakah fungsi rtrim akan mempengaruhi query insert kita sekian terimakasih
rtrim untuk menghilangkan tanda koma diujung mas, karena kita menggunakan loop yang diakhiri koma: $sql .= ‘(“‘.$_POST[‘nim’].'”, “‘.$kd_matkul.'”),’;
Jadi nanti SQL nya terakhir ada komanya, kalau tidak dihilangi, maka akan muncul error. Untuk mudahnya coba sebelum rtrim, variabel $sql nya di echo
bagaimana query nya ya pak, jika kita ingin mengetahui selisih antara beberapa record.
misal selisih jarak km suatu kendaraan saat isi bbm.
saya bikin databasenya tgl,no_pol,km,liter.
saya ingin tampilannya tgl,no_pol,kn,liter,selisih.
selisihnya adalah dari record sebelumnya di 1 no_pol
Kalau menghitung selisih antar baris susah dilakukan di SQL mas, SQL umumnya untuk menghitung selisih antar kolom
$sql = “SELECT id_user, nm_user FROM user WHERE tgl_daftar = “2019-08-24”
$query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($query)) {
$id_user[] = $row[‘id_user’];
$nm_user[] = $row[‘nm_user’];
}
$sql = ‘UPDATE user SET nm_user= XXX WHERE id_user IN (‘ . join($id_user, ‘,’) . ‘)’;
mysqli_query($conn, $sql);
yg diberi tanda XXX ntu gmn cara pengisiannya ya kak?
mohon bantuannya
thanks
Tidak bisa seperti itu mas.. kita tidak bisa update data yang berbeda beda untuk id yang berbeda beda
Pak ijin bertanya
Jadi Saya ingin menginput dari 2 tabel kedatabase per Id_A ,saya sudah mencoba code diatas tapi gagal terus pak…
Saya ingin tabel seperti ini:
+â€â€-+â€â€Ã¢â‚¬â€Ã¢â‚¬â€Ã¢â‚¬â€œ+â€â€Ã¢â‚¬â€Ã¢â‚¬â€œ+
| Id_A | Nilai |Id_B|
+â€â€-+â€â€Ã¢â‚¬â€Ã¢â‚¬â€Ã¢â‚¬â€œ+â€â€Ã¢â‚¬â€Ã¢â‚¬â€œ+
| A1 | 12 | B1 |
| A1 | 20 | B2 |
| A1 | 30 | B3 |
| A2 | 4 | B1 |
| A2 | 5 | B2 |
| A2 | 7 | B3 |
+â€â€-+â€â€Ã¢â‚¬â€Ã¢â‚¬â€Ã¢â‚¬â€+â€â€Ã¢â‚¬â€+
mohon bantuannya pak terima kasih….
Maksudnya bagaimana ya mas? input dalam jumlah besar atau bagaimana?
& di solusi pada perulangan SELECT itu apa ya gunanya?
Maksudnya bagaimana ya mas
Saya ingin bertanya pak, bagaimana caranya menyimpan semua data hasil dari perulangan kedalam database dalam satu kali insert pak?
misalnya : saya ingin menampilkan data siswa sesuai dengan kelas yang saya pilih di combo box dari tabel siswa, kemudian data ditampilkan dalam bentuk form tabel menggunakan looping while, lalu form tabel tersebut diberikan inputan lagi.. setelah itu saat tombol simpan di klik semua data yang ada di dalam form ingin di simpan ke tabel absensi.
hasilnya data yang tersimpan hanya baris terakhir dari tabel tersebut.
bagaimana cara mengatasinya ya pak? mohon bantuan dan penjelasannya ya pak
Disambung querynya mas, misal
Kalo dg mysqli_multi_query bisa ga Mas dan bagaimana implementasinya. Makasih
Bisa dicoba mas, yang jelas mengurangi perulangan koneksi antara client dan server. Namun demikian, query tetap dieksekui satu per satu, lebih efisien jika dijadikan satu query
Pak ijin bertanya saya ada script update seperti dibawah, supaya bisa optimal dibuat bagaimana ya
for($i=1;$i<=$_POST['jumlah'];$i++){
$no= $_POST['no'.$i];
$kunci= $_POST['kunci'.$i];
$jenis = $_POST['jenis'.$i];
$query = "UPDATE wp_jawab SET Nomer = '$no', JenisSoal = '$jenis', XKunci = '$kunci' WHERE Username = '$user'";
mysqli_query($conn,$query);
}
Kalau update tidak terlalu bisa dioptimasi mas, bisa dicoba hapus data yang mau diupdate kemudian insert data baru
Pak, ini saya ubah untuk menampilkan dari cuma 1 Kategori tertentu (misal kategori 10) berdasarkan tahun posting artikel saya cuman ambil Tahunnya saja, YEAR(Tgl_Terbit), pke kode berikut:
Hasil query
Tahun Judul
2020 A1
2020 Z2
2019 A0
2019 A10
2018 B1
<?php
$query = "SELECT Tahun, Judul FROM (
SELECT YEAR(Tgl_Terbit) as Tahun, ID_Kategori, Judul,
IF ( @curr_idkat = YEAR(Tgl_Terbit), @urut := @urut + 1, @urut := 1) AS urut,
IF ( @curr_idkat != YEAR(Tgl_Terbit), @curr_idkat := YEAR(Tgl_Terbit), NULL) AS curr
FROM isi
ORDER BY tgl_terbit DESC ) AS tmp
WHERE urut <= 3 AND ID_Kategori = 10";
$query = mysql_query($query);
$curr_cat = '';
$html = '’;
$first = true;
while ( $row = mysql_fetch_array( $query ) ) {
if ( $curr_cat != $row[‘Tahun’] ) {
$curr_cat = $row[‘Tahun’];
$close_tag = ”;
if ( $first ) {
$close_tag = ”;
$first = false;
}
$html .= $close_tag . ‘‘ . $row[‘Tahun’] . ”;
}
$html .= ‘‘ . $row[‘Judul’] . ‘‘;
}
$html .= ”;
echo $html;
?>
Namun di menu, yang muncul malah semua tahunnya. Bagaimana ya ? terimakasih
Coba querynya di echo kemudian dijalankan di PHPMyAdmin cek hasilnya seperti apa
Ini hasil querynya pak..
Hasil query
Tahun Judul
2020 A1
2020 Z2
2019 A0
2019 A10
2018 B1
Aslinya tanggal posting formatnya Tahun-bulan-tgl, namun cuman saya ambil YEAR() , apa pengaruh ya
Itu sudah benar mas, tahun nya
Assalamualaikum pak, ijin bertanya saya mempunyai kasus seperti ini:
kodinganya :
<?php
session_start();
include '../koneksi.php';
$query = "SELECT pinjam.*,pinjam.id_pinjam as id_pinjam, buku.id_buku,buku.judul_buku, anggota.nama,
(SELECT tgl_kembali FROM kembali JOIN pinjam ON kembali.id_pinjam=pinjam.id_pinjam WHERE kembali.id_pinjam=id_pinjam) as tgl_kembali
FROM pinjam
JOIN buku ON buku.id_buku = pinjam.id_buku
JOIN anggota ON anggota.id_anggota = pinjam.id_anggota";
$hasil = mysqli_query($koneksi, $query);
mysqli_connect_error();
// … menampung semua data kategori
$data_pinjam = array();
// … tiap baris dari hasil query dikumpulkan ke $data_buku
while ($row = mysqli_fetch_assoc($hasil)) {
$data_pinjam[] = $row;
}
Masalahnya :
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\project\kembali\proses-list-pengembalian.php on line 18
masalahnya di sini:
while ($row = mysqli_fetch_assoc($hasil)) {
$data_pinjam[] = $row;
}
cara mengatasinya bagaimana ya pak??
Itu artinya output query SQL nya tidak sesuai mas, coba query ini:
SELECT pinjam.*,pinjam.id_pinjam as id_pinjam, buku.id_buku,buku.judul_buku, anggota.nama,
(SELECT tgl_kembali FROM kembali JOIN pinjam ON kembali.id_pinjam=pinjam.id_pinjam WHERE kembali.id_pinjam=id_pinjam) as tgl_kembali
FROM pinjam
JOIN buku ON buku.id_buku = pinjam.id_buku
JOIN anggota ON anggota.id_anggota = pinjam.id_anggota
dijalankan di database manager seperti phpmyadmin dan lihat hasilnya sudah sesuai belum
Pak bagaimana quernya untuk mendapatkan hasil
Admin
-submenu
-submenu
Member
-submenu
-submenu
Saya sudah looping querynya di view pak tapi saya merasa agak lemot loadingnya ..saya ingin quernya pake model tapi masih bingung bagaimana ngehubunginnya pak..fw yg saya gunakan codeigniter 3
terimakasih
Querynya seperti biasa mas, output array, selanjutnya array tersebut disusun ulang sehingga terstruktur parent children, bisa searching “php recursive untuk menu”
pak mau tanya saya punya kasus ada user 1 dan user 2 barengan tekan tombol save tapi ada salah satu yg tidak tersimpan dan tidak terjadi error, biasanya keslahannya diman?
Seharusnya bisa mas, coba di debug query SQL nya misal if (!$query) echo mysqli_error()
Saya sangat suka dengan tuisannya..
saya mau tanya mas, kalau sub nya banyak bagaimana ya? itu kan yang di contohkan sub nya cuman ada 1 kategori dan 1 sub, saya ma bikin Kategori, sub kategori, sub sub kategori, sub sub sub kategori, dst.. logika nya bagaimana ya? terimakasih mas..
Sama saja mas. Untuk kedalaman yang tidak terbatas, bisa menggunakan fungsi recursive, seperti membuat menu dan submenu dengan kedalaman yang tidak terbatas. Coba di googling fungsi recursive untuk membuat menu
pak izin bertanya
saya ingin melakukan update dengan perulangan, dengan data yang diupdate berbeda berdasarkan kondisi yang berbeda juga, kode dibawah apakah sudah benar ? apakah untuk update data di atas 100 tidak akan menjadi masalah ?
makasih sebelumnya pak.. ilumnya sangat bermanfaat, kata yang digunakan juga mudah dipahami, smga ilmunya menjadi amal jariah pak.. amiinn
$data = $_POST[‘data’];
for ($i=0; $i < count($data); $i++) {
$nosam = $data[$i]['nosam'];
$unit = $data[$i]['unit'];
$blthn = explode(" ", $data[$i]['blthn']);
$bulan = indoAngka($blthn[0]);
$tahun = $blthn[1];
$denda = $data[$i]['dd'];
$rupiah = $data[$i]['rp'];
$tgl = $data[$i]['tgl'];
$select = mysqli_query($conn, "SELECT … UPDATE .. SET.. WHERE .. ");
}
Kalau untuk update tidak ada cara cepat mas. Itu yakin yang diupdate datanya 100 lebih sekali update? coba dicek lagi
kalau kayak ini gimana mas ? jadi saya mau melakukan update data banyak,
contoh mau update stok setelah pembelian.
:::
$query = $DB->prepare(“SELECT a.barcode,a.tgl, a.qty,b.stoktoko FROM mutasi_pembeliandetail a, stoktoko b WHERE a.barcode=b.kode and a.kode='”.$_POST[‘faktur’].”‘ “);
$query->execute();
foreach ($query as $dea) {
$query2 = $DB->prepare(“UPDATE stoktoko SET stoktoko=’$saldo’ WHERE kode=’$barcode'”);
$query2->execute();
}
::
kalau update nya hanya satu kali execute query bisa gak mas?
Tidak masalah mas seperti itu
Pak saya mau tanya kalo looping menggunakan apa ya seperti ini jadi saya ada case dimana tiap kelipatan 20 nopc berubah otomatis,
hasilnya :
nopc | nama
PC123 | AGUS
PC123| BUDI
…..
PC124| AMIR
PC124| ZULFI
Pak ketika saya echo querynya kenapa hanya 1 karakter yg bisa di ambil ya, hasilnya seperti ini INSERT INTO tbl_coba (`id`,`nama`,`poin`) VALUES (‘a’, ‘n’, ‘3’),(‘a’, ‘n’, ‘3’),(‘a’, ‘n’, ‘3’)
yang pertama saya isi asn yg didapatkan hanya a
Codingnya seperti apa ya mbak
di artikel ada tulisan “Bagaimana jika kategorinya 10… ?”
Jawabannya mas bagaimana? tolong bantuan nya mas/..
Itu cuman penegasan mas, jawabannya sudah saya tulis di artikel tersebut…
Mas izin bertanya, bagaimana query looping untuk proses cek barir, misalnya kalau dibaris tersebut sudah ada kode yang sama maka lakukan query update, tapi kalau belum ada maka query insert, mohon bantuan pencerahannya mas, terima kasih
Itu perlu diambil datanya secara keselurahan (bukan satu per satu) untuk kemudian disimpan di variabel.
Setelah itu data tersebut di loop, jika datanya ada maka langsung update database jika tidak maka kumpulkan dulu data tersebut ke variabel data yang mau diinsert, terakhir lakukan insert pada kumpulan data tersebut.
Pak saya mau buat grafik dengan penjumlahan arraynya
misal data ke 1 di tambah data ke 2, kemudian hasil nya di jumlahkan dengan data ke 3 dst.
tp saya masih bingung nulis scriptnya bagaimana karena msih belajar
Bisa dicoba menggunakan loop mas, bisa coba pakai foreach, nanti didalam loop tersebut dijumlahkan item array nya
$kode = array(“u0233″,”u0222″,”u0212″,”u0246”)
$total_saldo = 0;
foreach($kode as $k){
$saldo = $this->wd->hitung_saldo($k)->row();
$total_saldo += $saldo->tersedia;
}
mohon solusinya mbah, agar bisa query ke- databasenya keluar dari looping..
Query nya tidak kelihatan mas, sepertinya itu pakai sum ya, kalau iya bisa pakai sum if sehingga dalam satu query bisa didapat hasil beberapa tahun, artikel nya Menggunakan Fungsi SUM IF Untuk Menjumlahkan Nilai Pada Field (Kolom) Suatu Tabel Pada MySQL
Kategori 1
Artikel 1-5
Artikel 1-3
Artikel 1-4
Artikel 1-2
Artikel 1-1
Kategori 2
Artikel 2-5
Artikel 2-3
Artikel 2-4
Artikel 2-1
Artikel 2-2
Kategori 3
Artikel 3-4
Artikel 3-3
Artikel 3-1
Artikel 3-2
Artikel 3-5
Kategori 4
Artikel 4-4
Artikel 4-2
Artikel 4-1
Artikel 4-3
Artikel 4-5
Kategori 5
Artikel 5-4
Artikel 5-2
Artikel 5-5
Artikel 5-3
Artikel 5-1
Cara menerapkan ini di codeigniter 3 bagaimana ya pak agus, saya bingung hehehe
Tinggal querynya dimasukkan ke model mas, intinya sama, query di taruh dimodel, nanti hasilnya di olah di controller