merubah array menjadi string pada codeigniter

jadi gini gan saya mau membuat aplikasi sistem pakar menggunakan metode backwardchainning nah saya ingin ketika user konsultasi akan ada pertanyaan dan ketika pertanyaan itu di jawab ya maka data akan disimpan di database dan dari data itu kita akan mengambil kodePertanyaannya untuk menyusuaikan dengan yang ada pada database. permasalahannya adalah ketika saya ingin mengambil nilai pada tabel riwayatjawaban(kodePertanyaan) itu berupa array saya ingin merubahnya menjadi string.

ini codingan saya :

 <?php

  $this->db->select('kodePertanyaan');
  $this->db->from('riwayatjawaban');
  $query=$this->db->get();
  $baris =$this->db->get('riwayatjawaban','kodePertanyaan')->num_rows();
    $tes= $query->result_array();
 $tes= $query->result_array();
    foreach ($query->result() as $row)
    {
             $a= $row->kodePertanyaan;
             $b= "%$a%";

             echo "$b<br>";
    }

         $query2=$this->db->query("SELECT KodePertanyaan from tabelrule where KodePertanyaan like ('$b')");

         foreach ($query2->result() as $as) {
           $c = $as->KodePertanyaan;
           echo "$c<br>";
         }

   ?>

pada kasus di atas kodePertanyaan berisikan 3 buah nilai = yang pertama yaitu %T0001% ,%T0002% dan %T0005% . tetapi yang tampil ketika saya memanggil $b hanya terdapat 1 nilai saja yaitu %T0005%, yang saya ingin kan adalah mengambil kodePertanyaan dari tabel riwayatjawaban dan memasukannya kedalam query select like $b. $b berisi ('%T0001%,%T0002%,%T0005%').

tolong para mastah dibantu pls buat tugas saya :(

avatar farisdewantoro
@farisdewantoro

119 Kontribusi 16 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

Jawaban Terpilih

Ada dua kesalahan dalam kode diatas.

Pertama, variabel di overwrite dalem for. Jadi isinya bakal cuma dapet kode yang terakhir.

 foreach ($query->result() as $row)
{
 	$a= $row->kodePertanyaan;
 	$b= "%$a%"; // -> ini bakal ke overwrite di tiap loop

	echo "$b<br>";
}

Kedua, seandainya $b sudah jadi array-pun query-nya bakal salah. Kalo pake query kaya gini bakal syntax error.

 $query2=$this->db->query("SELECT KodePertanyaan from tabelrule where KodePertanyaan like ('$b')");

Karena hasil querynya bakal kaya gini :

 SELECT KodePertanyaan from tabelrule where KodePertanyaan like ('%T0001%,%T0002%,%T0005%');

Padahal yang bener kaya gini :

 SELECT KodePertanyaan from tabelrule where KodePertanyaan like '%T0001%' or KodePertanyaan like '%T0002%' or KodePertanyaan like '%T0005%'

Solusinya:

 <?php

  $this->db->select('kodePertanyaan');
  $this->db->from('riwayatjawaban');

  $query = $this->db->get();
  $b = array();

  foreach ($query->result() as $row) {
    $a = $row->kodePertanyaan;
    $b[] = 'KodePertanyaan LIKE "%'.$a.'%"'; //Untuk kesalahan pertama
  }

   $query2 = $this->db->query("SELECT KodePertanyaan FROM tabelrule WHERE ".implode(" OR ", $b)); //Untuk kesalahan kedua

   foreach ($query2->result() as $as) {
     $c = $as->KodePertanyaan;
     echo "$c<br>";
   }

?>
avatar rangerkuning
@rangerkuning

19 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

@rangerkuning

bisa kok gan make query ini :

 SELECT KodePertanyaan from tabelrule where KodePertanyaan like ('%T0001%,%T0002%,%T0005%');

karena isi data nya adalah array. thanks broo udah bantu tpi ini saya juga masih bingung gimana cara penerapannya hehe. kalo boleh minta saran,link atau source code tentang sistem pakar dong gann hehe saya stuck di metode backwardchaning

pada bagian ini :querynya ga jalan broo karena $b bukan string

 $query2 = $this->db->query("SELECT KodePertanyaan FROM tabelrule WHERE ".implode(" OR ", $b));

yang tampil jadi begini :

 SELECT * from tabelpertanyaan where KodePertanyaan LIKE %T0001% OR KodePertanyaan LIKE %T0002% OR KodePertanyaan LIKE %T0003% OR KodePertanyaan LIKE %T0004% OR KodePertanyaan LIKE %T0005
T0001% OR KodePertanyaan LIKE %T0002% OR KodePertanyaan LIKE %T0003% OR KodePertanyaan LIKE %T0004% OR KodePertanyaan LIKE %T0006% OR KodePertanyaan LIKE %T0007% OR KodePertanyaan LIKE %T0008% OR KodePertanyaan LIKE %T0009
%

seharusnya kan kalo query like pakai '' jadi :

 SELECT * from tabelpertanyaan where KodePertanyaan LIKE '%T0001%' OR KodePertanyaan LIKE '%T0002%'
avatar farisdewantoro
@farisdewantoro

119 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Ups, salah ya. Maklum, ngga saya coba dulu hehe. Jawaban di atas sudah di-update. Biar pake kutip ubah jadi :

 $b[] = 'KodePertanyaan LIKE "%'.$a.'%"';

Btw, saya belum pernah buat sistem pakar jadi kurang tau mas.

avatar rangerkuning
@rangerkuning

19 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban