Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > Datatable SeverSide 4 เงื่อนไขทำอย่างไรครับ ทำได้แต่เงื่อนไขเดียวครับ



 

Datatable SeverSide 4 เงื่อนไขทำอย่างไรครับ ทำได้แต่เงื่อนไขเดียวครับ

 



Topic : 136226



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์




Datatable.php
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}
    
$sql = "SELECT * FROM `record` WHERE `term` = '$term' AND `date` = '$date' AND `class` = '$class' AND `room` = '$room'";

$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, "`term` = '$term'", "`date` = '$date'", "`class` = '$class'", "`room` = '$room'")
);
?>




Tag : PHP









ประวัติการแก้ไข
2021-06-27 12:04:11
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-06-27 12:01:12 By : jgogo01 View : 1123 Reply : 22
 

 

No. 1



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าอ้างอิงจากไฟล์ตัวอย่าง บรรทัดนี้ไม่มีประโยชน์

Code
$sql = "SELECT * FROM `record` WHERE `term` = '$term' AND `date` = '$date' AND `class` = '$class' AND `room` = '$room'";

(เว้นแต่จะสร้างเมธอดใหม่ใน SSP class สำหรับ full query ขึ้นมาเอง)

เพราะเมธอด complex จาก SSP class มี signature แบบนี้

Quote:
static function complex ( $request, $conn, $table, $primaryKey, $columns, $whereResult=null, $whereAll=null )


สีแดงคือ where clause สามารถเป็น array หรือ string

เพราะมีการส่งพารามิเตอร์ไป _flatten ซึ่งมีหน้าตาแบบนี้
static function _flatten ( $a, $join = ' AND ' ) { if ( ! $a ) { return ''; // ถ้าไม่เป็นจริง (หมายถึง null, 0, ...) ส่งกลับค่าว่าง } else if ( $a && is_array($a) ) { return implode( $join, $a ); // ถ้าเป็น array เชื่อมด้วย ' AND ' } return $a; // ถ้าเป็น string ให้ bypass }


https://github.com/DataTables/DataTablesSrc/blob/master/examples/server_side/scripts/ssp.class.php#L320

ดังนั้น เป้าหมายเราคืออากิวเมนต์ $whereAll และส่งไปแบบ array ในลักษณะนี้

Code (PHP)
SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, null, ["`term` = '$term'", "`date` = '$date'", "`class` = '$class'", "`room` = '$room'"])


ไม่ได้เช็คไวยากรณ์ให้ถ้า error อะไรก็ปรับแต่งเอานะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 13:31:23 By : TheGreatGod_of_Death
 


 

No. 2



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-27 13:31:23
รายละเอียดของการตอบ ::
ถ้าอย่างตัวแปร room ผมให้ผู้ใช้เลือกก็ได้ หรือ ไม่เลือกก็ได้ครับ มันก็จะไม่ตรงเงื่อนไขนี้สิครับ ทำอย่างไรดี

?room=""

Code (PHP)
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}
    
// $sql = "SELECT * FROM `record` WHERE `term` = '$term' AND `date` = '$date' AND `class` = '$class' AND `room` = '$room'";

$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, null, ["`term` = '$term'", "`date` = '$date'", "`class` = '$class'", "`room` = '$room'"])
);
?>




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 14:29:30 By : jgogo01
 

 

No. 3



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 14:29:30
รายละเอียดของการตอบ ::
แล้วก็ตอนนี้ข้อมูลไม่ถูกดึงมาด้วยครับ

แต่ใน loadrec.php?term=1%2F2564&date=2021-06-25&class=6&room=3
แสดงนะครับ

Screen


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 14:36:25 By : jgogo01
 


 

No. 4



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 14:36:25
รายละเอียดของการตอบ ::

Code (Java)
<!-- Script DataTable loadadmin-->  
<script>
$(document).ready(function() {
  
  var table = $('#record').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "sql/admin/loadrec.php?term=<?php echo (isset($_GET['term']) ? $_GET['term'] : '');?>&date=<?php echo (isset($_GET['date']) ? $_GET['date'] : '');?>&class<?php echo (isset($_GET['class']) ? $_GET['class'] : '');?><?php echo (isset($_GET['room']) ? '&room='.$_GET['room'] : '');?>",
        "language" : {
              "emptyTable": "ไม่มีข้อมูลในตาราง",
              "info": "แสดง _START_ ถึง _END_ จาก _TOTAL_ แถว",
              "infoEmpty": "แสดง 0 ถึง 0 จาก 0 แถว",
              "infoFiltered": "(กรองข้อมูล _MAX_ ทุกแถว)",
              "infoThousands": ",",
              "lengthMenu": "แสดง _MENU_ แถว",
              "loadingRecords": "กำลังโหลดข้อมูล...",
              "processing": "กำลังดำเนินการ...",
              "search": "ค้นหา: ",
              "zeroRecords": "ไม่พบข้อมูล",
              "paginate": {
                  "first": "หน้าแรก",
                  "previous": "ก่อนหน้า",
                  "next": "ถัดไป",
                  "last": "หน้าสุดท้าย"
              },
              "aria": {
                  "sortAscending": ": เปิดใช้งานการเรียงข้อมูลจากน้อยไปมาก",
                  "sortDescending": ": เปิดใช้งานการเรียงข้อมูลจากมากไปน้อย"
              },
              "autoFill": {
                  "cancel": "ยกเลิก",
                  "fill": "กรอกทุกช่องด้วย",
                  "fillHorizontal": "กรอกตามแนวนอน",
                  "fillVertical": "กรอกตามแนวตั้ง",
                  "info": "ข้อมูลเพิ่มเติม"
              },
              "buttons": {
                  "collection": "ชุดข้อมูล",
                  "colvis": "การมองเห็นคอลัมน์",
                  "colvisRestore": "เรียกคืนการมองเห็น",
                  "copy": "คัดลอก",
                  "copyKeys": "กดปุ่ม Ctrl หรือ Command + C เพื่อคัดลอกข้อมูลบนตารางไปยัง Clipboard ที่เครื่องของคุณ"
              }
          },
        "order": [[ 0, "asc" ]],
        "columns": [
        { "width": "5%" },
        { "width": "5%" },
        { "width": "5%" },
        { "width": "25%" },
        { "width": "25%" },
		{ "width": "5%" },
		{ "width": "5%" },
		{ "width": "15%" },
		{ "width": "10%" }
         ],

        "order": [[ 0, 'desc' ]],
        responsive: true,
		} );
    

		table.on( 'order.dt search.dt', function () {
			table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
				cell.innerHTML = i+1;
			} );
		} ).draw();


} );
</script>




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 14:38:13 By : jgogo01
 


 

No. 5



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 14:29:30
รายละเอียดของการตอบ ::
Code (PHP)
$a = '';
$b = "test = 'val'";
$c = '';

$str = $a . ', ' . $b . ', ' . $c;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));

// ส่ง $where เป็นพารามิเตอร์สุดท้ายของเมธอด complex


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 15:35:56 By : TheGreatGod_of_Death
 


 

No. 6



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-27 15:35:56
รายละเอียดของการตอบ ::

Code (PHP)
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}
    
// $sql = "SELECT * FROM `record` WHERE `term` = '$term' AND `date` = '$date' AND `class` = '$class' AND `room` = '$room'";

$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

$t = "term = '$term'";
$d = "date = '$date'";
$c = "class = '$class'";

$str = $t . ', ' . $d . ', ' . $c;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));


echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, $where)
);
?>



แบบนี้พอเข้าใจถูกไหมครับ ?

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 19:19:34 By : jgogo01
 


 

No. 7



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 19:19:34
รายละเอียดของการตอบ ::
ใกล้แล้วครับ...แต่ยังไม่ได้เช็คค่าว่าง
ทำแบบนี้มีค่าเท่ากับ คห.2

ทีแรกว่าจะแนะให้ทำใน if isset block เลย

แต่ถ้าทำแยกลองใช้ ternary operator เพื่อเช็คค่าว่างด้วย เช่น

Code (PHP)
$t = ($term == "") ? "" : "term = '$term'";
//...


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 19:49:33 By : TheGreatGod_of_Death
 


 

No. 8



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-27 19:49:33
รายละเอียดของการตอบ ::
Code (PHP)
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}


$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

$t = ($term == "") ? "" : "term = '$term'";
$d = ($date == "") ? "" : "date = '$date'";
$c = ($class == "") ? "" : "class = '$class'";

$str = $t . ', ' . $d . ', ' . $c;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));


echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, null, $where)
);
?>


ตอนนี้ตารางแสดงแล้วครับ แต่เราทำเงื่อนไขอย่างไรครับ ตอนนี้ลองส่งค่าไป ตารางก็แสดงข้อมูลออกมาหมดเลยครับ

ต้องการให้ Date / Class / term ต้องเลือกเสมอ
room เลือกหรือไม่ก็ได้ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 20:24:02 By : jgogo01
 


 

No. 9



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ternary operator ก็คือเงื่อนไข ถ้าเลือกเสมอก็ไม่ต้องใช้

Code (PHP)
$t = "term = '$term'";  // เลือกเสมอ ไม่ต้องมีเงื่อนไข
$d = "date = '$date'"; //ยังไงก็มีข้อมูล
$c = "class = '$class'"; // ฟันธงว่าข้อมูลมาแน่
$r = ($room == "") ? "" : "room = '$room'";  // ไม่แน่นอน เป็นได้ทั้ง มีและไม่มี ต้องเช็ค

$str = $t . ', ' . $d . ', ' . $c . ', ' . $r; // เพิ่ม $room กรณีมีข้อมูล
//...

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 22:11:59 By : TheGreatGod_of_Death
 


 

No. 10



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-27 22:11:59
รายละเอียดของการตอบ ::

/loadrec.php?term=1%2F2564&date=2021-06-27&class=5&room=2 ข้อมูลหน้านี้ปกติครับตามเงื่อนไข

แต่ข้อมูลไม่มายังตารางครับ
Code (PHP)
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}


$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

$t = "term = '$term'";
$d = "date = '$date'";
$c = "class = '$class'";
$r = ($room == "") ? "" : "room = '$room'"; 

$str = $t . ', ' . $d . ', ' . $c . ', ' . $r;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));


echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, null, $where)
);
?>



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 22:22:47 By : jgogo01
 


 

No. 11



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 22:22:47
รายละเอียดของการตอบ ::

Script ตารางครับ

Code (Java)
<!-- Script DataTable loadadmin-->  
<script>
$(document).ready(function() {
  
  var table = $('#record').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "sql/admin/loadrec.php?term=<?php echo (isset($_GET['term']) ? $_GET['term'] : '');?>&date=<?php echo (isset($_GET['date']) ? $_GET['date'] : '');?>&class<?php echo (isset($_GET['class']) ? $_GET['class'] : '');?><?php echo (isset($_GET['room']) ? '&room='.$_GET['room'] : '');?>",
        "language" : {
              "emptyTable": "ไม่มีข้อมูลในตาราง",
              "info": "แสดง _START_ ถึง _END_ จาก _TOTAL_ แถว",
              "infoEmpty": "แสดง 0 ถึง 0 จาก 0 แถว",
              "infoFiltered": "(กรองข้อมูล _MAX_ ทุกแถว)",
              "infoThousands": ",",
              "lengthMenu": "แสดง _MENU_ แถว",
              "loadingRecords": "กำลังโหลดข้อมูล...",
              "processing": "กำลังดำเนินการ...",
              "search": "ค้นหา: ",
              "zeroRecords": "ไม่พบข้อมูล",
              "paginate": {
                  "first": "หน้าแรก",
                  "previous": "ก่อนหน้า",
                  "next": "ถัดไป",
                  "last": "หน้าสุดท้าย"
              },
              "aria": {
                  "sortAscending": ": เปิดใช้งานการเรียงข้อมูลจากน้อยไปมาก",
                  "sortDescending": ": เปิดใช้งานการเรียงข้อมูลจากมากไปน้อย"
              },
              "autoFill": {
                  "cancel": "ยกเลิก",
                  "fill": "กรอกทุกช่องด้วย",
                  "fillHorizontal": "กรอกตามแนวนอน",
                  "fillVertical": "กรอกตามแนวตั้ง",
                  "info": "ข้อมูลเพิ่มเติม"
              },
              "buttons": {
                  "collection": "ชุดข้อมูล",
                  "colvis": "การมองเห็นคอลัมน์",
                  "colvisRestore": "เรียกคืนการมองเห็น",
                  "copy": "คัดลอก",
                  "copyKeys": "กดปุ่ม Ctrl หรือ Command + C เพื่อคัดลอกข้อมูลบนตารางไปยัง Clipboard ที่เครื่องของคุณ"
              }
          },
        "order": [[ 0, "asc" ]],
        "columns": [
        { "width": "5%" },
        { "width": "5%" },
        { "width": "5%" },
        { "width": "25%" },
        { "width": "25%" },
		{ "width": "5%" },
		{ "width": "5%" },
		{ "width": "15%" },
		{ "width": "10%" }
         ],

        "order": [[ 0, 'desc' ]],
        responsive: true,
		} );
    

		table.on('draw.dt', function () {
    var info = table.page.info();
    table.column(0, { search: 'applied', order: 'applied', page: 'applied' }).nodes().each(function (cell, i) {
        cell.innerHTML = i + 1 + info.start;
    });
});


} );
</script>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 22:25:24 By : jgogo01
 


 

No. 12



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-27 22:25:24
รายละเอียดของการตอบ ::
option ทำไมมี order 2 อัน asc/desc เลือกเอาอันเดียวแล้วลองใหม่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 23:06:27 By : TheGreatGod_of_Death
 


 

No. 13



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-27 23:06:27
รายละเอียดของการตอบ ::
เอาออกแล้วครับ ก็ยังไม่ได้ครับ

DT



ประวัติการแก้ไข
2021-06-27 23:55:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-27 23:52:58 By : jgogo01
 


 

No. 14



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าเช็คค่าว่างทั้งหมด ($t, $d, $c, $r) ได้ผลอย่างไร
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 13:12:52 By : TheGreatGod_of_Death
 


 

No. 15



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ค่า id ต่าง ๆ เข้าปกตินะครับ จากที่ลอง Echo ดูครับ

loadrec.php
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}


$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),

    array( 'db' => 'img', 'dt' => 7, 
        'formatter' => function( $d, $row) {
        return '<img class=\'zoom\' src=\'upload/lfh/'.$d.'\' style=\'width:200px;\'/>';
        }),
        
    array(
        'db'        => 'id',
        'dt'        => 8,
        'formatter' => function( $d, $row) {
            return  '<button onclick="DeleteRec(\'' . $d . '\')" class="btn btn-sm btn-danger"> <i class="pr-1 fas fa-trash"></i>ลบ</button>';
        })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );

$t = ($term == "") ? "" : "term = '$term'"; 
$d = ($date == "") ? "" : "date = '$date'"; 
$c = ($class == "") ? "" : "class = '$class'"; 
$r = ($room == "") ? "" : "room = '$room'"; 


echo"$t $d $c $r";

$str = $t . ', ' . $d . ', ' . $c . ', ' . $r;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));


echo json_encode(
	SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, null,$where)
);
?>




ผลลัพธ์หน้า loadrec.php

loadrec
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 15:23:01 By : jgogo01
 


 

No. 16



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ก่อนมี where ข้อมูลออกตารางหรือไม่

ถ้าไม่...หากใช้ simple class ออกตารางหรือไม่
Code (PHP)
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 15:31:52 By : TheGreatGod_of_Death
 


 

No. 17



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-28 15:31:52
รายละเอียดของการตอบ ::
หากเอา Where ออกข้อมูลออกตารางครับ ทั้งหมดครับ

หน้า loadrec.php มีข้อมูลออกตามเงื่อนไขครับ หากใส่ where
inspect ดูไม่มี Error ครับ



ประวัติการแก้ไข
2021-06-28 15:50:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 15:44:30 By : jgogo01
 


 

No. 18



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าเอาไว้แค่นี้ล่ะ

Code (JavaScript)
"ajax": "sql/admin/loadrec.php", // ลองใส่แบบมี / นำหน้าด้วย และไม่ต้องมี query string


แล้วทดสอบเหมือนเดิมทั้ง มีและไม่มี where


ประวัติการแก้ไข
2021-06-28 15:58:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 15:56:06 By : TheGreatGod_of_Death
 


 

No. 19



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 18 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-28 15:56:06
รายละเอียดของการตอบ ::

มี where ทำไม่ข้อมูลอะไรเลยครับ
ไม่มี ข้อมูลออกมาทั้งหมดครับ

แต่ถ้าไม่ส่งไปจะไม่มีค่า term/class/room ส่งไปนะครับ
เพราะ form ค้นหาผมให้ส่งค่าแบบ GET แต่ไม่ได้ตั้ง Action ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 16:01:04 By : jgogo01
 


 

No. 20



โพสกระทู้ ( 296 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 19 เขียนโดย : jgogo01 เมื่อวันที่ 2021-06-28 16:01:04
รายละเอียดของการตอบ ::
จริงๆ ผมหมายถึง ส่งด้วย ajax.data แทน
แต่ดูแล้วไม่น่าต่างกัน


จุดสังเกตจาก ajax response

1. draw parameter
https://datatables.net/forums/discussion/62587/ajax-returns-that-draw-is-zero-but-recordstotal-is-full-table-dont-show-data

2. "data" response เป็น array แต่ columns.width ถูกนิยามเป็น object...อาจทำให้ DataTable อ่านแบบ object (ไม่แน่ใจต้องดู docs)
ลองเอา columns.width ออก




สิ่งสำคัญที่ช่วยในการ debug คือ ajax response
เปรียบเทียบทั้งตอนที่แสดงและไม่แสดงออกตาราง

ปล.บางปัญหาคนอื่นอาจช่วยไม่ได้ เพราะเกินจินตนาการ...เว้นแต่อยู่หน้างาน...ยังไงลองศึกษาหรือสอบถามโดยตรงที่
https://datatables.net/forums/
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 21:00:22 By : TheGreatGod_of_Death
 


 

No. 21



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 20 เขียนโดย : TheGreatGod_of_Death เมื่อวันที่ 2021-06-28 21:00:22
รายละเอียดของการตอบ ::
ขอบคุณครับจะลองไปหาจุดผิดดู ^^

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-28 21:15:21 By : jgogo01
 


 

No. 22



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับผม ^^ ขอบคุณครับผม

Script
<!-- Script DataTable loadadmin-->  
<!-- Script DataTable loadadmin-->  
<script>
$(document).ready(function() {
  
  var table = $('#record').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "sql/admin/loadrec.php?term=<?php echo (isset($_GET['term']) ? $_GET['term'] : '');?>&date=<?php echo (isset($_GET['date']) ? $_GET['date'] : '');?>&class=<?php echo (isset($_GET['class']) ? $_GET['class'] : '');?><?php echo (isset($_GET['room']) ? '&room='.$_GET['room'] : '');?>",
        "language" : {
              "emptyTable": "ไม่มีข้อมูลในตาราง",
              "info": "แสดง _START_ ถึง _END_ จาก _TOTAL_ แถว",
              "infoEmpty": "แสดง 0 ถึง 0 จาก 0 แถว",
              "infoFiltered": "(กรองข้อมูล _MAX_ ทุกแถว)",
              "infoThousands": ",",
              "lengthMenu": "แสดง _MENU_ แถว",
              "loadingRecords": "กำลังโหลดข้อมูล...",
              "processing": "กำลังดำเนินการ...",
              "search": "ค้นหา: ",
              "zeroRecords": "ไม่พบข้อมูล",
              "paginate": {
                  "first": "หน้าแรก",
                  "previous": "ก่อนหน้า",
                  "next": "ถัดไป",
                  "last": "หน้าสุดท้าย"
              },
              "aria": {
                  "sortAscending": ": เปิดใช้งานการเรียงข้อมูลจากน้อยไปมาก",
                  "sortDescending": ": เปิดใช้งานการเรียงข้อมูลจากมากไปน้อย"
              },
              "autoFill": {
                  "cancel": "ยกเลิก",
                  "fill": "กรอกทุกช่องด้วย",
                  "fillHorizontal": "กรอกตามแนวนอน",
                  "fillVertical": "กรอกตามแนวตั้ง",
                  "info": "ข้อมูลเพิ่มเติม"
              },
              "buttons": {
                  "collection": "ชุดข้อมูล",
                  "colvis": "การมองเห็นคอลัมน์",
                  "colvisRestore": "เรียกคืนการมองเห็น",
                  "copy": "คัดลอก",
                  "copyKeys": "กดปุ่ม Ctrl หรือ Command + C เพื่อคัดลอกข้อมูลบนตารางไปยัง Clipboard ที่เครื่องของคุณ"
              }
          },
        "order": [[ 2, "desc" ]],
        "columns": [
        { "width": "5%" },
        { "width": "5%" },
        { "width": "5%" },
        { "width": "25%" },
        { "width": "25%" },
		{ "width": "5%" },
		{ "width": "5%" },
		{ "width": "15%" },
		{ "width": "10%" }
         ],
        responsive: true
		} );
    

		table.on('draw.dt', function () {
    var info = table.page.info();
    table.column(0, { search: 'applied', order: 'applied', page: 'applied' }).nodes().each(function (cell, i) {
        cell.innerHTML = i + 1 + info.start;
    });
});


} );
</script>





loadrec.php
<?php
require('../../connect.php');

$table = 'record';
$primaryKey = 'id';


// รับค่า ID จาก admin.php
if(isset($_GET['term'])){
    $term = mysqli_real_escape_string($con, $_GET['term']);
} else {
    $term = '';
}

if(isset($_GET['date'])){
    $date = mysqli_real_escape_string($con, $_GET['date']);
} else {
    $date = '';
}

if(isset($_GET['class'])){
    $class = mysqli_real_escape_string($con, $_GET['class']);
} else {
    $class = '';
}

if(isset($_GET['room'])){
    $room = mysqli_real_escape_string($con, $_GET['room']);
} else {
    $room = '';
}


$columns = array(
    array( 'db' => 'id', 'dt' => 0 ),
	array( 'db' => 'classroom', 'dt' => 1 ),
    array( 'db' => 'period', 'dt' => 2 ),
    array( 'db' => 'subject', 'dt' => 3 ),
    array( 'db' => 'teacher', 'dt' => 4 ),
    array( 'db' => 's-all', 'dt' => 5 ),
    array( 'db' => 's-in', 'dt' => 6 ),
	array(
        'db'        => 'id',
        'dt'        => 7,
        'formatter' => function( $d, $row ) {
            return '
            <button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#DeleteS" data-whatever="'.$d.'"> <i class="fas fa-trash"></i> ลบ </button>';
        }),
        array(
            'db'        => 'id',
            'dt'        => 8,
            'formatter' => function( $d, $row ) {
                return '
                <button type="button" class="btn btn-sm btn-warning" data-toggle="modal" data-target="#EditS" data-whatever="'.$d.'"> <i class="far fa-edit"></i> แก้ไข </button>
                <button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#DeleteS" data-whatever="'.$d.'"> <i class="fas fa-trash"></i> ลบ </button>';
            })
);

$sql_details = array(     
    'user' => $user,
    'pass' => $passwd,
    'db'   => $db,
    'host' => $host
    
    );


require( '../../datatable/ssp.class.php' );


$t = "term = '$term'"; 
$d = "date = '$date'"; 
$c = "class = '$class'"; 
$r = ($room == "") ? "" : "room = '$room'"; 

$str = $t . ', ' . $d . ', ' . $c . ', ' . $r;
$arr = explode(', ', $str);
$where = array_values(array_filter($arr, 'strlen'));

echo json_encode(
	SSP::complex($_GET, $sql_details, $table, $primaryKey, $columns, $where)
);
?>



ประวัติการแก้ไข
2021-06-29 01:28:42
2021-06-29 01:28:48
2021-06-29 01:28:55
2021-06-29 01:29:00
2021-06-29 01:29:05
2021-06-29 01:29:10
2021-06-29 01:29:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-06-29 00:39:45 By : jgogo01
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Datatable SeverSide 4 เงื่อนไขทำอย่างไรครับ ทำได้แต่เงื่อนไขเดียวครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่