Tampilkan postingan dengan label software. Tampilkan semua postingan
Tampilkan postingan dengan label software. Tampilkan semua postingan

Kamis, 02 Juni 2022

Pointer , Function Pointer, Void Pointer | Bahasa C

Pointer

Pada pembahasan sebelumnya kita membahas tentang array dan function. Maka kali ini kita akan membahas tentang pointer. Bahasa C merupakan bahasa level rendah yang bisa dengan mudah mengakses lokasi memori.

Sebagai contoh dalam penggunaan fungsi scanf() yang menempatkan nilai dan tempat memori pada suatu variabel dengan menggunakan simbol &.

#include <stdio.h>

int main(void)

{

int angka;

printf("masukan angka yang diinginkan : ");

scanf("%d", &angka); //ini yang dimaksud pointer

printf("\n Angka yang kamu masukan ialah %d \n", angka);

return 0;

}

Contoh program sederhana diatas merupakan contoh penggunaan pointer. Lalu bagaimana kita mengakses dan mengetahui alamat memori dari suatu variabel? Sebuah alamat memori diberikan seperti angka hexadesimal yakni

#include <stdio.h>

int main(void)

{

int angka;

printf("masukan angka yang diinginkan : ");

scanf("%d", &angka); //ini yang dimaksud pointer

printf("\n Angka yang kamu masukan ialah %d \n", angka);

printf("Alamat memorinya dari variabel angka yakni %x \n", &angka);

return 0;

}

Ini juga berlaku pada variabel di dalam fungsi yang bisa dilihat pada contoh program ini

#include <stdio.h>

void tes(int angka);

int main()

{

int z = 4;

printf("Alamat memori dari z adalah %x \n", &z);

tes(z);

printf("Alamat memori dari z adalah %x \n", &z);

tes(z);

return 0;

}

void tes(int angka)

{

printf("alamat dari variabel angka pada fungsi tes yakni %x \n", &angka);

}

Memori yang dipakai untuk dua variabel itu sama dari kurung buka sampai tutup dari kurung.

Function Pointer

Pointer bisa digunakan di dalam fungsi yang lainya. Sebagaimana dari sifat poiter yang memiliki alamat memorinya dan nilainya tersendiri. Untuk menggunakan function poiter atau pointer di fungsi kita bisa menggunakan formasi seperti

return_type (*func_name)(parameter)

Untuk praktiknya mari kita buat file bernama poin2func.c dengan isi file sebagai berikut:

#include <stdio.h>

void katakan_hello(int perulangan ); // inisiasi pointer

int main(void)

{

    void (*func_poin)(int); //function pointer

    func_poin = katakan_hello;//menginisiasi pointer ke function pointer

    func_poin(3);// memasukan nilai sekaligus memanggil pointer

    return 0;

}

void katakan_hello(int perulangan)

{

    int x;

    for (x = 0; x < perulangan; x++)

    {

        printf("Hallo Programmer \n");

    }

}

Pada baris ke 6 dari file poin2func tersebut kita bisa menambahkan & pada kode func_poin = &katakan_hello; dan Juga kita bisa menggunakan tanda kurung dan * untuk memasukan nilai sekaligus memanggil pointer pada baris ke 7 seperti(*func_poin)(3); atau menjadi (func_poin)(3); Penggunaan * tidak masalah dalam baris kode itu.

Void Pointer

Void pointer merupakan pointer yang digunakannuntuk mengembalikan ke tipe alamat apapun. Walaupun alamat itu digunakan pada tipe-tipe data yang berbeda. Cara mendeklarasikanya yakni dengan format:

void *ptr;

Untuk memahaminya mari kita buat file voidPoin.c yang berisi kode ini:

#include <stdio.h>

int main(void)

{

    int x = 12;

    float y = 3.4;

    char c ="l";

    void *ptr;

    ptr = &x;

    printf("void ptr menunjuk pada %d \n", *((int *)ptr));

    ptr = &y;

    printf("void ptr menunjuk pada %f \n", *((float *)ptr));

    ptr = &c;

    printf("void ptr menunjuk pada %c \n", *((char *)ptr));

    return 0;

}

Void pointer juga biasanya digunakan untuk mendeklarasikan function. Sebagai contoh pada kode void * kotak(const void *);. kode void * digunakan untuk semua tipe data yang akan digunakan sedangkan kata const digunakan untuk membuat tipe data  nilai yang digunakan tetap sama. Sebagai dalam file voidPoin2.c :

#include <stdio.h>

void * kotak(const void * sisi);

int main(void)

{

    int a, ktk;

    a = 7;

    ktk = kotak(&a);

    printf("panjang sisi kotak %d dan luasnya %d \n", a, ktk);

    return 0;

}

void * kotak(const void * sisi)

{

    int luas;

    luas = (*(int *) sisi) * (*(int *)sisi);

    return luas;

}

Contoh program pengurutan.c

Program ini menggunakan qsort yang ada pada pustaka stdlib.h. Lalu kita menggunakan void pointer bandingkan.

#include <stdio.h>

#include <stdlib.h>


int bandingkan (const void *, const void *); 


int main() {

    int arr[5] = {52, 23, 56, 19, 4};

    int num, width, i;

  

    num = sizeof(arr)/sizeof(arr[0]);

    width = sizeof(arr[0]);

    qsort((void *)arr, num, width, bandingkan);

    for (i = 0; i < 5; i++)

        printf("%d ", arr[ i ]);

    

    return 0;

}


int bandingkan (const void *elem1, const void *elem2) {

    if ((*(int *)elem1) == (*(int *)elem2))

        return 0;

    else if ((*(int *)elem1) < (*(int *)elem2))

        return -1;

    else

        return 1;

Kamis, 19 Mei 2022

Array | Bahasa C

Mengenal Array

Array merupakan struktur data yang menyimpan kumpulan nilai yang berhubungan dalam tipe data yang sama. Array biasanya digunakan untuk menampilkan data ulang yang berhubungan dengan satu deskripsi nama daripada menggunakan variabel nama unik yang berbeda-beda. Sebagai contoh kita memiliki kumpulan data nilai dan nomer mahasiswa.

#include <stdio.h>

int main(void){

int NIM[260]={114567829, 114567830};

float NilaiDataStruktur[260]={8.2,7.9};

printf("Struktur data nilai matakuliah dari %d adalah %.2f \n",NIM[0], NilaiDataStruktur[0]);

return 0;

}

Menginisiasi Array

Dalam bahasa C, kita bisa menggunakan jenis data diikuti dengan nama yang digunakan untuk array yang ingin dibuat lalu tambah kurung kotak untuk banyak data yang ingin dibuat. Cintoh diatas yakni int NIM[260]={114567829, 114567830}; yang mengartikan bahwa kita membuat array dengan nama NIM yang jenis datanya yakni int dengan banyak data 260.

Menambahkan, Mengubah dan Menghapus Nilai Array

pada kode int NIM[260]={114567829, 114567830}; kita menambahkan array NIM[0] dan NIM[1]. Bagaimana dengan yang ke-3 dan seterusnya nilai dari integer yang belum ditambahkan yakni 0, bila tipe data float yakni 0.000000 dan char yakni tidak ada yah bisa kita sebut dengan default value. Lalu bagaimana jika kita ingin menambahkan nilai NIM[100] misalkan. Kita hanya perlu menggunakan kode NIM[100] = 114567930; ini akan menambahkan nilai NIM[100].Ini juga bisa diguakan untuk mengubah nilai yang sudah ada. Untuk menghapus datanya kamu bisa menggunakan default value sesuai dengan tipe datanya.

Array Dua Dimensi

Ini biasanya digunakan untuk kepentingan mengolah data dalam jumlah yang banyak. Contoh sederhana dari array dua dimensi yakni :

int dimensi[2][3] = {

  {3, 2, 6},

  {4, 5, 20}

};

Untuk memanggilnya kita perlu menggunakan perulangan dalam bentuk seperti ini.

int a, b;

for(a=0; a<2; a++){

    for(b=0;b<3;b++){

    printf(" %d",dimensi[a][b]);

    }

printf("\n");

}

Seperti dalam pembagian nilai suatu matapelajaran atau matakuliah di sebuah sekolah. Diibaratkan kita memiliki 12 orang siswa yang memiliki masing-masing 5 nilai yang akan kita olah sebagai data yang akan kita olah sebagai informasi. Berarti kita memiliki 60 nilai.

#include <stdio.h>

#define Mahasiswa 12 //mahasiswa

#define NilaiMatakuliah 5 //matakuliah

int main(void)

{

//mengisi data permatakuliah.

const float rapot[NilaiMatakuliah][Mahasiswa] =

{

{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},

{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},

{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},

{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},

{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}

};

int matkul, mhs;

float subtot, total;

printf("Jumlah Nilai Per Matakuliah \n");

for (matkul = 0, total = 0; matkul < NilaiMatakuliah; matkul++)

{ // jumlahkan semua nilai

for (mhs = 0, subtot = 0; mhs < Mahasiswa; mhs++)

subtot += rapot[matkul][mhs];

printf("%5d %15.1f\n", 2010 + matkul, subtot);

jumlah += subtot; // total untuk semua tahun

}

printf("\nNilai rata-rata mahsiswa %.1f.\n\n",

total/NilaiMatakuliah);

printf("Rata-rata Permatakuliah:\n\n");

printf(" ~A~ ~B~ ~C~ ~D~ ~E~ ~F~ ~G~ ~H~ ~I~ ~J~ ");

printf("~K~ ~L~\n");

untuk (mhs = 0; mhs < Mahasiswa; mhs++)

{

for (matkul = 0, subtot =0; matkul < NilaiMatakuliah; matkul++)

subtot += rapot[matkul][mhs];

printf("%4.1f", subtot/NilaiMatakuliah);

}

printf("\n");

return 0;

}

Untuk menginisiasi array dua dimensi digunakan seperti pada rapot.c

float rapot[NilaiMatakuliah][Mahasiswa] =

{

{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},

{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},

{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},

{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},

{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}

};

Array Bahasa C


Ini juga berlaku untuk array lebih dari dua dinensi tersebut. Seperti int kotak[10][20][30]; yeng merupakan array 3 dimensi.


Selasa, 12 April 2022

Fungsi | Bahasa C

Mengenal Fungsi

Fungsi merupakan sebuah unit program yang isinya sendiri didisain untuk menyelesaikan sebuah tugas tertentu. Aturan penggunaan struktur dari sebuah fungsi dan bagaimana cara menggunakanya. Sebuah fungsi sama berperan seperti pada bahasa lainnya walau dengan cara penggunaanya berbeda. Sebagai contoh fungsi printf() dan main().

Membuat Fungsi

Dalam pembuatan fungsi kita harus membuat prototipenya dulu sebelum membuat fungsi yang diinginkan dalam contoh di bawah ini saya menggunakan fungsi starbar untuk membuat garis pemisah pada header.

Di bawah ini merupakan contoh program untuk fungsi yang sederhana. Yaitu yang tidak membutuhkan argumen atau masukan data.

//header.c

//header.c

#include <stdio.h>

#define NAME "YouManTech"

#define ADDRESS "Kp Tanjung Garut Desa Cijunti"

#define PLACE "Campaka - Purwakarta 41121"

#define WIDTH 40

void starbar(void); /* prototype the function */

int main(void)

{

starbar();

printf("%s\n", NAME);

printf("%s\n", ADDRESS);

printf("%s\n", PLACE);

starbar(); /* use the function */

return 0;

}

void starbar(void) /* define the function */

{

int count;

for (count = 1; count <= WIDTH; count++)

putchar('*');

putchar('\n');

}

fungsi bahasa c

Contoh yang kedua yakni fungsi yang menggunakan argumen. Saya akan menggunakan 2 argumen untuk fungsi show_n_char. Yaitu tipe char untuk huruf dan tipe int untuk tipe angka yang digunakan untuk membuat spasi agar kalimatnya berada di tengah.

/* header2.c */

 #include <stdio.h>

 #include <string.h> /* for strlen() */

 #define NAME "YouManTech"

 #define ADDRESS "Kp Tanjung Garut Desa Cijunti"

 #define PLACE "Campaka - Purwakarta 41121"

 #define WIDTH 40

 #define SPACE ' '

 void show_n_char(char ch, int num);

 int main(void)

 {

 int spaces;

 show_n_char('*', WIDTH); /* using constants as arguments */

 putchar('\n');

 show_n_char(SPACE,  14); /* using constants as arguments */

 printf("%s\n", NAME);

 spaces = (WIDTH - strlen(ADDRESS)) / 2;

 /* Let the program calculate */

 /* how many spaces to skip */

 show_n_char(SPACE, spaces);/* use a variable as argument */

 printf("%s\n", ADDRESS);

 show_n_char(SPACE, (WIDTH - strlen(PLACE)) / 2);

 /* an expression as argument */

 printf("%s\n", PLACE);

 show_n_char('*', WIDTH);

 putchar('\n');

 return 0;

 }

 /* show_n_char() definition */

void show_n_char(char ch,int num)

 {

 int count;

 for (count = 1; count <= num; count++)

 putchar(ch);

 }

fungsi C Lang

Pada contoh di atas kita menggunakan argumen formal dan parameter formal. Sehingga kita bisa menggunakan nama yang sama diluar fungsi tersebut. Selanjutnya untuk catatan penggunaan ANSI C harus menyertakan tipe argumen pada fungsi header walau tipe argumenya sama.

void TAMBAH(int angka1, angka2) /* contoh header yang salah */

void TAMBAH(int angka1, int angka2) /* contoh header yang benar */

batal TAMBAH(angka1, angka2)

int angka1, angka2; /* contoh header yang benar

digunakan untuk pra-ANSI C */

Mari kita coba pada file header2b.c

//header2b.c

 #include <stdio.h>

 #include <string.h> /* for strlen() */

#define NAME "YouManTech"

#define ADDRESS "Kp Tanjung Garut Desa Cijunti"

#define PLACE "Campaka - Purwakarta 41121"

 #define WIDTH 40

 #define SPACE ' '

 void show_n_char(char ch, int num);

 int main(void)

 {

 int spaces;

 show_n_char('*', WIDTH); /* using constants as arguments */

 putchar('\n');

 show_n_char(SPACE,  14); /* using constants as arguments */

 printf("%s\n", NAME);

 spaces = (WIDTH - strlen(ADDRESS)) / 2;

 /* Let the program calculate */

 /* how many spaces to skip */

 show_n_char(SPACE, spaces);/* use a variable as argument */

 printf("%s\n", ADDRESS);

 show_n_char(SPACE, (WIDTH - strlen(PLACE)) / 2);

 /* an expression as argument */

 printf("%s\n", PLACE);

 show_n_char('*', WIDTH);

 putchar('\n');

 return 0;

 }

 /* show_n_char() definition */

void show_n_char(ch,num)

char ch;

int num;

 {

 int count;

 for (count = 1; count <= num; count++)

 putchar(ch);

 }

Fungsi |  Bahasa C

Maka kita akan mendapatkan peringatan dari compiler tetapi program bisa dijalankan.

Rabu, 09 Maret 2022

Conditional, Pilihan Ganda | Control Statement | Bahasa C

Pada kesempatan ini saya akan membahas tentang :

Dalam suatu program pasti terdapat beberapa pilihan masukan dengan berbagai tipe data. Pada setiap masukan tertentu yang diberikan ke program ada aksi tertentu yang program tersebut jalankan. Mari kita buat suatu program semisal jawaban sebuah pertanyaan dalam suatu pelajaran.

A.Statement if, if else, if else if else

Statement if merupakan statement dimana kita membuat sebuah kondisi yang akan mencetak pernyataan benar dimana kondisi tersebut bernilai true atau dan false dalam tipe boolean. Sebagai contohnya dalam pemberian jawaban tersebut.

//soal.c

#include <stdio.h>

int main(void){

printf ("Silahkan masukan kunci jawaban :");

char k_jawaban = getchar ();

printf ("\nSilahkan masukan jawaban murid :");

char jawaban = getchar ();

scanf ("%c", &jawaban);

if (jawaban == k_jawaban)

printf("jawabanya benar");

return 0;

}

if else bahasa c


Selanjutnya mari kita tambahkan mencetak jawaban salah bila tidak sama jawaban dengan kunci jawabanya tidak sama.


//soal.c

#include <stdio.h>

int main(void){

printf ("Silahkan masukan kunci jawaban :");

char k_jawaban = getchar ();

printf ("\nSilahkan masukan jawaban murid :");

char jawaban = getchar ();

scanf ("%c", &jawaban);

if (jawaban == k_jawaban)

printf("jawabanya benar");

else

printf ("jawaban salah");

return 0;

}

Kita akan membuat program penilaian.c yang dimana kita akan menggunakan if else if dan else. Bila memiliki nilai lebih dari 75 maka lulus, memiliki nilai lebih atau sama dengan 85 memiliki nilai yang bagus dan mendapatkan nilai 100 berarti sempurna.

//penilaian.c

#include <stdio.h>

int main(void){

int nilai;

printf("Silahkan masukan nilai yang kamu dapatkan ?");

scanf("%d", &nilai);

if (nilai == 100)

printf("Nilai yang sempurna kawan!");

else if(nilai >= 85)

printf("Nilai yang bagus!");

else if(nilai >= 75)

printf("Kamu lulus");

else

printf("Kamu belum lulus!");

return 0;

}

If else if else bahasa c

B.Statement switch break

Pada statement ini kita akan membuat program nama-nama tumbuhan dengan memasukan huruf pertama dari nama tumbuhan tersebut. Penggunaan switch break ini lebih efisien digunakan pada pilihan baik berupa huruf maupun angka.

//tumbuhan.c

#include <stdio.h>

#include <ctype.h>

int main(void){

    char tumbuhan;

    printf("Tuliskan huruf depan dari nama tumbuhan dengan huruf kecil\n");

    printf("Maka program ini akan memberikan nama tumbuhan itu.\n");

    printf("Untuk menghentikan program ini masukan \'#\' !\n");

    while((tumbuhan = getchar()) != '#'){

        if('\n' == tumbuhan) //jika masukan kosong maka lanjutkan program ini

            continue;

        if(islower(tumbuhan)) /* yang dieksekusi oleh program hanya huruf kecil */

            switch(tumbuhan){

                case 'a':

                printf("anggrek merupakan salah satu tumbuhan yang indah\n");

                break;

                case 'b':

                printf("bayam merupakan tanaman yang memiliki gizi yang tinggi\n");

                break;

                case 'c':

                printf("cabe merupakan tanaman yang membuat makanan lebih lezat.\n");

                break;

                case 'd':

                printf("delima memiliki kulit buah warna merah tua atau hitam dan isi buah yang putih kemerah~-merahan\n");

                break;

                default:

                printf("Mungkin itu masih sebuah tanaman misterius\n");

            }

        else

 printf("Program ini hanya mengenal huruf kecil.\n");

 while (getchar() != '\n')

 continue; /* lanjutkan untuk memasukan nama depan tumbuhan lain */

 printf("Tolong masukan sebuah huruf kecil atau #.\n");

 } // perulangan selesai

printf("terimakasih telah menggunakan applikasi ini!\n");

return 0;

}

switch break bahasa c

C.Statement goto

Statement goto ini akan melompat ke label yang dia gunakan. Format penggunaan goto yakni


goto label ;

 label : statement

 

atau bisa goto setelah label.


 label : statement

goto label ;

Mari kita buat contohnya pada program lompat.c

//lompat.c

#include <stdio.h>

int main(void){

printf("apakah kamu yakin untuk melanjutkan ? \'y\' atau \'n\' \n");

char ch = getchar();

pertama : ch = getchar();

if(ch != 'y')

goto pertama;

printf("Proses berjalan!\n");

return 0;

}

Untuk perhatian pada banyak kondisi dalam satu waktu harus diperhatikan operator logika dan tes yang komplit. Sebagai contoh:

if (a < x < z) // salah --tidak ada operator logika

 ...

 if (ch != 'q' && != 'Q') // salah -- tesnya kurang sempurna

 ... 

Sedangkan untuk contoh yang benarnya yakni :

 if (a < x && x < z) // menggunakan && untuk 2 ekspresi

 ...

 if (ch != 'q' && ch != 'Q') // menggunakan && untuk 2 ekspresi

 ...

Semoga tulisan ini membantu anda yanh sedang tahap belajar bahasa low level ini. Boleh komentar bila ada yang belum dimengerti.

Selasa, 08 Maret 2022

Control Statement | Perulangan - Bahasa C

Pendahuluan

Mengatur pernyataan digunakan untuk membuat sebuah logika yang benar tentang sebuah atau banyak pernyataan sehingga sesuai dengan kondisi yang dimasukan.Pada artikel ini kita akan membuat beberapa program yang:

Mengeksekusi pernyataan-pernyataan dalam satu blok

Mengulang sebuah blok pernyataan hingga sesuai kondisi yang diharapkan

Menggunakan sebuah tes untuk memutuskan antara berbagai macam blok pernyataan

Beberapa kata kunci yang digunakan pada perulangan yakni while, for dan do while. Ada 3 hal yang harus diperhatikan dan ada pada setiap perulangan yakni

1. Harus memberikan nilai pada counter

2. Counter dibandingkan pada beberapa jumlah batas Perulangan

3. Counter ditambahkan atau dikurangi pada setiap perulangan.

A.Perulangan while

Dibawah ini merupakan contoh program perulangan yang dimana akan menambahkan semua bilangan yang dimasukan pengguna sebelum program penambahan.c berhenti.

 /* penambahan.c */

 #include <stdio.h>

 int main(void)

 {

 long num;

 long sum = 0L; /* menjadikan variabel bernilai sum 0*/

 int status;

 printf("Silahkan masukan bilangan yang ingin ditambahkan ");

 printf("(q untuk selesai/keluar): ");

 status = scanf("%ld", &num);

 while (status == 1) /* == berarti "nilainya sama seperti" */

 {

 sum = sum + num;

 printf("Silahkan masukan bilangan yang akan ditambahkan (q untuk selesai/keluar): ");

 status = scanf("%ld", &num);

 }

 printf("penjumlahan semua bilangan yang dimasukan %ld.\n", sum);

 return 0;

 }

while bahasa C

Pada program penambahan.c kita menggunakan statement while untuk menambahkan bilangan bila yang dimasukan pengguna merupakan bilangan integer. Bila tidak maka program akan memberikan hasil penjumlahan semua bilangan yang telah dimasukan, kemudian program tersebut mati. Karena kondisi statemenya tidak memenuhi syarat yakni tidak memasukan integer.

Dibawah ini juga ada program ketika.c dimana lebih sedikit barisnya dan agar bisa difahami dengan baik penggunaan statement while.

//program ketika.c

#include <stdio.h>

 int main(void)

 {

 int n = 5;

 while (n < 7) // baris 7

 {

 printf("n = %d\n", n);

 n++; // baris 10

 printf("Sekarang n = %d\n", n); // baris 11

 }

 printf("Perulangan atau loop selesai.\n");

 return 0;

 }

B.Perulangan for

Untuk perulangan menggunakan for kita harus mengetahui struktur dari penggunaan statement for tersebut yakni for(inisiasi; kondisi; pembaruan). Untuk contoh sederhananya yakni kita akan menghitung mundur dari angka 11 ke 0.

//hitungmundur.c

#include <stdio.h>

int main(void)

{

for(int no = 11; no >= 0; no--)

{

printf("%d\n", no);

}

return 0;

}

Untuk program yang digunakan menentukan harga suatu komoditi per-ons

//cabe.c

#include <stdio.h>

 int main(void)

 {

 const int HargaPokok = 3500; // harga tambah ongkos kirim pertransaksi

 const int HargaPerOns = 2500; // tambahan harga @1ons

 int ons, harga;

 printf("Harga Cabe Hari Ini\n");

 printf(" ons harga\n");

 for (ons=1, harga = HargaPokok ; ons <= 16; ons++, harga += HargaPerOns)

 printf("%3d Rp.%4d\n", ons, harga);

 return 0;

 }

for bahasa C

C.Perulangan do while

Untuk perulangan do while sering digunakan dalam beberapa kondisi dimana harus ada pernyataan setelah kondisi tersebut tereksekusi. Seperti bila mana kita memasukan kode yang salah kemudian kita harus kembali lagi ke halaman masuk. Dan kita mengetahui bahwa kode yang kita berikan itu keliru.

Struktur dari perulangan do while ini yakni

do {statement} while ( expression ); Sebagai contoh dalam penggunaan password dalam program inputpass.c ini.

//inputpass.c

#include <stdio.h>

int main(void)

{

const int pass= 1567;

int input_pass;

do{

printf("Silahkan masukan pasword yang benar untuk masuk ke applikasi ini \n");

printf("Password : \n");

scanf("%d", &input_pass);

}while(input_pass != pass);

printf("Kode yang anda masukan benar");

return 0;

}

Bila kamu memasukan angka selain dari 1567 maka kamu akan kembali harus memasukan angka yang benar. Selain itu, kita harus bisa memilih perulangan yang semestinya digunakan perulangan entry-condition atau perulangan exit-condition. Biasanya para pengembang dan ilmuan komputer sering menggunakan perulangan entry-condition karena merupakan superior.

Penggunaan break dan continue

Disisi lain kita juga bisa menambahkan break dan atau continue pada saat perulangan. Bila kondisi yang dikehendaki betul maka break akan mengakhiri perulanganya, sedangkan bila continue hanya tidak mengeksekusi kode yang digunakan bila saat kondisi benar dan meneruskan perulangan hingga selesai. Berikut ini penggunaanya dalam bentuk script kode.

//berhenti.c

#include <stdio.h>

int main (void){

int angka = 6;

while(angka > 0)

{

if(angka == 3)

break;

printf ("%d\n", angka);

angka--;

}

return 0;

}

////////////////////////CONTINUE\\\\\\\\\\\\\\\\\\\\

//lanjut.c

#include <stdio.h>

int main (void){

int angka = 6;

while(angka > 0)

{

angka--;

if(angka == 3)

continue;

printf ("%d\n", angka);

}

return 0;

}


Oke saya rasa sekian dari saya semoga bermanfaat bagi penulis dan umumnya untuk para pambaca sekalian

Senin, 24 Januari 2022

Operasi Aritmatika - Bahasa C

Pendahuluan

Bahasa C juga bisa digunakan untuk operasi aritmatika penambahan(+), pengurangan(-), perkalian(*), pembagian(/) dan sisa pembagian(%). Pengunaan operasi aritmatika ini biasanya digunakan untuk tipe data bilangan. Sebagai contoh dalam penggunaan beberapa program dibawah ini

A. Penambahan

#include <stdio.h>

int main (){

int a = 10, b =5;

printf ("jumlah kedua bilangan yakni %d", a+b);

return 0;

B. Pengurangan

// pengurangan.c

#include <stdio.h>

int main (){

int a = 10, b =5;

printf ("%d dikurang %d sisanya %d", a, b, a-b);

return 0;

C. Perkalian

// perkalian.c

#include <stdio.h>

int main (){

int a = 10, b =5;

printf ("%d x %d = %d", a, b, a*b);

return 0;

}

Operator Aritmatika Bahasa C

Operasi Aritmatika Bahasa Pemrograman C


D. Pembagian

// pembagian.c

#include <stdio.h>

int main (){

int a = 10, b =5;

printf ("%d / %d = %d", a, b, a/b);

return 0;

}

E. Sisa Pembagian

//ganjilgenap.c

#include <stdio.h>

int main (){

int bilangan;

printf ("Silahkan masukan satu bilangan lalu tekan enter \n");

scanf ("%s", &bilangan);

if (bilangan % 2 == 0)

printf ("bilangan yang kamu masukan merupakan bilangan genap");

else if (bilangan % 2 == 1)

printf ("bilangan yang kamu masukan merupakan bilangan ganjil");

else

printf ("Terjadi Error");

return 0;

}

Bagaimana mudah bukan dipraktekan.

Komentar - Bahasa C

Pendahuluan

Komentar biasanya digunakan untuk memberikan informasi pembaca kode. Komentar ini tidak akan dieksekusi sebagai bagian dari kode program dan bisa diletakan dimanapun. Untuk mempermudah mengidentifikasi, merawat dan mengembangkn kode program yang telah dibuat.

Komentar Bahasa C
Komentar Bahasa Program C

1. Menggunakan /* */

Contoh penggunaannya yakni

#include <stdio.h>

/* Sebuah program c

* Versi 1.0

*/

int main (){

printf ("hello world!");

return 0;

}

2. Menggunakan //

Contoh penggunaan pada programnya

#include <stdio.h>

int main (){

//menginisiasi nilai variabel x

int x = 42;

printf ("nilai x adalah = %d", x); //mencetak nilai variabel

return 0;

}

Kamis, 06 Januari 2022

Input Dan Output - Bahasa C

Input

Beberapa input pada bahasa c yakni :

getchar

Masukan ini merupakan masukan yang hanya membutuhkan satu karakter saja misalkan kamu memasukan 15 maka yang akan masuk hanya 1 sedangkan 5 tidak. Berikut contoh program sederhana yang dibuat oleh saya:

#include <stdio.h>

        int main (){

        printf ("Masukan kamu: ");

        char a = getchar ();

        printf ("Kamu memasukan : %c", a);

        return 0;

}

gets(implicit)

Masukan ini tidak lagi direkomendasikan karena kemungkinan akan dihilangkan pada versi lebih baru. Tetapi masukan ini masih bisa digunakan:

#include <stdio.h>

int main (){

        char a [100];

        gets (a);

        printf ("Kamu masukan : %s", a);

        return 0;

}

scanf

Masukan ini merupakan masukan yang sering digunakan dalam bahasa c. Untuk mengisi 2 variabel yang berbeda cukup dengan spasi. Sebagai contoh dalam penggunaan program ini:

#include <stdio.h>

int main (){

        int a, b;

        printf ("Masukan 2 nomer :");

        scanf ("%d %d", &a, &b);

        printf ("Jumlah kedua nomer tersebut adalah %d", a+b);

        return 0;

}

Masukan dan keluaran bahasa c

Input dan output bahasa c


Output

Keluaran dari bahasa c yang biasa digunakan yakni

printf

Keluaran ini sudah sering kita gunakan dalam pembuatan program sebelumnya. Memang mudah dan sederhana tetapi kita masih bisa memformatnya agar terlihat lebih midah dimengerti.

#include <stdio.h>

int main(){

    char dpn[30],blkg[30];

    printf("Nama depan :");

    scanf("%s", &dpn);

    printf("Nama Belakang :");

    scanf("%s", &blkg);

    printf("Jadi nama lengkapmu %% %% ", dpn,blkg);

    return 0;

}

puts

Keluaran ini biasanya digunakan dalam bentuk data string.

#include <stdio.h>

int main (){

        char judul [100];

        printf ("Masukan Judul :");

        gets (judul);

        printf ("Judul Artikelnya \n");

        puts (judul);

        return 0;

}

putchar

Keluaran ini hanya menampilkan data dalam satu karakter saja. Ini bisa digunakan dalam jawaban pilihan ganda. Contoh dalam program ini

#include <stdio.h>

int main (){

        printf ("Masukan Pilihan Kamu ");

        char pilihan = getchar();

        printf ("pilihanya \n");

        putchar (pilihan);

        return 0;

}

Memformat Input - Output

Dalam subbab ini dibahas tentang memformat data dan keluaran program. Agar mudah dimengerti oleh pengguna dan lebih efisien dalam program yang dibuat.

\n baris baru

\t tab

\\ backslash

\b backspace

\' single quote

\" double quote

Untuk mengkonversi tipe karakter yang dimasukan dan ditampilkan pada suatu kalimat, kita bisa menggunakan:

d decimal

c character

s string

f float

e scientific notation

x hexadecimal

Note:

Untuk menampilkan karakter % bisa menggunakan %%.

Selasa, 14 Desember 2021

Tipe Data - Bahasa C

Tipe Data

Bahasa C memiliki tipe data meliputi int, short, long, unsigned, char, float, double, _Bool, _Complex, _Imaginary.

Sebuah program memiliki Dalam bentuknya tipe data dibagi menjadi 2 yakni variabel dan constant.

Variabel

Data yang nilainya bisa dirubah pada suatu program merupakan definisi dari variabel. Untuk membuatnya cukup menuliskan tipe data diikuti dengan nama variabel yang akan dibuat. Sebagai contoh yakni char nama ="yusuf"; yang berarti kita membuat variabel nama dengan nilai yusuf.

Constant

Merupakan tipe data yang nilainya tidak bisa lagi diubah setelah digunakan. Ada dua cara membuat constant yakni menggunakan const dan define. Ini merupakan contoh programnya

#include <stdio.h>

int main (){

const double PI = 3.14;

printf ("%f",PI);

return 0;

}

Contoh kedua yakni

#include <stdio.h>

#define PI 3.14

int main (){

printf ("%f",PI);

return 0;

}

Banyak salah penggunaan define yakni pada saat menambahkan semicolon (;) pada akhir baris. Ingatlah untuk tidak menggunakanya. Dua block kode diatas digunakan untuk menginisiasi data PI untuk lingkaran yang merupakan nilai constant 3.14.

Constant data bahasa c

Jumat, 10 Desember 2021

Pengenalan Bahasa C

Pengenalan Bahasa C

C dibuat oleh Dennis Ritchie dari Bell Labs pada tahun 1972. C adalah alat untuk bekerja para programmer, jadi tujuan utamanya ialah sebagai sebuah bahasa yang bermanfaat. C juga merupkan bahasa level rendah yang mendekati bahasa mesin tetapi masih mudah untuk dipelajari. C juga digunakan untuk semua operasi komputer baik berupa windows, unix, mac dan sebagainya untuk menulis program-program rumit dengan bahasa pemrograman level tinggi contohnya Python Enterpreter, Git, Oracle dan lainya.

Keunggulan Bahasa C

Berikut ini merupakan keunggulan dari penggunaan bahasa pemrograman C

  • Cepat
  • Code yang kecil tapi padat (banyak fungsinya)/program yang kecil
  • Struktur_struktur kontrol yang kuat
  • Bisa dijalankan di berbagai macam operasi sistem

Pemasangan Bahasa C

Untuk memakai bahasa C kita tentu membutuhkan sebuah compiler untuk mengkompile kode yang kita buat dan menjalankanya. Untuk kamu yang memakai sistem operasi windows kamu bisa menginstall Borland Turbo C atau MinGw atau yang lainya, bila kamu menggunakan Macintosh kamu bisa menginstall XCode dan bila kamu menggunakanSistem operasi Unix atau Linux kamu bisa menggunakan GCC. Atau kamu juga bisa menggunakan compiler yang online (hanya saja ini akan bisa digunakan ketika kamu memiliki koneksi ke jaringan internet).

Pembuatan Program Sederhana

Mari kita buat program sederhana yakni ‘hello world’. Sebelumnya siapkan dulu bahanya

Compiler

Code Editor

Setelah kamu memiliki keduanya. Buatlah sebuah file yang bernama hello.c lalu isi dengan kode berikut ini

#include <stdio.h>
int main()
{
printf("Hello dunia!.\n");
return 0;
}

program pertama bahasa c

Lalu simpan.

Penjelasan kodenya #include <stdio.h> merupakan header dan juga fungsi untuk menggenerasi stdio.h yang digunakan pada fungsi printf. Sedangkan int main() merupakan inti poin dari program sedangkan {} (kurung kurawa) merupakan penanda awal kode yang akan dieksekusi. Dan return 0; merupakan peryataan untuk mengakhiri program yang dieksekusi pada fungsi main().

Kemudian compile file tersebut dengan menggunakan perintah gcc hello.c pada terminal. Bila berhasil akan menghasilkan sebuah file yang bernama a.out. Nah, file a.out inilah yang kita akan eksekusi dengan menggunakan perintah ./a.out. Bila sudah selesai maka kamu akan melihat ini pada terminal kamu.

compile bahasa pemrograman c

File a.out bisa dijalankan dimanapun. Bahasa C sendiri merupakan bahasa yang lebih mudah dibandingkan bahasa assembler yang digunakan oleh mesin-mesin. Bahasa ini pula kita bisa membuat program untuk sebuah arduino yang biasa digunakan untuk membuat robot.

Senin, 06 Desember 2021

Membuat Framework PHP Sendiri

Pendahuluan

Framework merupakan kerangka kerja yang dibuat untuk memudahkan pengerjaan suatu website, blog atau applikasi. Terdapat juga banyak framework yang sudah dikenal dengan banyak fitur yang ada didalamnya seperti Laravel, Sympony, YII, CodeIginter dan sebagainya.

kerangka kerja php

Artikel ini tidak akan membahas framework yang dituliskan tadi. Melainkan akan membuat framework sendiri. Keunggulan membangun suatu framework sendiri adalah

  • Lebih efisien karena kita bisa memilih apasaja yang akan digunakan
  • Lebih private karena (tim) kita yang membuatnya sendiri

Mari kita buat dari nol yah. Hehe

HTTP Request/Response

Yang paling pertama dan paling penting yakni kita harus mempunyai cara untuk membuat request dan menangani response dari http. Hal ini baiknya kita menerapkan metode php-psr atau dengan midah ditemukan pada zendframework/zendiactors. Atau lebih lengkapnya kamu bisa mencari informasinya dengan kata kunci ‘emitter’ pada perambahan kamu.

Routing

Ini merupakan cara mwnjalankan kode kita menggunakan url yang sesuai dengan yang kita inginkan. Untuk mwlakukanya kita membutuhka router. Untungnya sudah banyak router yang ada ini adalah sebagian contohnya

  • Aura.Router
  • Klein.php
  • FastRoute

Tinggal pilih mana yang menurut kamu yang sesuai dengan keinginanmu. Tetapi FastRoute mengklaim lebih cepat dari router manapun.

Mesin Template

Setelah kode berjalan pada url dan kita akan membutuhkan template atau wadah html untuk membentuk halaman yang dibuat. Ada bermacam-macam mesin template tetapi yang sering dipakai yakni twig. Berikut ini merupakan daftar mesin template yang bisa kamu gunakan dalam frameworkmu sendiri

  • Twig
  • Smarty
  • Plates

Database

Applikasi atau Website apa yang tidak memakai database. Tentu semua membutuhkanya. Berikut ini daftar dari database yang bisa kamu pilih untuk membuat frameworkmu sendiri. Saya sarankan agar memilihnya dengan bijak agar tidak perlu merubahnya. Atau kamu bisa menggunakan lebih dari satu untuk membuat backup yang digunakan suatu saat sesuatu yang tidak diinginkan terjadi.Berikut nama-nama databasenya

  • PDO
  • Propel
  • Doctrine2

Versi Kontrol

Sebuah applikasi tentu ada versi-versinya untuk memudahkan pengembang dalam merawat applikasi tersebut. Nah itu merupakan kegunaan dari versi kontrol dalam sebuah applikasi. Semakin lama maka applikasi tersebut akan semakin lebih baik. Lebih baik dari segi tampilan ataupun proses dalam pengerjaan suatu tugas atau respon. Contoh dari Version Control yakni

  • PHP-DI
  • Aura.Di
  • Pimple
  • Git
  • Gis

Wah bagaimana sudahkah kamu membuat frameworkmu? Saya kira akan lebih mudah digunakan ketika (tim) kita sendiri yang membuatnya.

Sumber refrensi medium.com

Minggu, 05 Desember 2021

Mendesain Website CodeIgniter

Pendahuluan

Setelah selesai dalam membuat blog dengan framework codeigniter. Selanjutnya mari kita desain blog tersebut agar terlihat enak dipandang mata dan midah untuk di pakai baik untuk pengunjung blog ataupun penulis.Disini saya akan memakai bootstrap5 dan ckeditor5 di codeigniter untuk mempercantik dan mempermudah menambahkan baik artikel maupun komentar.

Persiapan

> MySql atau MariaDb
> Blog CodeIgniter
> Bootstrap5
> Ckeditor5
> Code Editor
Pada artikel Blog CodeIgniter kita sudah membahas penggunaan mariadb. Selanjutnya kita akan memasang Bootstrap5 dan Ckeditor5.

Pemasangan Bootstrap5

Untuk memasangnya kamu harus mendapatkan file2 Bootstrap5 dengan menggunakan perintah npm atau composer atau mendownloadnya langsung pada website Boostrap. Setelah itu Buatlah folder assets/dist untuk tempat kita akan menaruh file Bootstrap dan Ckeditor disana.

Kita akan memakai boostrap pada semua halaman blog. Buatlah sebuah folder templates pada folder views dan 2 buah file yakni header.php dan footer.php didalamnya.
Isi dari file header.php yakni

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

?>

<!doctype html>

<html>

  <head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <meta name="author" content="Yusuf Abdulloh">

    <link rel="shortcut icon" href="/assets/dist/img/logo.jpg" type="image/x-icon" />

    <!-- Bootstrap core CSS -->

<link href="/assets/dist/css/bootstrap.min.css" rel="stylesheet">

    <!-- CSS Kita-->

<link href="/assets/dist/css/post.css" rel="stylesheet">

<title>Daftar Artikel</title>

</head>

<body>

</code>

code1
Kode ini akan meload boostrap css dan membuatnya halaman responsive.Sedangkan file footer.php yakni

<code>

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

?>

<script src="/assets/dist/js/bootstrap.bundle.min.js"></script>

  </body>

</html>

Pada kode diatas kita hanya memuat file javascript boostrap.
Selanjutnya kita akan memanggilnya pada controller atau model yang diinginkan dengan menggunakan kode
$this->load->view('templates/header'); //untuk header
$this->load->view('templates/footer'); //untuk footer

Pemasangan Ckeditor5

Untuk memasang ckeditor5 cukuplah mudah yakni kamu tinggal memuat file ckeditor.js pada halaman yang harus memakai editor ini. Dengan menambahkan kode ini kamu akan dapat id editor pada  element html yang digunakan.

<script src="/assets/dist/ckeditor5/ckeditor.js"></script>


<script>

ClassicEditor

.create( document.querySelector( '#editor' ), {

// toolbar: [ 'heading', '|', 'bold', 'italic', 'link' ]

} )

.then( editor => {

window.editor = editor;

} )

.catch( err => {

console.error( err.stack );

} );

</script>

Bagaimana menurut kamu mudah dan indah bukan tampilan blog kita sekarang.

Contoh Tampilan Website Setelah Menggunakan Boostrap dan Ckeditor

Tampilan Halaman Login

login page codeigniter

Tampilan Halaman Daftar

halaman registrasi codeigniter

Tampilan Halaman Utama

halaman utama codeigniter

Tampilan Artikel + Komentar

artikel dan halaman komentar codeigniter

Cukup sekian dan terima kasih semoga ini bisa menjadi referensi untuk mendesain blog kamu agar menjadi lebih indah.

Jumat, 26 November 2021

Membuat Blog Dengan CodeIgniter

Pendahuluan

Pada artikel ini merupakan sesi dari pembuatan projek yang cukup besar yakni sebuah blog. Blog ini bisa membuat artikel baik berupa teks, gambar maupun vidio.

Segala yang diperlukan untuk pembuatan blog dengan codeigniter ini:

> PHP 7.10 keatas

> MYSQL / MARIADB

> CodeIgniter3

> Code Editor


Adapun langkah-langkah yang kita akan lakukan yakni

1. Pembuatan Database Blog

2. Halaman Statis (Page Static)

3. Halaman Daftar, Masuk dan Keluar Penulis Codeigniter

4. Lihat, Tambah, Edit dan Hapus Artikel

5. Tambah, Sembunyikan atau Tampilkan dan Hapus Komentar

+ Mendekorasi Blog CodeIgniter

Oke mari kita lakukan langkah yang pertama

1. Pembuatan Database Blog

Buatlah basisdata yang bernama blog. Lalu buat tabel User dengan menjalankan sql ini.

CREATE TABLE `user` (

  `nip` int(2) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  `username` varchar(100) NOT NULL UNIQUE,

  `password` varchar(100) NOT NULL,

  `email` varchar(200) NOT NULL,

  `status` enum('aktif','tidak_aktif') NOT NULL DEFAULT 'tidak_aktif',

);

Pada tabel user kita menggunakan username dengan unique yang berarti tidak boleh ada yang sama username tersebut.

Untuk membuat tabel post jalankan sql ini:

CREATE TABLE `post` (

  `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  `judul` varchar(200) NOT NULL,

  `slug` varchar(200) NOT NULL UNIQUE KEY,

  `isi` text NOT NULL,

  `penulis` varchar(100) NOT NULL,

  `kategori` varchar(100) NOT NULL,

  `dibuat` datetime NOT NULL DEFAULT current_timestamp(),

  FOREIGN KEY (penulis) REFERENCES user(username)

);

Pada tabel post saya menghubungkan penulis dengan username yang digunakan pada saat login nanti.

Untuk komentar:

CREATE TABLE `komentar` (

  `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  `id_post` int(11) NOT NULL, 

  `komen` text NOT NULL,

  `komentator` varchar(100) NOT NULL,

  `email` varchar(200),

  `waktu` datetime NOT NULL DEFAULT current_timestamp(),

  `moderasi` enum('ya','tidak') NOT NULL DEFAULT 'tidak',

  FOREIGN KEY (id_post) REFERENCES post(id)

);

Tabel komentar akan digunakan untuk netizen atau semua orang. Dimana komentar ini akan dibuat menurut id dari tabel post.

Relasi Database Untuk Blog Codeigniter

2. Halaman Statis (Page Static)

Halaman statis ini sering digunakannuntuk membuat halaman yang berupa Beranda atau Home, Tentang , Disclaimer, Policy Privacy dan Kontak. Halaman statis biasanya berupa informasi yang tidak perlu ada komentar. Karena sifatnya merupakan informasi segala hal tetang blog kita.

Download CodeIgniter3 pada websitenya kemudian buka file route.php yang berada di folder application/config kemudian rubahlah menjadi:

$route['default_controller'] = 'halaman/view';

$route['(:any)'] = 'halaman/view/$1';

Lalu simpanlah perubahan tersebut. File route ini merupakan membuat link ke file yang berada pada folder statis pada folder application/views. Controllernya yakni class halaman dan methodnya yakni view.

Mari kita buat controllernya dengan nama Halaman.php yang isinya:

<?php

class Halaman extends CI_Controller {

    public function view($page = 'beranda'){

        if ( ! file_exists(APPPATH.'views/statis/'.$page.'.php')){

                // Menampilkan halaman error 404

                show_404();

        }


        $data['title'] = ucfirst($page);


        $this->load->view('statis/'.$page, $data);

    }

}

?>

Kemudian buat 4 file yakni beranda.php untuk halaman beranda, tentang.php untuk halaman tentang, disclaimer.php untuk halaman disclaimer, policy-privacy.php untuk halaman policy-privacy dan kontak.php untuk halaman kontak. Bila sudah isilah sesuai dengan nama halaman masing-masing untuk membedakan dalam percobaan pengaksesan. Bila berhasil maka kamu akan melihat nama file itu ketika mengakses namanya tanpa extensi. localhost/beranda, localhost/tentang, localhost/disclaimer, localhost/policy-privacy, localhost/kontak. Untuk menambahkan halaman lainya kamu tinggal menambahkan file yang kamu mau pada folder statis, mudah bukan.

Static page codeigniter

3. Halaman Daftar, Masuk Dan Keluar Penulis Codeigniter

Sebelum membuat dua halaman ini kita harus menyetel file config.php, autoload.php dan database.php pada folder application/config. Untuk file autoload.php kita menggunakan beberapa library dan helper codeigniter. Dimana library-library dan helper akan otomatis digunakan dalam fungsi dan method di applikasi kita. File database.php merupakan file yang mengatur pengaturan database yang digunakan untuk applikasi yang kita sesang kerjakan. Kemudian merubah variabel $baseurl pada file config.php dengan /. Beikut ini contoh konfigurasi file autoload.php dan database.php.

autoload.php pembuatan blog codeigniter

database.php untuk pembuatan blog pada codeigniter

config.php untuk pembuatan blog pada codeigniter


Halaman Daftar Penulis

Langkah selanjutnya yakni tambahkan kode pada route.php yang berada di folder application/config dengan kode berikut:

$route['daftar'] = 'penulis/daftar';
Dengan begini mari kita buat controller penulis dengan method daftar pada file Penulis.php. Yang berisi kode berikut:
<?php
class Penulis extends CI_Controller{
    public function daftar()
{
    $this->load->model('penulis_model');
    $data['title'] = 'Daftar Sebagai Penulis';
    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required',array('required' => 'You must provide a %s.')
              );
    $this->form_validation->set_rules('passconf', 'Konfirmasi Password', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('penulis/daftar',$data);
    }
    else
    {
        $this->penulis_model->set_penulis();
    }
    }
}
Kemudian buat file daftar.php pada folder views/penulis dan buat form untuk menambahan user sebagai penulis. Isi file daftar.php yakni
<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo form_open('daftar'); ?>

    <label for="username">Nama Penulis</label>
    <input type="text" name="username" /><br />

    <label for="email">Email</label>
    <input type="text" name="email" /><br />
    
    <label for="password">Password</label>
    <input type="password" name="password" /><br />
    <label for="passconf">Konfirmasi Password</label>
    <input type="password" name="passconf" /><br />
    <input type="submit" name="submit" value="Daftar sekarang" />

</form>
<?php
if(!empty($status)){
echo $status;}
?>
Untuk pembuatan pendaftaran user kita gunakan model Penulis_model.php dengan method set_penulis. isi dari file Penulis_model.php yaitu
<?php
class Penulis_model extends CI_Model {
 public function set_penulis()
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $passconf = $this->input->post('passconf');
    $this->db->where('username',$username);
    $query = $this->db->get('user');
    if($query->num_rows() == 1){
        $data['title'] = 'Daftar Sebagai Penulis';
        $data['status']='Username sudah digunakan';
        $this->load->view('penulis/daftar',$data);
    }elseif($query->num_rows() == 0 && $password != $passconf ){
        $data['title'] = 'Daftar Sebagai Penulis';
        $data['status']='Password dengan konfirmasi password tidak sama';
        $this->load->view('penulis/daftar',$data);
    }elseif($query->num_rows() == 0 && $password == $passconf){
        $data = array(
        'username' => $this->input->post('username'),
        'email' => $this->input->post('email'),
        'password' => $this->input->post('password')
    );
        $this->db->insert('user', $data);
        echo 'Sudah terdaftar';
    }else{
        echo 'System sedang error';
    }
    }
}
Bila sudah benar kode yang kamu buat maka akan ada data user baru yang tadi dimasukan. Kamu bisa melihatnya dalam di database kamu dengan menggunakan perintah select * from user;


Halaman Masuk

Untuk membuat halaman masuk kamu terlebih dahulu membuat route baru untuk masuk halaman administrasi. Untuk routes.php tambahkan kode ini $route['masuk'] = 'penulis/masuk';. Dengan begitu kita akan bisa mengakses url localhost/penulis/masuk.Untuk membuat halaman masuknya buatlah method masuk pada file Penulis.php. Isi dari method masuk yakni:
public function masuk()
    {
    $this->load->model('penulis_model');
    $data['title'] = 'Halaman Masuk Administrasi';

    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');
    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('penulis/masuk',$data);
    }
    else
    {
        $this->penulis_model->get_penulis();
    }
    }
Setelah itu mari kita buat method get_penulis pada file Penulis_model.php. Skrip kode method dari get_penulis yaitu:
public function get_penulis(){
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $this->db->where('username',$username);
    $this->db->where('password',$password);
    $query = $this->db->get('user');
    if($query->num_rows() == 1){
        $sesibaru = array(
        'username'  => $username,
        'logged_in' => TRUE);
        $this->session->set_userdata($sesibaru);
        foreach ($query->result() as $penulis){
            $status = $penulis->status;
        }
        if( $status == 'tidak_aktif' ){
            echo 'Silahkan hubungi admin situs ini untuk menulis dengan leluasa pada halaman <a href=\'\kontak\'>kontak</a>';
        }
        if( $status == 'aktif' ){
            $this->load->view('statis/beranda');
        }
    }else{
        $data['title'] = 'Halaman Masuk Administrasi';
        $data['status']='Kata sandi atau username tidak cocok';
        $this->load->view('penulis/masuk',$data);
    }
}
Pada model ini juga kita mengatur status dari user yang masuk. Bila user aktif berarti ia  bisa membuat sebuah artikel pada blog kita sedangkan bila tidak aktif maka ia harus menghubungi kita untuk merubah statusnya menjadi aktif. Setelah itu baru ia bisa menulis artikel pada blog kita.
Ini merupakan kode halaman masuk.php
<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo form_open('masuk'); ?>

    <label for="username">Nama Penulis</label>
    <input type="text" name="username" /><br />
    
    <label for="password">Password</label>
    <input type="password" name="password" /><br />
    
    <input type="submit" name="submit" value="Masuk" />

