Archive

Posts Tagged ‘Basis Data’

Nested comments in PHP & MySQL

24 October 2013 Leave a comment

I searched through the forums but couldn’t get an authoritative answer. I want to implement a nested comment structure in a way like this:

<ul>
    <li>This is the parent first comment!
        <ul>
            <li>This is the reply for the first parent comment!
                <ul>
                    <li>This is a reply for the first reply of the parent comment!</li>
                    <li>This is a third reply for the first parent comment!</li>
                </ul>
            </li>
            <li>This is another reply for first parent comment!</li>
        </ul>
    </li>
    <li>This is gonna be parent second comment!
        <ul>
            <li>This is a reply for the second comment!</li>
        </ul>
    </li>
    <li>This is fourth parent comment!</li>
</ul>

The dump for my table is below:

+----+------------------------------------------------------------+--------+
| id | text                                                       | parent |
+----+------------------------------------------------------------+--------+
|  1 | This is the parent first comment!                          |      0 |
|  2 | This is gonna be parent second comment!                    |      0 |
|  3 | This is the reply for the first parent comment!            |      1 |
|  4 | This is another reply for first parent comment!            |      1 |
|  5 | This is a reply for the first reply of the parent comment! |      3 |
|  6 | This is a reply for the second comment!                    |      2 |
|  7 | This is a third reply for the first parent comment!        |      3 |
|  8 | This is fourth parent comment!                             |      0 |
+----+------------------------------------------------------------+--------+

I know how to use mysql_query() and while() loops. A beginner in PHP & MySQL. Please help me out.

ANSWER:

I had done something similar for my blogpost. Yet, I just tried out with the same data. When you saynested comments it is better you can use nested functions this way:

<?php
    mysql_connect('localhost', 'root');
    mysql_select_db('nestedcomments');
    function getComments($parent)
    {
        $res = mysql_query("SELECT * FROM `nestcomm` WHERE `parent` = $parent");
        if (mysql_num_rows($res))
        {
            echo "<ul>\n";
            while (($dat = mysql_fetch_array($res)) !== false)
                echo "<li>", $dat["text"], getComments($dat["id"]), "</li>\n";
            echo "</ul>\n";
        }
        else
            echo ($parent === 0) ? 'No Comments!' : "";
    }
    getComments(0);
?>

As I said before I have used nested functions, and as you asked the output is almost same (without the braces) this way:

<ul>
<li>This is the parent first comment!<ul>
<li>This is the reply for the first parent comment!<ul>
<li>This is a reply for the first reply of the parent comment!</li>
<li>This is a third reply for the first parent comment!</li>
</ul>
</li>
<li>This is another reply for first parent comment!</li>
</ul>
</li>
<li>This is gonna be parent second comment!<ul>
<li>This is a reply for the second comment!</li>
</ul>
</li>
<li>This is fourth parent comment!</li>
</ul>

Hope this helps out.

SOURCE

Advertisements

Membuat Laporan(Report) dengan PHP Excel

21 July 2012 54 comments

Mungkin bagi newbi-newbi termasuk saya sering bingung jika berhadapan dengan reporting atau membuat laporan di PHP. Baik itu laporan dalam bentuk PDF atau EXCEL.

Saya sendiri pernah mencoba 3 (tiga) library untuk membuat laporan dalam bentuk PDF (bisa dilihat disni). Untuk laporan atau reporting dalam bentuk excel ada satu library PHP yang sangat mengagumkan, yaitu PHPExcel.

Sebelumnya saya biasanya memakai cara biasa untuk membuat laporan dalam excel, cara ini termasuk cara yang paling mudah bagi saya:


<?php
// isi $excel akan bernilai true apabila ditemukan parameter get dengan nama 'excel'
$excel = isset($_GET['excel']);
if($excel):
 // buat nama file unique untuk di download
 $filename = 'export-'.date('YmdHis');
 // dengan perintah di bawah ini akan memunculkan dialog download di browser anda
 header("Content-type: application/x-msdownload");
 // perintah di bawah untuk menentukan nama file yang akan di download
 header("Content-Disposition: attachment; filename=".$filename.".xls");
else:
 // tag header di html disembuyikan apabila sedang convert html to excel
