v2.5.2
Giriş yap

Datatable Mysql Tablo Select and List

aydinkeskin
588 defa görüntülendi

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.

Cevap yaz
Cevaplar (4)
aydinkeskin
892 gün önce

@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 :)
sefaaydin
892 gün önce

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.
        
    }
aydinkeskin
892 gün önce

@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 :)

sefaaydin
894 gün önce

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>