Datatable serverside Başka tablodan veri çekme
Merhaba arkadaşlar, datatable serverside ile veri çekmeye çalışıyorum. Aşağıda ki kodlar ile urunler tablosunda ki tüm verileri çekebiliyorum bir sorun yok.
Fakat yapmak istediğim burada gelen ID yada başka bir değere göre farklı bir tablodan veri çekmek. Nasıl yapabilirim bunu yardımcı olabilecek arkadaşlar var mı acaba.
$tedarikciler =$db->prepare("SELECT * FROM tedarikciler WHERE uniqid='$uniqid'");
$tedarikciler ->execute();
$tList=$tedarikciler ->fetch(PDO::FETCH_ASSOC);
header('Content-Type: application/json; charset=utf-8');
require 'ssp.php';
if ($_GET['mode'] == 'urunler') {
$dbDetails = array(
'host' => 'localhost',
'user' => 'root',
'pass' => '',
'db' => 'yeni'
);
$table = "urunler";
// DB table to use
// Table's primary key
$primaryKey = 'id';
// Array of database columns which should be read and sent back to DataTables.
// The `db` parameter represents the column name in the database.
// The `dt` parameter represents the DataTables column identifier.
$columns = array(
array('db' => 'id', 'dt' => 0),
array('db' => 'urun_firma', 'dt' => 1),
array('db' => 'urun_adi', 'dt' => 2),
array('db' => 'liste_fiyati','dt' => 3 , "formatter" =>function($liste_fiyati){
return number_format($liste_fiyati,2,',','.')." TL";
}),
array('db' => 'iskonto', 'dt' => 4),
array('db' => 'kdv', 'dt' => 5 , "formatter" =>function($kdv){
return "% {$kdv}";
}),
array('db' => 'fiyat', 'dt' => 6 , "formatter" =>function($fiyat){
return number_format($fiyat,2,',','.')." TL";
}),
array('db' => 'renk', 'dt' => 7),
array('db' => 'birim', 'dt' => 8),
array('db' => 'uniqid', 'dt' => 9,'formatter' => function($data){
return "<a href='urun-duzenle?uniqid={$data}' class='btn btn-default btn-sm btn-icon icon-left'>
<i class='entypo-pencil'></i>
Güncelle
</a>
<a class='btn btn-danger btn-sm btn-icon icon-left' href='urunler?sil=urunSil&uniqid={$data}'>
<i class='entypo-cancel'></i>
Sil
</a>";
}),
);
// Output data as json format
echo json_encode(
SSP::simple($_GET, $dbDetails, $table, $primaryKey, $columns)
);
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Öncelikle veritabanınızda, çekmek istediğiniz diğer tabloyla bağlantılı olan bir sütun olmalı. Örneğin, "urunler" tablosunda "tedarikci_id" sütunu olabilir ve bu sütun "tedarikciler" tablosunda ki bir "id" sütununa referans verir.
Eğer bu şekilde bir ilişki kurulmuşsa, çekmek istediğiniz veriyi çekmek için "JOIN" işlemini kullanabilirsiniz. Örneğin:
$veriler = $db->prepare("SELECT * FROM urunler INNER JOIN tedarikciler ON urunler.tedarikci_id = tedarikciler.id WHERE urunler.uniqid='$uniqid'");
$veriler ->execute();
$vList=$veriler ->fetch(PDO::FETCH_ASSOC);
Bu kod, "urunler" tablosundaki verilere "tedarikciler" tablosundaki verileri de ekleyecek ve sonuç olarak tüm verileri döndürecektir. Bu işlemi yaparken dikkat etmeniz gereken bir nokta ise, iki tablonun birbirine referans veren sütunların (örneğin "tedarikci_id" ve "id") aynı veri türünde olmalarıdır.
Eğer farklı bir sorgu yazmak istiyorsanız, "SELECT" sorgusunun içine yazacağınız kolonları değiştirerek istediğiniz verileri seçebilirsiniz. Örneğin:
$veriler = $db->prepare("SELECT urunler.urun_adi, tedarikciler.firma_adi FROM urunler INNER JOIN tedarikciler ON urunler.tedarikci_id = tedarikciler.id WHERE urunler.uniqid='$uniqid'");
$veriler ->execute();
$vList=$veriler ->fetch(PDO::FETCH_ASSOC);
Bu kod, "urunler" tablosundaki "urun_adi" ve "tedarikciler" tablosundaki "firma_adi" verilerini döndürecektir.
Umarım bu bilgi size yardımcı olmuştur.