?>
<html>
<head>
<style type="text/css">
/* setting format tabel */
table {
 font-family: Verdana;
 font-size: 8pt;
 border-width: 1px;
 border-style: solid;
 border-color: #ccd2d2;
 border-collapse: collapse;
 background-color: #f9f9f9;
}
th {
 color: #f00;
 font-size: 8pt;
 text-transform: uppercase;
 text-align: center;
 padding: 0.5em;
 border-width: 1px;
 border-style: solid;
 border-color: #000;
 border-collapse: collapse;
 background-color: #000;
}
td {
 padding: 0.1em;
 color: #272727;
 vertical-align: top;
 border-width: 1px;
 border-style: solid;
 border-color: #000;
 border-collapse: collapse;
 font-size: 8pt;
}
</style>
<title>Membuat Report Excel Dari HTML Dengan PHP</title>
</head>
<body>
<?php endif; ?>
<?php if(!$excel): ?>
<!-- Tombol di bawah dan penutup html hanya akan dipanggil apabila dalam kondisi melihat data,
 tapi ketika menampilkan file excel tombol ini disembunyikan -->
<div align="left" style="margin-top:15px">
 <input type="button" onClick="document.location='?excel=1'" value="Export to Excel" />
</div>
<br>
<?php endif; ?>
<?php
//setting koneksi anda
$server = "localhost";
$username = "root";
$password = "";
$db = "excel";
$tbl = "customer";

$koneksi = mysql_connect($server,$username,$password);
mysql_select_db($db, $koneksi) or die("Cannot connect to database..");

// create tabel dengan php
echo "<div align='left'><img src='http://smartcoderszone.com/wp-content/uploads/2010/09/generate-excel-report-with-php-and-mysql2.jpg' width='100' height='150'><div><br><br><br><br><br>";
echo "<p> </p>";
echo "<div align='left' style='color='#ff0000'><strong>DATA PEGAWAI</strong>";
echo "<table border='1'>";
echo " <tr bgcolor='#cccccc'>";
echo " <th>NO</th>";
echo " <th>company_name</th>";
echo " <th>email</th>";
echo " <th>city</th>";
echo " </tr>";

 $str = " SELECT * FROM ".$db.".".$tbl.
 " order by ID desc ";
 $query = mysql_query($str);
 if($query && mysql_num_rows($query) > 0){
 $no = $posisi+1;
 while($row = mysql_fetch_object($query)){
 //if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
 //else{$bgcolor='#f1f1f1';}
 echo "<tr bgcolor=$bgcolor>";
 echo " <td align='center' height='18'><strong>$no</strong></td>";
 echo " <td>{$row->company_name}&nbsp;</td>";
 echo " <td>{$row->email}&nbsp;</td>";
 echo " <td>{$row->city}&nbsp;</td>";
 $no++;
 }
 }
 //echo $str;
echo " </tr>";
echo "</table>";
echo "</div>";
?>
</body>
</html>

Cara yang lebih rumit tapi lebih bisa di custom, sebelum saya “menemukan” phpexcel saya sering pakai cara ini

dan sepertinya cara ini sering digunakan karena kebanyakan tutorial di internet memakai cara ini: Read more…

Membuat Laporan(Report) dg FPDF, Html2FPDF & Html2PDF

29 December 2010 18 comments

Apa itu fpdf, html2fpdf & html2pdf?

Secara umum fpdf, html2fpdf, dan html2pdf adalah library dari PHP untuk membuat file PDF. hal ini sangat berguna jika kita membangun sistem reporting. PDF(Portable Document File) merupakan file yang bisa di baca di semua OS. jadi inilah alasannya kenapa memakai PDF untuk reporting.

Gak usah banyak cas-cis-cus langsung aja saya berikan contoh dari ke-3 library di atas.

1. FPDF


<?php
 include 'fpdf.php' ;
 mysql_connect('localhost','root','');
 mysql_select_db('dbrutan');
 $bulan = $_POST['bln'];
 $tahun = $_POST['thn'];
 $sql = "SELECT * FROM napi a JOIN dtpenghuni b ON a.id_penghuni = b.id_penghuni WHERE status = 'Bebas' AND EXTRACT(MONTH FROM tgl_bebas)= '$bulan' AND EXTRACT(YEAR FROM tgl_bebas)= '$tahun' ORDER BY id_napi DESC";

$qry=mysql_query($sql) or die (mysql_error());
 define('FPDF_FONTPATH','font/');

$pdf=new FPDF('L','mm','A4');
 $pdf->Open();
 $pdf->SetAutoPageBreak(false);
 $pdf->AddPage();
 $pdf->SetFont('Arial','B',12);
 $pdf->Cell(100,6,'KEMENTERIAN HUKUM DAN HAM RI',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'KANTOR WILAYAH JAWA TIMUR',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'RUMAH TAHANAN NEGARA BANGKALAN',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'JL. PERTEMPURAN NO.21 BANGKALAN',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'TELEPON : (031)3095014',0,0,'C');
 $pdf->Ln();
 $pdf->Text(160,25,'DAFTAR : Narapidana yang telah dilepaskan/dibebaskan',0);
 $pdf->Ln();
 $pdf->Text(181,31,"dari Rumah Tahanan Negara Bangkalan",0);
 $pdf->Ln();
 $bln = date("F", mktime(0, "$bulan"));
 $pdf->Text(181,37,"Dalam bulan $bln $tahun",0);

