Query MySQL di Dalam PHP Loop – Bad Practice !!!

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…

Untuk memasukkan banyak  data sekaligus dalam satu statemen 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

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

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

  • 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:

    foreach ($list_data as $value) {
                DB::insert('INSERT INTO histori_tusbung (total_tunggakan, total_lunas, total_sisa, persentase, tusbung) values(?, ?, ?, ?, ?, ?)',
                    [
                        $value["totalbelumlunas"],
                        $value["jumlah_lunas"],
                        $value["sisa_belum"],
                        $value["persen"],
                        $value["tusbung"]
                    ]
                );
            }
    

    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:

      $query_insert = 'INSERT INTO nama_tabel VALUES ';
      foreach ($list_data as $value) {
      	$insert_value[] = '(...)';
      }
      $query_insert .= join($insert_value, ',');
      DB::insert($query_insert);
  • Saya sangat terbantu banget dgn artikel anda….disini saya mau tanya bagaimana jika insertnya disertai dgn “ON DUPLICATE KEY UPDATE “??

    Terima kasih

  • assalamualaikum pak,
    bapak punya chanel youtube apa tidak ya pak,?saya mau belajar web progaming,

  • 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…..

  • Saya kalo menampilkan data seperti ini apakah sama kurang tepat dengan contoh” diatas?

    $produk = $this->ceklisqc_model->get_wheres('mainproduk', array('status'=>1), 'id-ASC');
    
    $produk_arr=array();
    foreach ($produk as $p) {
      $produk_arr[$p['id']]['id']=$p['id'];
      $produk_arr[$p['id']]['barcode']=$p['barcode'];
      $produk_arr[$p['id']]['nama_produk']=$p['nama_produk'];
      $produk_arr[$p['id']]['nama_alias']=$p['nama_alias'];
      $produk_arr[$p['id']]['satuan']=$p['satuan'];
      $produk_arr[$p['id']]['produk_jadi']=$p['produk_jadi'];
      $produk_arr[$p['id']]['kemasan']=$p['kemasan'];
      $produk_arr[$p['id']]['min_stok_kemasan']=$p['min_stok_kemasan'];
      $produk_arr[$p['id']]['status']=$p['status'];
      $produk_arr[$p['id']]['sort']=$p['sort'];
      $produk_arr[$p['id']]['stok_kartu']=$p['stok_kartu'];
      $produk_arr[$p['id']]['catatan']=$p['catatan'];
      $produk_arr[$p['id']]['top_item']=$p['top_item'];
      $produk_arr[$p['id']]['user']=$p['user'];
    
      $get_barcode = $this->ceklisqc_model->get_wheres('rincian_produksi', array('barcode'=>$p['barcode']));
      foreach ($get_barcode as $b) {
        $produk_arr[$p['id']]['get_stok'][$b['id']]=$b['stok'];
      }
    }
    
    $data['produk']= $produk_arr;
    

    Framework codeigniter dan script diatas di simpan pada controller

  • group 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

  • 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’));
    }

  • 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

  • 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

  • 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…

  • terima kasih mas buat informasinya.. Alhamdulillah programnya sudah bisa jalan..
    sukses terus 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

  • 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

  • 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.

  • 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.?

  • 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);

  • 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

  • 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

      $kategori = $this->input->post('kategori');
      
      $term_kategori = array();
      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_batch('tbl_term_relationships',$term_kategori);
  • 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?

  • Ingin tanya jika terdapat tabel :

    --------------------------------
    |Id    | id_kategori | judul   |
    --------------------------------
    | 1     | K001       | aaass   |
    | 2     | K001       | aaass   |
    | 3     | K002       | cvvvc   |
    | 4     | K002       | cvvvc   |
    --------------------------------
    

    Ingin menampilkan :

    -------------------------
    |Iid_kategori | judul   |
    -------------------------
    |  K001       | aaass   |
    |  K002       | cvvvc   |
    -------------------------
    

    Ditampilin di tabel php mysql.
    Mohon solusinya

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

  • 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

  • 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..

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

  • $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

  • 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….

  • 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

    • 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);
    }

  • 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

  • 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

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

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

  • 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

  • di artikel ada tulisan “Bagaimana jika kategorinya 10… ?”
    Jawabannya mas bagaimana? tolong bantuan nya mas/..

  • 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

  • $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..

  • 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

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com