</form>
<?php
if(!empty($status)){
echo $status;}
?>
Untuk mengaktifkan status penulis bisa dengan perintah ini UPDATE `user` SET `status` = 'aktif' WHERE `user`.`username` = 'Yusuf';. Ini akan mengubah status penulis berdasarkan 
Nah artikel selanjutnya akan membahas tentang Tambah, Edit dan Hapus Artikel yang hanya bisa dilakukan oleh user yang memiliki status aktif. Tetapi sebelum itu mari kita buat route keluar '$route['keluar'] = 'penulis/keluar';'.Untuk keluar akun administatif. Lalu buat method keluar pada controller Penulis.php.
public function keluar(){
        $data['title'] = 'Halaman Masuk Administrasi';
        $data['status'] = 'Anda sudah keluar';
        $this->session->sess_destroy();
        $this->load->view('penulis/masuk',$data);
    }
Untuk keluar akun kita tinggal ke link localhost/keluar.

4. Lihat, Tambah, Edit dan Hapus Artikel

Pada artikel ini kita akan membuat halaman artikel yang meliputi lihat, tambah, edit dan hapus artikel (CRUD Artikel). Semua orang bisa melihat artikel yang ada tetapi hanya penulis yang bisa menambah artikel dan mengedit atau menghapusnya.

Lihat Artikel(Read)

Mari kita mulai baca data codeigniter dengan membuat halaman artikel yang bisa dilihat oleh semua orang. Tambahkan 2 baris kode ini ke dalam file routes.php yaitu:
$route['blog'] = 'post';
$route['blog/(:any)'] = 'post/detail/$1';
Kita membuat 2 urlnya untuk localhost/blog digunakan untuk menampilkan semua artikel.Juga localhost/blog/slug digunakan untuk menampilkan artikel yang dipilih untuk ingin dilihat.
Buat file Post.php pada folder controller yang berisi class post dan method detail. Isi dari file Post.php yakni:
<?php
class Post extends CI_Controller{
    public function index(){
        $this->load->model('post_model');
        $this->post_model->lihat_post();
    }
    public function detail($slug = NULL){
        $this->load->model('post_model');
        $data['postingan'] = $this->post_model->detail_post($slug);
        if (empty($data['postingan']))
        {
                show_404();
        }
        $this->load->view('post/detail',$data);
}
}
Membuat file Post_model.php pada file model dengan kode berikut
 public function lihat_post(){
    $query = $this->db->get('post');
    if($query->num_rows() > 0){
        foreach ($query->result() as $post){
            $data['post'] = $post;
            $this->load->view('post/lihat',$data);
        }
    }else{
        echo "Belum ada artikel";
    }
 }
 public function detail_post($slug = FALSE)
{
    if ($slug === FALSE)
    {
        $query = $this->db->get('post');
        return $query->result_array();
    }
    $query= $this->db->get_where('post', array('slug' => $slug));
    return $query->row_array();
}
}
?>
Untuk folder viewnya buatlah 2 file yakni file lihat.php digunakan menampilkan seluruh artikel dan detail.php digunakan menampilkan artikel yang dipilih. Tetapi sebelumnya kita harus mengaktifkan helper 'text' pada file autoload.php untuk memakai fungsi word_limiter(). Berikut ini kode yang ada pada file lihat.php
<a href='/blog/<?php echo $post->slug; ?>'><h1><?php echo $post->judul; ?></h1></a>
<p>Dibuat oleh <b><?php echo $post->penulis; ?></b>
<hr />
<p><?php echo word_limiter($post->isi,15); ?></p>
<hr />
Kategori : <em><?php echo $post->kategori; ?></em></p>
Untuk file detail.php kodenya
<h1><?php echo $postingan['judul']; ?></h1>
<p>Dibuat oleh <b><?php echo $postingan['penulis']; ?></b>
<hr />
<p><?php echo $postingan['isi']; ?></p>
<hr />
Kategori : <em><?php echo $postingan['kategori']; ?></em></p>

Bila sudah selesai maka kamu akan bisa melihat semua artikel yang ada pada url localhost/blog dan bisa memilih salah satu blog untuk dipilih.

Tambah Artikel(ADD)

Untuk menambahkan data codeigniter kita tambah lagi routenya dengan kode:
$route['blog/tambah'] = 'post/tambah';
Kode diatas routenya menuju ke method tambah pada file Post.php:
    public function tambah(){
        $this->load->model('post_model');
        $data['title'] = 'Tambah Artikel';

        $this->form_validation->set_rules('penulis', 'Penulis', 'required');
        $this->form_validation->set_rules('judul', 'Judul', 'required');
        $this->form_validation->set_rules('isi', 'Isi', 'required');
        $this->form_validation->set_rules('kategori', 'kategori', 'required');
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('post/tambah',$data);
        }
        else
        {
            $this->post_model->tambah_post();
            $this->load->view('post/lihat');
        }
    }
   
Untuk selanjutnya kita membuat method tambah_post pada file Post_model.php. Dimana methodnya berisi
 public function tambah_post(){
    $judul = $this->input->post('judul');
    $slug = url_title($judul, 'dash', TRUE);
    $this->db->where('slug',$slug);
    $query = $this->db->get('post');
    if($query->num_rows() == 1){
        $data['title'] = 'Tambah Artikel';
        $data['status']='Tidak boleh mengirim artikel dengan judul yang sudah ada';
        $this->load->view('post/tambah',$data);
    }elseif($slug =='tambah' or $slug == 'update'){
        $data['title'] = 'Tambah Artikel';
        $data['status']='Tidak boleh mengirim artikel dengan judul halaman';
        $this->load->view('post/tambah',$data);
    }elseif($query->num_rows() == 0){
        $data = array(
        'penulis' => $this->input->post('penulis'),
        'judul' => $this->input->post('judul'),
        'slug' => $slug,
        'isi' => $this->input->post('isi'),
        'kategori' => $this->input->post('kategori'));
        $this->db->insert('post', $data);
        $data['title']='Tambah Artikel';
        $data['status']='Artikel telah ditambahkan';
        $this->load->view('post/tambah',$data);
    }else{
        show_404();
    }
}
Kemudian kita akan membuat file tambah.php pada folder views/post. Dimana pada file ini juga kita menyaring pengunjung yang sudah masuk pada halaman masuk dan menurut username yang digunakan pada waktu masuk. Penyaringan ini kita lakukan dengan menggunakan session yang telah kita setting pada method masuk yang berlokasi pada file Penulis_model.php.
<?php if($this->session->userdata('logged_in') == true): ?>
<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo form_open('blog/tambah'); ?>
    <input type='hidden' name='penulis' value='<?php echo $this->session->userdata('username'); ?>'/>
    <label for='judul'>Judul</label>
    <input type='text' name='judul'/><br />
    <label for='isi'>Isi</label>
    <textarea name='isi'></textarea><br />
    <label for='kategori'>Kategori</label>
    <input type='text' name='kategori'/><br />
    <input type="submit" name="submit" value="Publikasikan" />

</form>
<?php else:
$status = "Silahkan masuk dulu baru menambahkan artikel";
?>
<?php endif; ?>
<?php
if(!empty($status)){
echo $status;}
?>
Pada langkah selanjutnya kita akan mengedit dan menghapus artikel dengan id yang diberikan dari halaman lihat.php. Untuk itu mari kita perbarui kode file lihat php yakni
<a href='/blog/<?php echo $post->slug; ?>'><h1><?php echo $post->judul; ?></h1></a>
<p>Dibuat oleh <b><?php echo $post->penulis; ?></b>
<hr />
<p><?php echo word_limiter($post->isi,15); ?></p>
<hr />
Kategori : <em><?php echo $post->kategori;  echo $post->id;?></em></p>
<?php if($this->session->userdata('logged_in') == true && $this->session->userdata('username') == $post->penulis): ?>
<a href='/blog/hapus/<?php echo $post->id; ?>'>Hapus</a><a href='/blog/perbarui/<?php echo $post->id; ?>'>Perbarui</a>
<?php endif; ?>
Bila sudah selesai maka akan terlihat seperti ini.
gambar

Perbarui Artikel(UPDATE)

Selanjutnya kita akan membuat halaman yang berisi artikel-artikel yang sibuat oleh penulis berikut link ke halaman perbarui dan hapus artikelnya. Sebelumnya tambahkan dulu routenya
$route['blog/perbarui/(:any)'] = 'post/perbarui/$1';
kemudian tambahkan method perbarui atau edit pada codeigniter dalam file Post.php
public function perbarui($id = NULL){
    $data['postingan'] = $this->db->get_where('post',array('id' => $id));
    $this->form_validation->set_rules('penulis', 'Penulis', 'required');
        $this->form_validation->set_rules('judul', 'Judul', 'required');
        $this->form_validation->set_rules('isi', 'Isi', 'required');
        $this->form_validation->set_rules('kategori', 'kategori', 'required');
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('post/perbarui',$data);
        }
        else{
            $data['status']='Pembaruhan Berhasil';
            $this->load->model('post_model');
            $this->post_model->perbarui_post();
            $this->post_model->lihat_post();
        }
   
Selanjutnya buat method perbarui_post pada Post_model.php yakni
public function perbarui_post(){
    $id = $this->input->post('id');
    $judul = $this->input->post('judul');
    $slug = url_title($judul, 'dash', TRUE);
    $data = array(
    'penulis' => $this->input->post('penulis'),
    'judul' => $this->input->post('judul'),
    'slug' => $slug,
    'isi' => $this->input->post('isi'),
    'kategori' => $this->input->post('kategori'));
    $this->db->where('id',$id);
    $this->db->update('post', $data);
 

Menghapus Artikel(DELETE)

Menghapus data codeigniter dengan satu method saja. Buatlah dulu route
$route['blog/hapus/(:any)'] = 'post/hapus/$1';
Kemudian tambahkan methodnya
 public function hapus($id = NULL){
    $this->load->model('post_model');
    $this->db->where('id',$id);
    $query=$this->db->get('post');
    foreach ($query->result() as $rows){
        if($this->session->userdata('username') == $rows->penulis){
            $this->db->delete('post',array('id' => $id));
            $this->post_model->lihat_post();
        }else{
            echo 'Kamu Hanya Bisa Hapus Artikel Punya Kamu Sendiri';
        }
    }
 }
 
Ini akan menghapus artikel yang dipilih tetapi bila sesuai dengan username penulis yang digunakan.

5. Baca, Sembunyi, Tambah dan Hapus Komentar

Dalam sebuah blog tentu saja ada komentar pada artikel untuk timbal balik dari pembaca dengan penulis. Komentar juga bisa bersifat membangun blog yang kita buat untuk itu mari kita buat kolam untuk komentar dan menampilkan dan menyembunyikan komentar. Disisi lain kita juga mesti menyaring komentar yang berupa spam dan juga script nakal yang digunakan untuk mengetes keamanan blog kita.

Baca Komentar(READ)

Mari kita perbarui file detail.php dengan kode berikut ini
<h1><?php echo $postingan['judul']; ?></h1>
<p>Dibuat oleh <b><?php echo $postingan['penulis']; ?></b>
<hr />
<p><?php echo $postingan['isi']; ?></p>
<hr />
Kategori : <em><?php echo $postingan['kategori']; ?></em></p>
<p><?php  if(empty($komentar->result())){
            echo '<em><b>Belum ada komentar</em></b>';
        }else{
        foreach($komentar->result() as $rowkomentar){
            echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
            echo '<p>'.$rowkomentar->komen.'</p>';
        }
        } ?></p>
Dan method detail pada Post.php dengan
public function detail($slug = NULL){
        $this->load->model('post_model');
        $data['postingan'] = $this->post_model->detail_post($slug);
        if (empty($data['postingan']))
        {
                show_404();
        }
        $id_post = $data['postingan']['id'];
        $this->db->where('id_post',$id_post);
        $data['komentar']=$this->db->get('komentar');
        $this->load->view('post/detail',$data);
}
Kode ini akan menampilkan komentar yang ada sesuai dengan id_post yang ditampilkan.

Sembunyikan Komentar

Terkadang kita harus menyembunyikan komentar dikarenakan suatu hal yang penting seperti sara, span atau kata-kata kotor yang dilakukan oleh seseorang yang tidak bertanggung jawab. Untuk itu mari kota update lagi file detail.php agar kita bisa melakukannya pada setiap artikel.
    <h1><?php echo $postingan['judul']; ?></h1>
<p>Dibuat oleh <b><?php echo $postingan['penulis']; ?></b>
<hr />
<p><?php echo $postingan['isi']; ?></p>
<hr />
Kategori : <em><?php echo $postingan['kategori']; ?></em></p>
<?php
    if(empty($komentar->result())){
        echo '<em><b>Belum ada komentar</em></b>';
    }else{
        if($this->session->userdata('logged_in') == false){
            echo '<em><b>Komentar</em></b>';
            foreach($komentar->result() as $rowkomentar){
                if($rowkomentar->moderasi == 'ya'){
                    if($rowkomentar->email == '' or $rowkomentar->email == NULL){
                        echo '<p>'.$rowkomentar->komentator.' berkata</p>';
                    }else{
                        echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
                    }
                echo '<p>'.$rowkomentar->komen.'</p>';
                }
            }
        }elseif($this->session->userdata('logged_in') == true){
            echo '<em><b>Komentar</em></b>';
        foreach($komentar->result() as $rowkomentar){
            if($rowkomentar->email == '' or $rowkomentar->email == NULL){
            echo '<p>'.$rowkomentar->komentator.' berkata</p>';
            }else{
            echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
            }
            echo '<p>'.$rowkomentar->komen.'</p>';
            if($rowkomentar->moderasi == 'tidak'){
                echo '<a href=\'komentar_approve/'.$rowkomentar->id.'\'>approve</a>';
            }elseif($rowkomentar->moderasi == 'ya'){
                echo '<a href=\'komentar_disapprove/'.$rowkomentar->id.'\'>sembunyikan</a>';
            }
        }
            
        }else{
            $status='Sesuatu error';
        }
    }?>
<?php
if(!empty($status)){
echo $status;}
?>
Pada file detail.php diatas semua orang hanya bisa melihat komentar yang moderasinya iya sedangkan untuk yang moderasinya tidak hanya semua penulis yang bisa melihatnya. Sekaligus kita memberikan tombol yang digunakan untuk menampilkan dan menyembunyikan komentar pada artikel.
Selanjutnya kita tinggal menambahkan method komentar_approve dan komentar_dissaprove pada Post.php.
 public function komentar_approve($id = NULL){
    $this->db->where('id',$id);
    $komentar = $this->db->get('komentar');
    foreach ($komentar->result() as $komentar2){
        $id_post = $komentar2->id_post;
    }
    $this->db->where('id',$id_post);
    $posting = $this->db->get('post');
    foreach ($posting->result() as $postingan){
        $penulis = $postingan->penulis;
        $slug = $postingan->slug;
    }
    $data = array(
    'moderasi' => 'ya');
    $this->db->update('komentar', $data);
    redirect('blog/'.$slug);
    }
 public function komentar_disapprove($id = NULL){
    $this->db->where('id',$id);
    $komentar = $this->db->get('komentar');
    foreach ($komentar->result() as $komentar2){
        $id_post = $komentar2->id_post;
    }
    $this->db->where('id',$id_post);
    $posting = $this->db->get('post');
    foreach ($posting->result() as $postingan){
        $penulis = $postingan->penulis;
        $slug = $postingan->slug;
    }
    $data = array(
    'moderasi' => 'tidak');
    $this->db->update('komentar', $data);
    redirect('blog/'.$slug);
    }

Tambah Komentar(ADD)

Selanjutnya kita akan membuat kolom komentar yang dibuat pada setiap artikel yang ada. Caranya yakni membuat formulir pada setiap artikel yang akan diberikan komentar. Yuk kita perbarui lagi file detail.php nya
    <h1><?php echo $postingan['judul']; ?></h1>
<p>Dibuat oleh <b><?php echo $postingan['penulis']; ?></b>
<hr />
<p><?php echo $postingan['isi']; ?></p>
<hr />
Kategori : <em><?php echo $postingan['kategori']; ?></em></p>
<?php
    if(empty($komentar->result())){
        echo '<em><b>Belum ada komentar</em></b>';
    }else{
        if($this->session->userdata('logged_in') == false){
            echo '<em><b>Komentar</em></b>';
            foreach($komentar->result() as $rowkomentar){
                if($rowkomentar->moderasi == 'ya'){
                    if($rowkomentar->email == '' or $rowkomentar->email == NULL){
                        echo '<p>'.$rowkomentar->komentator.' berkata</p>';
                    }else{
                        echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
                    }
                echo '<p>'.$rowkomentar->komen.'</p>';
                }
            }
        }elseif($this->session->userdata('logged_in') == true){
            echo '<em><b>Komentar</em></b>';
        foreach($komentar->result() as $rowkomentar){
            if($rowkomentar->email == '' or $rowkomentar->email == NULL){
            echo '<p>'.$rowkomentar->komentator.' berkata</p>';
            }else{
            echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
            }
            echo '<p>'.$rowkomentar->komen.'</p>';
            if($rowkomentar->moderasi == 'tidak'){
                echo '<a href=\'komentar_approve/'.$rowkomentar->id.'\'>approve</a>';
            }elseif($rowkomentar->moderasi == 'ya'){
                echo '<a href=\'komentar_disapprove/'.$rowkomentar->id.'\'>sembunyikan</a>';
            }
        }
            
        }else{
            $status='Sesuatu error';
        }
    }?>
<h4>Masukan Komentar</h4>

<?php echo validation_errors(); ?>

<?php echo form_open('blog/'.$postingan['slug']); ?>
    <input type='hidden' name='id_post' value='<?php echo $postingan['id']; ?>'/>
    <label for='nama'>Nama</label>
    <input type='text' name='nama'/><br />
    <label for='email'>Email</label>
    <input type='text' name='email'/><br />
    <label for='komentar'>Komentar</label>
    <textarea name='komentar'></textarea><br />
    <input type="submit" name="submit" value="Komen" />
</form>
<?php
if(!empty($status)){
echo $status;}
?>
Kemudian mari perbarui kembali method detail pada Post.php ntuk menyaring masukan dari komentar yang akan ditambahkan.
    public function detail($slug = NULL){
        $this->load->model('post_model');
        $data['postingan'] = $this->post_model->detail_post($slug);
        $this->load->model('post_model');
        $this->form_validation->set_rules('id_post', 'id_post', 'required');
        $this->form_validation->set_rules('nama', 'Nama', 'required');
        $this->form_validation->set_rules('email', 'Email');
        $this->form_validation->set_rules('komentar', 'Komentar', 'required');
        if (empty($data['postingan']))
        {
                show_404();
        }
        $id_post = $data['postingan']['id'];
        $this->db->where('id_post',$id_post);
        $data['komentar']=$this->db->get('komentar');
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('post/detail',$data);
        }
        else
        {
            $this->post_model->tambah_komentar();
            redirect('/blog/'.$slug);
        }
}
Kemudian tambahkan method tambah_komentar pada file Post_model.php dimana ini akan menyimpan komentar dan menampilkanya di halaman selanjutnya apabila komentar tersebut memiliki moderasi 'ya'.
public function tambah_komentar(){
    $data = array(
        'id_post' => $this->input->post('id_post'),
        'komentator' => $this->input->post('nama'),
        'email' => $this->input->post('email'),
        'komen' => $this->input->post('komentar')
        );
        return $this->db->insert('komentar', $data);
 }
 

Menghapus Komentar

Proses penghapusan komentar hanya bisa dihapus oleh penulis artikel itu sendiri. Dengan menambahkan link hapus pada tiap artikel. Selanjutnya, kita akan memperbarui file detail.php dengan:
    <h1><?php echo $postingan['judul']; ?></h1>
<p>Dibuat oleh <b><?php echo $postingan['penulis']; ?></b>
<hr />
<p><?php echo $postingan['isi']; ?></p>
<hr />
Kategori : <em><?php echo $postingan['kategori']; ?></em></p>
<?php
    if(empty($komentar->result())){
        echo '<em><b>Belum ada komentar</em></b>';
    }else{
        if($this->session->userdata('logged_in') == false){
            echo '<em><b>Komentar</em></b>';
            foreach($komentar->result() as $rowkomentar){
                if($rowkomentar->moderasi == 'ya'){
                    if($rowkomentar->email == '' or $rowkomentar->email == NULL){
                        echo '<p>'.$rowkomentar->komentator.' berkata</p>';
                    }else{
                        echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
                    }
                echo '<p>'.$rowkomentar->komen.'</p>';
                }
            }
        }elseif($this->session->userdata('logged_in') == true){
            echo '<em><b>Komentar</em></b>';
        foreach($komentar->result() as $rowkomentar){
            if($rowkomentar->email == '' or $rowkomentar->email == NULL){
            echo '<p>'.$rowkomentar->komentator.' berkata</p>';
            }else{
            echo '<p><a href=\'mailto:'.$rowkomentar->email.'\'> '.$rowkomentar->komentator.'</a> berkata</p>';
            }
            echo '<p>'.$rowkomentar->komen.'</p>';
            if($this->session->userdata('username') == $postingan['penulis']){
                echo '<a href=\'komentar_hapus/'.$rowkomentar->id.'\'>hapus</a>';
            }
            if($rowkomentar->moderasi == 'tidak'){
                echo '<a href=\'komentar_approve/'.$rowkomentar->id.'\'>approve</a>';
            }elseif($rowkomentar->moderasi == 'ya'){
                echo '<a href=\'komentar_disapprove/'.$rowkomentar->id.'\'>sembunyikan</a>';
            }
        }
            
        }else{
            $status='Sesuatu error';
        }
    }?>
<h4>Masukan Komentar</h4>

<?php echo validation_errors(); ?>

<?php echo form_open('blog/'.$postingan['slug']); ?>
    <input type='hidden' name='id_post' value='<?php echo $postingan['id']; ?>'/>
    <label for='nama'>Nama</label>
    <input type='text' name='nama'/><br />
    <label for='email'>Email</label>
    <input type='text' name='email'/><br />
    <label for='komentar'>Komentar</label>
    <textarea name='komentar'></textarea><br />
    <input type="submit" name="submit" value="Komen" />
</form>
<?php
if(!empty($status)){
echo $status;}
?>
Untuk menghapusnya kamu tinggal menambahkan method komentar_hapus pada file Post.php. Selanjutnya ini akan mengalihkan ke artikel yang tadi kita hapus.
    public function komentar_hapus($id = NULL){
    $this->db->where('id',$id);
    $komentar = $this->db->get('komentar');
    foreach ($komentar->result() as $komentar2){
        $id_post = $komentar2->id_post;
    }
    $this->db->where('id',$id_post);
    $posting = $this->db->get('post');
    foreach ($posting->result() as $postingan){
        $penulis = $postingan->penulis;
        $slug = $postingan->slug;
    }
    if($this->session->userdata('username') == $penulis){
        $this->db->delete('komentar',array('id' => $id));
    }
    redirect('blog/'.$slug);
    }
Saya kira kita sudah bisa membuat blog yang cukup besar untuk membuat artikel dan publikasi lainya. Tinggal kita mendesain blog kita agar tampilanya bagus. Dan ini akan kita bahas di artikel selanjutnya yakni mendesain ulang blog.Happy coding