$y_axis_initial = 45;
 $pdf->SetFont('Arial','',10);
 $pdf->setFillColor(222,222,222);
 $pdf->SetY($y_axis_initial);
 $pdf->SetX(10);
 //Header tabel halaman 1
 $pdf->CELL(10,6,'NO',1,0,'C',1);
 $pdf->Cell(40,6,'NAMA',1,0,'C',1);
 $pdf->Cell(15,6,'GOL',1,0,'C',1);
 $pdf->Cell(15,6,'P/W',1,0,'C',1);
 $pdf->Cell(15,6,'UMUR',1,0,'C',1);
 $pdf->Cell(37,6,'PUTUSAN DARI',1,0,'C',1);
 $pdf->Cell(25,6,'PERKARA',1,0,'C',1);
 $pdf->Cell(30,6,'ASAL PENYIDIK',1,0,'C',1);
 $pdf->Cell(30,6,'TGL BEBAS',1,0,'C',1);
 $pdf->Cell(40,6,'ALAMAT',1,0,'C',1);
 $pdf->Cell(25,6,'KET PIDANA',1,0,'C',1);
 $pdf->Ln();
 $max=25;//max baris perhalaman
 $i=0;
 $no=0;
 $row_height = 6;//tinggi tiap2 cell/baris
 $y_axis = $y_axis + $row_height;
 $date = date("Y-m-d");

while($row = mysql_fetch_array($qry))
 {
 $no++;
 $selisih = strtotime($date) -  strtotime($row[tgl_lahir]);
 $umur = intval($selisih/(60*60*24)/365);
 if ($i == $max){               //jika $i=25 maka buat header baru seperti di atas
 $pdf->AddPage();
 $pdf->SetY(10);
 $pdf->SetX(10);
 $pdf->CELL(10,6,'NO',1,0,'C',1);
 $pdf->Cell(40,6,'NAMA',1,0,'C',1);
 $pdf->Cell(15,6,'GOL',1,0,'C',1);
 $pdf->Cell(15,6,'P/W',1,0,'C',1);
 $pdf->Cell(15,6,'UMUR',1,0,'C',1);
 $pdf->Cell(37,6,'PUTUSAN DARI',1,0,'C',1);
 $pdf->Cell(25,6,'PERKARA',1,0,'C',1);
 $pdf->Cell(30,6,'ASAL PENYIDIK',1,0,'C',1);
 $pdf->Cell(30,6,'TGL BEBAS',1,0,'C',1);
 $pdf->Cell(40,6,'ALAMAT',1,0,'C',1);
 $pdf->Cell(25,6,'KET PIDANA',1,0,'C',1);

$pdf->SetY(10);
 $pdf->SetX(25);
 $y_axis = $y_axis + $row_height;
 $i=0;
 $pdf->Ln();
 }
 //tampilkan data daari database
 $pdf->Cell(10,6,$no,1);
 $pdf->Cell(40,6,$row[nama],1);
 $pdf->Cell(15,6,$row[jenis_napi],1);
 $pdf->Cell(15,6,$row[jk],1);
 $pdf->Cell(15,6,$umur,1);
 $pdf->Cell(37,6,$row[srt_putusan],1);
 $pdf->Cell(25,6,$row[pasal],1);
 $pdf->Cell(30,6,$row[asal_penyidik],1);
 $pdf->Cell(30,6,$row[tgl_bebas],1);
 $pdf->Cell(40,6,$row[alamat],1);
 $pdf->Cell(25,6,'',1);
 $pdf->Ln();
 $i++;
 }

//buat footer
 $now = date("d F Y");
 $pdf->Ln(10);
 $pdf->SetFont('Arial','B',12);
 $pdf->Cell(400,6,"Bangkalan, Tgl  $now",0,0,'C');
 $pdf->Ln();
 $pdf->Cell(404,6,"Kepala Rutan Bangkalan",0,0,'C');
 $pdf->Ln(30);
 $pdf->SetFont('Arial','U',12);
 $pdf->Cell(404,6,"BAMBANG HARYANTO,Bc.IP.SH.M.Hum",0,0,'C');
 $pdf->Ln();
 $pdf->SetFont('Arial','',12);
 $pdf->Cell(404,6,"NIP. 19661018 1992 03 1001",0,0,'C');
 $pdf->Ln();
 $pdf->Output('Napi_bebas_'.date("F Y").'.pdf', 'I');
 ?>

Jika ada yang kurang atau menambahkan silahkan comment

Read more…

Fungsi Manipulasi Karakter di MySQL(DML)

15 December 2010 2 comments

Seperti bahasa pemrograman MySQL juga banyak mendukung fungsi-funsi yang ada di bahasa pemrograman

Berikut ini adalah sebagian contoh-contoh query Mysql yang berfungsi untuk  manipulasi karakter/huruf .

1. Fungsi  CONCAT(“string”)

Menggabungkan dua string menjadi satu.

2. Fungsi SUBSTR(“string”, dari karakter ke-, sebanyak berapa karakter)

Memotong string di bagian tertentu.

3. Fungsi LENGTH (“string”) atau LEN()

Menghitung panjang karakter.

4. Fungsi INSTR(“string”, “karakter”)

Menghitung letak karakter pada suatu string.

5. Fungsi LPAD(“string/bilangan”, batas, sisipan)

Menyisipkan karakter tertentu ke  dalam string sebanyak batasan yang di tentukan.

6. Fungsi IFNULL atau COALESCE.

Mengganti nilai NULL dengan suatu string.

SELECT CONCAT(kode,nama), LENGTH(nama), SUBSTR(nama,1,3), INSTR(nama,’a’), LPAD(harga, 10, ‘$’),fungsi, IFNULL(fungsi,’kosong’) FROM daftar_obat

FROM transaksi_obat

Manipulasi karakter mysql
Manipulasi karakter mysql

Read more…

Ekspresi Aritmatik dan Alias di MySQL

12 December 2010 4 comments

 

Di dalam Mysql kita bisa menerapkan/mendefinisikan  fungsi-fungsi atau perhitungan aritmetika, Hal ini sangat bermanfaat sekali jika kita ingin membangun sebuah sistem yang memerlukan banyak perhitungan matematikanya. Misal pada sistem jual beli, dimana kita akan  menghitung harga barang, total belanja dll.

Berikut ini salah satu contoh query Mysql untuk ekspresi aritmetik

Ekspresi Aritmatik

1. SELECT kode_obat, stok, 10*stok+100 FROM stock

 

 

 

 

 

 

 

 

2. SELECT kode_obat, stok, 10*(stok+100) FROM `stock`

 

 

 

 

 

 

 

Read more…

Categories: MySQL Tags: , , , , , , ,

Contoh Database Definition Language(DDL) di MySQL

6 December 2010 2 comments

DDL digunakan untuk mendefinisikan, mengubah, serta menghapus basis data dan objek-objek yang diperlukan dalam basis data, misalnya tabel, view, user, dan sebagainya.Secara umum, DDL yang digunakan adalah CREATE untuk membuat objek baru, USE untuk menggunakan objek, ALTER untuk mengubah objek yang sudah ada, dan DROP untuk menghapus objek. DDL biasanya digunakan oleh administrator basis data dalam pembuatan sebuah aplikasi basis data.

Jadi gampangnya DDL digunakan ketika kita ingin membuat, mengubah, dan menghapus object pada database. oleh karena itu DDL lebih berhubungan pada object bukan pada isi atau data. kata-kata yang akan sering kita jumpai dalam DDL antara lain : Create, Use, Alter, dan Drop(Kata Mas Eko Suwono).

Berikut ini saya contohkan beberapa contoh Database Definition Language(DDL).

Kita ilustrasukan kita punya database yang bernama “db” dan table “mahasiswa“.

NO QUERY FUNGSI CONTOH
1 SHOW DATABASES menampilkan semua database
2 SHOW TABLES manampilkan semua nama table dalam satu database
3 USE [DBName] menggunakan atau memilih database tertentu USE db;
4 DESCRIBE [TableName] menampilkan isi table dalam data base. DESC mahasiswa;
5 CREATE DATABASE [DBName] membuat database CREATE DATABASE db;
6 CREATE TABLE [TableName] Membuat tabel CREATE TABLE `mahasiswa` (`nrp` SMALLINT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,`nama` VARCHAR( 30 ) NOT NULL);

7 DROP DATABASE [DBName] menghapus database DROP DATABASE db;
8 DROP table [TableName] menghapus table dalam database DROP table mahasiswa;

Read more…

Categories: MySQL Tags: , , , ,
%d bloggers like this: