Blog Posts » PHP & MySQL » Optimasi Read More
Optimasi Read More
Jika ingin mengambil sebagian data teks atau posting di MySQL biasanya kita menggunakan PHP substr untuk memotongnya. Namun alangkah baiknya jika kita memotongnya sejak proses query SELECT. Karena data yang diambil akan lebih sedikit untuk ditransfer ke klien (PHP).
Jika query standar:
[Textarea][RAW][Download]
- SELECT judul, posting FROM tabel_posting LIMIT 10;
Query yang ter-optimasi:
[Textarea][RAW][Download]
- SELECT judul, LEFT(posting, 100) AS posting FROM tabel_posting LIMIT 10;
Contoh variasi kodenya, tentunya tidak mutlak harus dipakai:
[Textarea][RAW][Download]
- $max_chars = 100;
- $readmore = '[readmore]'; // Suffix ini hanya akan muncul jika posting > 100
- $sql = mysql_query("SELECT id, judul, IF(CHAR_LENGTH(LEFT(posting, $max_chars+1))>$max_chars, CONCAT(LEFT(posting, $max_chars), '$readmore'), posting) AS posting FROM tabel_posting LIMIT 10");
- while($row = mysql_fetch_array($sql)) {
- $id = $row['id'];
- $judul = $row['judul'];
- $posting = $row['posting'];
- if (substr($posting, -strlen($readmore)) == $readmore) { // Jika ada [readmore] di belakang, replace dengan link ..selengkapnya
- $posting = str_replace($readmore, '<a href="/posting.php?id='.$id.'">..selengkapnya</a>', $posting);
- }
- // blabla
- echo htmlspecialchars($posting);
- }
Jika menginginkan pemotongan 'sempurna' yaitu dengan tidak memotong ditengah-tengah kata, ganti query diatas dengan:
[Textarea][RAW][Download]
- SELECT id, judul, IF(CHAR_LENGTH(LEFT(posting, $max_chars+1))>$max_chars, CONCAT(SUBSTRING(posting, 1, $max_chars-INSTR(REVERSE(LEFT(posting, $max_chars)), ' ')), '$readmore'), posting) AS posting FROM tabel_posting LIMIT 10;
Pemotongan akan dilakukan pada spasi..
Update: Fungsi mysql sudah ditinggalkan oleh PHP. Silahkan lanjut baca mysqli_connect dan mysqli_query.
(admin)
- Attachments: optimasi-read-more.zip
- Date created: Wed, 19 Dec 2012 13:13:12 +0700
- Date modified: Thu, 19 Nov 2015 08:39:23 +0700
- Viewed: 105063 times
- Label: PHP & MySQL
- Share: Facebook, Twitter
- Comm.: View (3) · Write