Halo semuanya, kembali lagi di sahretech. Baiklah pada kesempatan kali ini,
saya akan berbagi tutorial bagaiaman cara mengenerate surat secara otomatis di
php dengan menggunakan template dokumen word yang telah disediakan sebelumnya.
Bagaimana caranya?, ayo ikuti tutorialnya di bawah ini.
Salah satu fitur yang cukup bermanfaat pada aplikasi perkantoran atau aplikasi
surat menyurat adalah hadirnya fitur generate surat secara otomatis. Dengan
fitur tersebut, kita tinggal memasukkan variabel-variabel yang sering diganti
saja. Misalnya untuk membuat surat keterangan kuliah, dimana format surat ini
sama untuk semua mahasiswa, hanya saja nama, alamat, nomor telpon dan beberapa
variabel lainnya berbeda.
Nah, kali ini kita akan membuat fitur tersebut dengan bahasa pemrograman php,
cara membuatnya cukup mudah. hal yang perlu kalian siapkan hanya format surat
yang diketik dengan aplikasi Ms. Word lalu di simpan dalam ekstensi .rtf.
📰 1. Cara Mudah Membuat Pagination pada Laravel 8 read more
|
📰 2. Cara Membuat Fitur Login dan Registrasi pada Laravel 8 read more
|
📰 3. Cara Menggunakan Select2 dan Ajax agar Tidak Memberatkan Load Halaman read more
|
Cara Membuat Surat Otomatis dengan Rtf (Rich Text Format) dan Php
1. Pertama silahkan kalian siapkan dulu format surat yang akan kita jadikan
bahan tutorial kali ini. Agar memudahkan kalian, silahkan ikuti format surat
sederhana yang ada di bawah ini. Dan jangan lupa save as dokumen dengan
ekstensi .rtf atau rich text format
|
Contoh surat |
Jika kalian perhatikan, setiap kata yang diawali dengan tanda
# pada gambar di atas adalah kata yang akan kita ganti secara
dinamis nantinya. Untuk membuat variabel, tidak harus menggunakan tanda
#, kalian bisa menggunakan tanda lainnya atau tidak menggunakan tanda
sama sekali.
2. Buatlah sebuah folder baru di dalam folder htdocs dengan nama
latihan_generate_surat atau nama apapun yang kalian inginkan. Lalu
silahkan masukkan dokumen rtf (rich text format) yang telah kalian buat sebelumnya.
3. Tahap selanjutnya, buatlah sebuah file index.php di dalam folder
yang baru kita buat, lalu ikuti atau copy script yang di bawah ini.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Latihan Membuat Surat Otomatis</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
<div class="container col-lg-5">
<div class="card mt-4">
<form action="proses.php" method="post">
<div class="card-body">
<div class="form-group mb-2">
<label for="">Kota</label>
<input type="text" name="kota" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">Tanggal</label>
<input type="date" name="tanggal" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">Kelas</label>
<input type="text" name="kelas" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">Nama</label>
<input type="text" name="nama" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">NIS</label>
<input type="text" name="nis" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">Alamat</label>
<textarea name="alamat" class="form-control" rows="3"></textarea>
</div>
<div class="form-group mb-2">
<label for="">Penyakit</label>
<input type="text" name="penyakit" class="form-control">
</div>
<div class="form-group mb-2">
<label for="">Nama Orangtua</label>
<input type="text" name="namaortu" class="form-control">
</div>
<div class="form-group mb-2">
<button type="submit" class="btn btn-success">Kirim</button>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
Script di atas adalah contoh form sederhana dengan inputannya sesuai dengan
template yang telah kita buat sebelumnya. Dan untuk mempercantik form tersebut
saya menggunakan bootstrap 5. Jika kalian jalankan maka tampilan formnya akan
tampak seperti gambar di bawah ini.
|
Halaman form |
4. Selanjuntya kita, buatlah file baru dengan nama proses.php file ini
berfungsi untuk mengambil data dar dari file index.php dan memasukannya
ke dalam file rtf Ms. word yang kita buat, ikuti atau copy script di
bawah ini
<?php
$kota = $_POST['kota'];
$tanggal = $_POST['tanggal'];
$kelas = $_POST['kelas'];
$nama = $_POST['nama'];
$nis = $_POST['nis'];
$alamat = $_POST['alamat'];
$penyakit = $_POST['penyakit'];
$namaortu = $_POST['namaortu'];
$document = file_get_contents("SURAT.rtf");
$document = str_replace("#KOTA", $kota, $document);
$document = str_replace("#TANGGAL", date('d-m-Y', strtotime($tanggal)), $document);
$document = str_replace("#KELAS", $kelas, $document);
$document = str_replace("#NAMA", $nama, $document);
$document = str_replace("#NIS", $nis, $document);
$document = str_replace("#ALAMAT", $alamat, $document);
$document = str_replace("#PENYAKIT", $penyakit, $document);
$document = str_replace("#ORTU", $namaortu, $document);
header("Content-type: application/msword");
header("Content-disposition: inline; filename=surat.doc");
header("Content-length: " . strlen($document));
echo $document;
?>
Penjelasan: Pertama kita tangkap semua data yang dikirim dari index.php. Kita ambil file rtfnya dan kita replace dengan variabel yang telah kita input sebelumnya. Untuk penjelasan sudah saya tulis pada script di atas. Tapi jika kalian masih sulit untuk memahaminya silahkan tanya langsung ke saya melalui form komentar di bawah post ini.
5. Saatnya kita uji coba, silahkan save project kalian. Jika berhasil maka
tampilannya akan tampak seperti gambar di bawah ini.
|
Hasil Akhir |
Bagaimana?, cukup mudah bukan. Tidak perlu menggunakan library, kalian
langsung bisa membuat fitur yang sangat powerful ini hanya dengan file rtf dan
sedikit script php. Saatnya kalian kembangkan imajinasi kalian, bisa kalian
tambahkan database atau disematkan ke aplikasi perkantoran yang kalian buat.
Kekurangan
Ada satu hal yang perlu saya bahas, yaitu kekurangan dari si file rtf ini.
Ternyata kita tidak bisa memasukan file gambar, tabel, atau seperti kop surat ke dalam file rtf, jika dicoba akan banyak menampilkan pesan yang tidak jelas saat di download. Sebagai
gantinya kita perlu menggunakan plugin atau library tambahan. Salah satu
librarynya yang bisa kalian gunakan adalah library phpword.
Ok, sekian tutorial singkat kali ini tentang cara memuat surat otomatis dengan
template microsoft word dan php. Semoga bermanfaat, jika ada yang ingin
ditanyakan silahkan tinggalkan pesan kalian di kolom komentar di bawah
postingan ini. Sampai jumpa di tutorial pemrograman menarik lainnya dari
sahretech.
Mengapa saat didownload dan dibuka malah timbul pesan yang banyak tidak seperti ditutor?
ReplyDeletesudah saya coba kembali dan alhamdulillah bisa. Jadi pastikan format dokumennya adalah RTF (rich text format) dan diletakkan di dalam folder yang sama dengan file lainnya. Selain itu copy saja semua script agar tidak terjadi typo dan error nantinya. Jika semua saran sudah dikerjakan tapi masih terjadi masalah, coba masnya kirim pesan errornya ke saya. Terima kasih sebelumnya sudah berkunjung :D
Deletemaaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.
Deletemaaf mau tanya, saya coba ambil data dari database, tapi kenapa ya tidak semua fieldnya terbaca? dan juga kenapa hanya bisa 1 halaman? padahal data ditabelnya lebih dari 1, mohon pencerahannya, trims
Deletefield database harus sesuai dengan tanda di file rtfnya, lalu disesuaikan juga dengan script yang ada di file proses.php. saran saya coba untuk mengikuti contoh, lalu coba tambahkan 1 data, lalu tambah 1 data lagi dan seterusnya
Delete$query = mysqli_query($kon, 'SELECT * FROM tb_kirim');
Delete$result = array();
while ($data = mysqli_fetch_array($query)) {
$nama = $data['nm'];
$alamat = $data['alamat'];
$rw = $data['rw'];
$rt = $data['rt'];
$kel = $data['kelurahan'];
$kec = $data['kecamatan'];
}
$document = file_get_contents("SURAT.rtf");
$document = str_replace("#NAMA", $nama, $document);
$document = str_replace("#ALAMAT", $alamat, $document);
$document = str_replace("#RT", $rt, $document);
$document = str_replace("#RW", $rw, $document);
$document = str_replace("#KEL", $kel, $document);
$document = str_replace("#KEC", $kec, $document);
kurang lebih gitu, nah untuk yang alamatnya selalu kosong datanya, kenapa? dan tidak bisa jd 2 halaman juga hehe
pastikan juga hastag alamat dan seterusnya juga dibuat di dalam file rtfnya. biar lebih jelas bisa kirim sc errornya di fanspage
Deleteklo lebih dari 2 halaman saya belum coba, bisa jadi ini kekurangan file rtf, untuk mencoba 2 halaman lebih bisa menggunakan library phpword
keren
ReplyDeletehehe, terima kasih kunjungannya mas :D
Deletehai kak, maaf kok punya saya banyak teks yah :" ? padahal sudah mengikuti tutorial
ReplyDeletesudah saya coba kembali dan alhamdulillah bisa. Jadi pastikan format dokumennya adalah RTF (rich text format) dan diletakkan di dalam folder yang sama dengan file lainnya. Selain itu copy saja semua script agar tidak terjadi typo dan error nantinya. Jika semua saran sudah dikerjakan tapi masih terjadi masalah, coba masnya kirim pesan errornya ke saya lewat fanspage. Terima kasih sebelumnya sudah berkunjung :D
Deletemaaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.
Deletehai kak, kok punya saya pas bentuk doc malah huruf banyak yah ? padahal saya sudah mengikuti semuanya
ReplyDeletetanya langsung di fb saja, sc script dan dokumennya juga
Deletemaaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.
Deletekalau biar tulisannya tebal gimana bang?
ReplyDeleteBuat format surat rtfnya bertulisan bold
Deleteokok makasih bang
Deleteini bisa dimasukin database kan min?
Deletebisa dong :)
DeleteMin biar format surat saat di save bisa diatur ga namanya? Misal mau di save otomatis ngikutin nama gitu?
ReplyDeletetinggal ganti seperti ini mas
Deleteheader("Content-disposition: inline; filename=".$variabel.".doc");
maaf min, kalau hasilnya mau di simpan pada drive gimana caranya, misalnya di simpan pada folder tertentu ?
ReplyDeletemisalkan kita punya sebuah data , terus kita bisa ga bang menggunakan satu tamplat buat berbagai penerima dengan cara mengambil data
ReplyDeletebisa, masnya bikin database penerima. kemudian, buat fungsi untuk mengirim data ke semua penerima. cara paling sederhana, masnya bisa melakukan looping pengiriman data ke penerima yang berbeda.
Deletemas mau tanya, kalau cara looping per halaman gimana ya? misalkan ada 10 data, dan per datanya tampil per halaman, jadi ada total 10 halaman dalam 1 file doc
ReplyDeleteizin bertanya apakah bisa outputnya file pdf dan bagaimana tutorialnya. Terimakasih
ReplyDelete