Datatable Mysql Tablo Select and List
datatable Dışında mysql tablolarını listeliyorum.
ordan seçtiğim tablonun atıyorum " sube "
içeriklerini listelemek istiyorum listeliyorumda
fakat söyle bir sorun çıkıyor bu sefer
bütün tabloların sıralama başlıkları aynı olmadığı için
<div class="col-md-6">
<section class="basic-select2">
<select class="select2 form-control" id='kategoriSira'>
<option value=''>-- Tabloya Göre Sırala--</option>
<?php
$kat= Func::Cop("SHOW TABLES");
$kat->execute();
$veri = $kat->fetchAll(PDO::FETCH_NUM);
foreach($veri as $row):
?>
<option value='<?php echo $row[0]; ?>'> <?php echo $row[0]; ?></option>
<?php endforeach; ?>
</select>
</section>
</div>
<div class="table-responsive">
<table id="copler-list" class="table table-striped table-bordered display" style="width: 100%">
<thead>
<tr>
<th>Adı</th>
<th>Adı</th>
<th>Adı</th>
<th>Adı</th>
<th>Adı</th>
<th>Adı</th>
<th>Adı</th>
</tr>
</thead>
</table>
</div>
şeklinde bu başlıklar altında listeliyorsam
bir başka tabloda listeleme farklı olması gerekiyor.
haliyle js taradında çekerken
var URI = window.location.origin;
var o = $("#copler-list").DataTable({
processing: true,
serverSide: true,
serverMethod: 'POST',
ajax: {
url: URI+"/CopData",
data: function(d){
var kategoriSec = $('#kategoriSira').val();
d.kategoriSira = kategoriSec;
},
},
columns: [
// {data: 'sil',},
{data: 'adi',orderable: true},
{data: "tel",orderable: true},
{data: "gsm",orderable: true},
{data: "fax",orderable: true},
{data: "mail",orderable: true},
{data: 'create_at',orderable: true},
{data: 'durum',orderable: true},
{data: 'islem', responsivePriority: -1, orderable: false}
],
language:{url:"//cdn.datatables.net/plug-ins/1.10.12/i18n/Turkish.json"},
columnDefs: [
{
targets: ['noshort'],
orderable: false
},
],
displayLength: 10,
lengthMenu: [
[5, 10, 15, 20, 50, 100],
['5 Adet' , '10 Adet' , '15 Adet' , '20 Adet', '50 Adet', '100 Adet']
],
}); // Datatable Bitiş
$('#kategoriSira').change(function(){
o.draw();
});
gibi çektimi için aynı anda hangi js yi yükleyecek onu anlamadım
birde html tarafında başlıkları var tabi
genel olarak fikir istediğim
listeden tabloyu seçtiğimde datatable içerisinde o listenin
belirlediğim başlıklara göre düzenli şekilde çekmesi
hepsini tek sayfada yapmak istediğim ve iframe ile sayfa değiştirmek
istemediğim için.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
@sefaaydin
benim esas takıldığım nokta
'columns': [
{ data: 'username' },
{ data: 'pid' },
{ data: 'fromTo' },
{ data: 'fromToAmount' },
{ data: 'fromToPrice' },
{ data: 'processTime' },
{ data: 'action' }
]
bu alandaki değerler.
üstüne birde HTML alandaki başlık karşılıkları.
yoksa söyle de yapılabilir.
tablo yu seçince #list-table içerisine post atarsın url: /tblodangelenveri.php
şeklinde o kısımlara farklı api çağırabilirim.
ama data kımında sanırım
js de
var php = gelenphp;
if( php === subeler){
'columns': [
{ data: 'id' },
{ data: 'subeadi' },
]
}else if (php === adresler){
'columns': [
{ data: 'id' },
{ data: 'adresadi' },
]
}
şeklinde bi deneyeceğim eve geçtiğim zaman..
js pek sevmiyorum ben sevmedikçe içine çekiyor :)
Ajax tarafında sana bir data diye alan bırakmıştım. Şöyle yapabilirsin. Basitçe anlatıyorum. Geliştirmesi sana kalmış :)
JS Tarafında Ajax altında data diye bir alan var. O alana istediğin parametreleri yazıyorsun. Örneğin page diye bir parametre gönderdim ben. PHP tarafını kontrol et detayı orada anlatacağım.
$('#transactionAjaxTable').DataTable({
'processing': true,
'serverSide': true,
'serverMethod': 'post',
'ajax': {
'url':'api-datatables.php',
'data': {
page: 'swap'
}
},
'columns': [
{ data: 'username' },
{ data: 'pid' },
{ data: 'fromTo' },
{ data: 'fromToAmount' },
{ data: 'fromToPrice' },
{ data: 'processTime' },
{ data: 'action' }
]
});
Php tarafında ise page parametresini $_POST yada $_GET hangisini kullanıyorsan onunla çekiyorsun. Böylece veritabanınıda sorgulama yaparken tablo adını veya kolon adı hangilerini istiyorsan ona göre parametreleri gönderip sorgulama yapabilirsin. Aşağıda örneğini oluşturdum.
<?php
include 'layouts/session.php';
// Datatables Ajax Data parameter
$page = $_POST['page'];
if($page == 'users') {
// Kodlar bu alana gelecek.
}
@sefaaydin
bende o şekilde kullanıyorum zaten
sunu yapamadım yada şey yaptım aklıma getiremiyorum bir türlü.
selectbox dan seçilen sql tablosunun içerisindekileri datatableye aktarmaya çalışıyorum
ama söyle bişi çıkıyor karşıma haliyle.
a tablosunun sütünları ile b tablosunun sütunları aynı isimde değil.
e haliyle HTML tarafındada td alan başlıkları değişiyor
üstüne js tarafında data: veri isimleri değişiyor.
1 tane tablo seçicen ayarladığım js ve tabloya göre geliyor ama bir sonraki haliyle gelmiyor
düşündüm php tarafına istek gönderdiğimde if ila sorguları düzenleyim
ama bu seferda js ve html tarafı problem çıkarıyor :)
işini görür mü bilmiyorum. Ama 1 hafta kadar önce şöyle bir çalışma yaptım. incelemeni tavsiye ederim.
Sıralamayı falan hep api-datatables.php tarafında halledebilir ve direkt bilgiyi ekrana basabilirsin.
api-datatables.php
<?php
include 'layouts/session.php';
// Reading value
$draw = $_POST['draw'];
$row = $_POST['start'];
$rowperpage = $_POST['length']; // Rows display per page
$columnIndex = $_POST['order'][0]['column']; // Column index
$columnName = $_POST['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $_POST['order'][0]['dir']; // asc or desc
$searchValue = $_POST['search']['value']; // Search value
$count = 1;
$searchArray = array();
$searchQuery = " ";
if($searchValue != ''){
$db->from('transactions')
->join('users', '%s.uid = %s.uid')
->where('pid', $searchValue, 'LIKE')
->or_where('users', $searchValue, 'LIKE')
->or_where('dtime', $searchValue, 'LIKE')
->all();
}
// Total number of records without filtering
$totalRecords = $db->from('transactions')->select('count(*) as total')->total();
// Total number of records with filtering
$totalRecordwithFilter = $db->from('transactions')->select('count(*) as total')
->join('users', '%s.uid = %s.uid')
->where('pid', $searchValue, 'LIKE')
->or_where('users', $searchValue, 'LIKE')->total();
// Fetch records
$empRecords = $db->from('transactions')
->join('users', '%s.uid = %s.uid')
->where('pid', $searchValue, 'LIKE')
->or_where('users', $searchValue, 'LIKE')
->orderby($columnName, $columnSortOrder)
->limit($row, $rowperpage)
->all();
$data = array();
foreach ($empRecords as $row) {
$data[] = array(
"username"=>'<a href="users-info.php?uid='.$row['uid'].'"><span style="font-size:14px;">'.$row['users'].' ('.$row['uid'].')',
"pid"=>$row['pid'],
"fromTo"=>$row['cointype'] .' - '. $row['tocointype'],
"fromToAmount"=>decimalZeroClear(number_format($row['fromamount'], 4, ".", "")) .' - '. decimalZeroClear(number_format($row['toamount'], 4, ".", "")),
"fromToPrice"=>decimalZeroClear(number_format($row['fromcoinprice'], 4, ".", "")) .' - '. decimalZeroClear(number_format($row['tocoinprice'], 4, ".", "")),
"processTime"=>$row['processtime'],
"action"=>' <a href="swap-edit.php?uid='.$row['id'].'" type="button" title="Swap Edit" class="btn btn-sm btn-warning waves-effect waves-light m-1"><i class="far fa-edit"></i></a>
<a href="swap-undo.php?pid='.$row['pid'].'" type="button" title="Swap Undo" class="btn btn-sm btn-danger waves-effect waves-light m-1"><i class="far fa-undo"></i></a>',
);
}
// Response
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordwithFilter,
"aaData" => $data
);
echo json_encode($response);
?>
datatable.js Tarafı
$('#transactionAjaxTable').DataTable({
'processing': true,
'serverSide': true,
'serverMethod': 'post',
'ajax': {
'url':'api-datatables.php',
/*'data': {
page: 'swap'
}*/
},
'columns': [
{ data: 'username' },
{ data: 'pid' },
{ data: 'fromTo' },
{ data: 'fromToAmount' },
{ data: 'fromToPrice' },
{ data: 'processTime' },
{ data: 'action' }
]
});
HTML Tarafı
<table id="withdrawalAjaxTable" class="table table-bordered dt-responsive nowrap w-100">
<thead>
<tr>
<th scope="col">User</th>
<th scope="col">Process ID</th>
<th scope="col">Symbol</th>
<th scope="col">Total Amount</th>
<th scope="col">Time</th>
<th scope="col">walletaddress</th>
<th scope="col">Check</th>
<th scope="col">Action</th>
</tr>
</thead>
</table>