Postingan lainnya
Implementasi Inner Join pada Function
Pagi menjelang siang teman-teman. butuh pencerahan banget nih.. Pada class User saya membuat fungsi seperti ini :
public function get_topik()
{
return $this->_db->get_info('forum');
}
Pada class Database fungsi get_info nya seperti ini :
public function get_info($table, $column = '', $value = '')
{
if( !is_int($value) )
$value = "'". $value . "'";
if( $column != '' ) {
$query = "SELECT * FROM $table WHERE $column = $value";
$result = $this->mysqli->query($query);
while($row = $result->fetch_assoc()){
return $row;
}
}else{
$query = "SELECT * FROM $table";
$result = $this->mysqli->query($query);
while($row = $result->fetch_assoc()){
$results[] = $row;
}
return $results;
}
}
Kemudian hasil dari kedua fungsi di atas saya tampilkan dengan cara seperti ini :
<?php
require_once "../core/init.php";
if( !Session::exists('username') ){
Redirect::to('../login');
}
$topik = $user->get_topik();
require_once "../theme/header.php";
?>
------------------------------------------------------------------
<?php foreach ($topik as $_user): ?>
<div class="container-topic">
<h5><? echo $_user['judul'] ?></h5>
<p><? echo $_user['topik'] ?></p>
</div>
<?php endforeach; ?>
Selanjutnya saya ingin melakukan iner join pada database antara table forum dengan table user agar dapat menampilkan Topik dan si Pemilik topik kedalam satu query, untuk hal ini sudah saya buatkan relasinya di database. Kendalanya adalah cara implementasi kode dibawah ini untuk diterapkan kedalam cara yang saya gunakan di atas bagaimana?
$sql = "SELECT forum.*, user.username
FROM forum INNER JOIN user
ON forum.user_id = user.id AND forum.id = $id";
Terimakasih sebelumnya.. UP
9 Jawaban:
kalo saran dr ane sendiri sih pas query pertama aja langsung pake inner join
@punyaarn Caranya gimana gan? Seperti ini kah? Saya coba gini malah tidak berfungsi..
public function get_info($table, $column = '', $value = '')
{
if( !is_int($value) )
$value = "'". $value . "'";
if( $column != '' ) {
$query = "SELECT forum.*, user.username FROM forum INNER JOIN user ON forum.user_id = user.id AND forum.id = $value";
$result = $this->mysqli->query($query);
while($row = $result->fetch_assoc()){
return $row;
}
}else{
$query = "SELECT * FROM $table";
$result = $this->mysqli->query($query);
while($row = $result->fetch_assoc()){
$results[] = $row;
}
return $results;
}
}
kasih contohnya dong gan.. hehe
Sudah oke ni gan.. ternyata ada sedikit kesalahan. terimakasih banyak agan @punyaarn atas responnya
Pake Pirlo DB PDO lebih simpel kita buat metode Join tablenya.... tinggal tambahkan ini...
public function JoinAll($join)
{
$this->_query="SELECT $join";
$this->_join=$join;
return $this;
} // Penutup fungsi JoinAll
dan ini untuk methode where-nya
public function join_Where($col, $sign, $value, $bridge= ' AND ')
{
$this->_query="SELECT $this->_join WHERE";
if(count($this->_prevData)==0)
{
$bridge='';
}
$this->_prevData[]= array(
'col' => $col,
'sign' => $sign,
'value' => $value,
'bridge'=> $bridge,
);
$this->getWhere($bridge);
return $this;
} // Penutup Fungsi join_Where
nanti saat pake metodenya kita tinggal pake kode ini...
$this->_db->setTable('nama_table');
$this->_db->JoinAll('sql join table')->all();
// bisa dichaning... dengan join_Where seperti ni...
$data=$this->_db->join_Where('key', '=', 'key_value')->all();
// pokoknya masih nyambung dengan methode lain hanya menambahkan dua methode di atas.
semoga bermanfaat, maaf kalo ada yang salah...
Trimakasih Mas @datrosumendong tapi saya belum pelajari cara PDO jadi belum paham, baru sampai ke konsep OOP itupun belum ngerti banget. hehe Ada kendala lagi nih mas, saya tidak tau cara query saya ini bener atau tidak. Mohon pencerahannya lagi..
pada class user :
public function get_topik()
{
return $this->_db->get_info('forum INNER JOIN user ON forum.user_id = user.id AND forum.id');
}
Sampai disana datanya berhasil di tampilkan berikut si penulis topiknya. Tapi data yang tampil ini tidak berurutan, saya mau menampilakannya berdasarkan id terbesar tapi ketika saya menambahkan ORDER BY id DESC pada kode di atas halaman jadi tidak berfungsi, alias tidak bisa di buka. Masalahnya dimana yah? atau cara saya yang salah? untuk fungsi get_info nya saya bikin fleksible seperti lampiran paling atas. mohon bantuan :(
Periksa lagi fungsi get_info-nya gan... keliatannya belum fleksible... coba pelajari PDO database dari sekolah koding... https://sekolahkoding.com/kelas/membuat-kelas-abstrak-pdo-database pasti akan paham tentang apa itu OOP... kalo liat dari code yang agan buat... sepertinya kebalik... jika ingin flexible... nilai query kita masukan kedalam parameter pada fungsi... sehingga bebas kita ganti2 tanpa merubah fungsi lagi... atau menambah fungsi itu sendiri... itu baru namanya flexible... saya juga masih baru belajar gan...
Jawaban Terpilih
coba gini gan
public function get_topik()
{
return $this->_db->get_info('forum INNER JOIN user ON forum.user_id = user.id AND forum.id =$id ORDER BY forum.id DESC');
}
Mas @BroGoeh Terimakasih.. ORDER BY nya berfungsi, tapi bagian ininya (=$id) saya hapus.. Matur nuwun sanget..