Php Datatable Kullanımı
-
Merhabalar
bu sitedeki plugini üyeleri listelemek için kullanıyorum Mysqlden json çıktısını alıyorum ve bu plugin ile listelemesini yaptıyorum.
Şimdi ypamak istediğim şey üyeyin kayıt tarihi uniz formatında ben bunu phpdeki timeTr fonksiyonuna nasıl bağlayabilirim.
yani unix formatındaki tarihi çevirmek istiyorum. Varmı bilgisi olan veya kullanan?
php tarafı : http://datatables.net/development/server-side/php_mysql
WildWamqire tarafından 11/Ağu/15 03:25 tarihinde düzenlenmiştir -
şahaneymıs hocam kullanayıım ben bunu kurcalayım format detayını bılemeyecegım
-
Boyle cevirebilirsin. Yada veritabanina kayit ederken formatini phpmyadmin deki tablo yaratirken kullanilan date formati gibi kaydet. Sonra cekerken bu sorun ile ugrasmazsin. Yani bu islemi baslangicta yaparsin, jsondan gelen veri hazir ciktin olur.
-
İşin kafa karıstıcı tarafı bu sql sorguları fonksiyon içinde
Misal
$kolonlar = array('uye_id','uye_kadi', 'uye_email', 'uye_ip');
sorgu kolonlarını arraydan çekiyorum.
$output = array(
"sEcho" => @intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
bu sekildede çıktısını yazdırımyorum ne ypatısay unix çevirme fonksiyonunu uygulayamadım.
php tarafı : http://datatables.net/development/server-side/php_mysql
WildWamqire tarafından 11/Ağu/15 03:25 tarihinde düzenlenmiştir -
timeTr ile türkçe zamandan mı bahsediyorsun bilemedim ama klasik devam edelim Türkçeye çevirmesi kolay.
Kodu:
<?php // Konumumuzu belirtmeliyiz yoksa hesaplamada serverlar arası sıkıntı çıkıyor. // Localhostta bir sıkıntı yokken serverda sıkıntı çıkabiliyor lokasyondan dolayı. // Yaptığı sıkıntı ise saat farkı.. date_default_timezone_set('UTC'); $unixTimestamp = '1044072306'; // 01 Şubat 2003 04:05:06 anına ait zaman damgası $zamanGosterimi = date('Y-m-d H:i:s', $unixTimestamp); // Veritabanlarında kullanılan klasik datetime tipi echo $zamanGosterimi; // Sonuç:1 echo '<br>'; $zamanGosterimi = date('d F Y H:i:s', $unixTimestamp); // İstenen gg AyAdı yyyy SS:dd:ss tipi echo $zamanGosterimi; // Sonuç:2 echo '<br>'; // Türkçe sonuçlar istiyorsak $aylarTr = ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık']; $aylarEn = ['January','February','March','April','May','June','July','August','September','October','November','December']; $zamanGosterimi = str_replace($aylarEn, $aylarTr, $zamanGosterimi); echo $zamanGosterimi; // Sonuç:3 echo '<br>'; // Son olarak zaman dilimi içinde örnek yapalım. date_default_timezone_set('Europe/Istanbul'); // PHP Türkiye lokasyonuna desteği var. $zamanGosterimi = date('d F Y H:i:s', $unixTimestamp); echo $zamanGosterimi; // Sonuç:4 echo '<br>'; $zamanGosterimi = str_replace($aylarEn, $aylarTr, $zamanGosterimi); echo $zamanGosterimi; // Sonuç:5 ?>
Çıktısı:
2003-02-01 04:05:06 // Sonuç:1 01 February 2003 04:05:06 // Sonuç:2 01 Şubat 2003 04:05:06 // Sonuç:3 01 February 2003 06:05:06 // Sonuç:4 01 Şubat 2003 06:05:06 // Sonuç:5
Kod içersinde kullanılan "Y-m-d H:i:s" ve "d F Y H:i:s" ifadelerini bir yerimizden sallamıyoruz kullanım kılavuzunda var: http://php.net/manual/tr/function.date.php
PcK0 tarafından 11/Ağu/15 03:38 tarihinde düzenlenmiştir -
-
Tamam işte yaz bakalım böyle kodu bir ekrana ne bastığını gör. Çok kompleks değilse senin için her yerde kullanmayacaksan burada ilgili unixtime'ı datetime'a çevirip tekrar $row[..] içine aktaracaksın.
while ( $aRow = mysql_fetch_array( $rResult ) ) { $row = array(); for ( $i=0 ; $i<count($aColumns) ; $i++ ) { if ( $aColumns[$i] == "version" ) { /* Special output formatting for 'version' column */ $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ]; } else if ( $aColumns[$i] != ' ' ) { /* General output */ $row[] = $aRow[ $aColumns[$i] ]; } } // Bu kısım echo('<pre>'); print_r($row); echo('</pre>'); die(); // Bu kısım Son $output['aaData'][] = $row; } echo json_encode( $output );
-
json olarak vermek zorunda değilsin. normal table <td> <tr> olarak bastığın tabloya da init edebiliyosun.
-
tr td ile aktarım boyutları büyüyor. Verdiğim en son kod örneği datatable'ın kendi kodundan.
Hani o şekil çalışmasa bile kodu, en son output json'a çevrilmeden önce ilgili kayıtları rahatlıkla yakalayabilir.
-
PcK0 bunu yazdı
tr td ile aktarım boyutları büyüyor. Verdiğim en son kod örneği datatable'ın kendi kodundan.
Hani o şekil çalışmasa bile kodu, en son output json'a çevrilmeden önce ilgili kayıtları rahatlıkla yakalayabilir.
Array ( [0] => 1 [1] => admin [2] => wildwamqire@gmail.com [3] => 1439242691 )
sonuc bu çıktı hocam -
Herkese çok teşekkürler şu şekilde çözdüm
https://codeload.github.com/DataTables/DataTables/zip/masterburadan dosyası indiriyoruz.
js tarafı
$(document).ready(function() { $('#uyeler').datatable( { "processing": true, "serverSide": true, "ajax": "uyeler_ajax.php?tip=uyeler", "columns": [ { "data": "uye_id" }, { "data": "uye_kadi" }, { "data": "uye_email" }, { "data": "uye_songiris" } ], "order": [[ 0, "desc" ]], } ); } );
Php tarafı
$table = 'tc_uyeler'; $primaryKey = 'uye_id'; $columns = array( array( 'db' => 'uye_id', 'dt' => 'uye_id' ), array( 'db' => 'uye_kadi', 'dt' => 'uye_kadi' ), array( 'db' => 'uye_email', 'dt' => 'uye_email' ), array( 'db' => 'uye_songiris', 'dt' => 'uye_songiris', 'formatter' => function( $d, $row ) { return timeTR(date("Y-m-d H:i:s",$d)); } ) ); $sql_details = array( 'user' => $dbss['user'], 'pass' => $dbss['pass'], 'db' => $dbss['name'], 'host' => $dbss['host'] ); require( 'ssp.class.php' ); echo json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns ) );
edit: sanırsam kodlardaki tagları yakalıyor tbt :)