06-04-2024
This commit is contained in:
71
test_sqlite/action.php
Normal file
71
test_sqlite/action.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
//action.php
|
||||
// id, filename, lens, legende, copyright, title,creator,keywords
|
||||
|
||||
//include('database_connection.php');
|
||||
//print_r($_POST);
|
||||
/*
|
||||
*/
|
||||
//$_POST['action'] = 'delete';
|
||||
//$_POST['action'] = 'edit';
|
||||
/*
|
||||
$_POST["id"] = 179;
|
||||
|
||||
$_POST['lens'] = "";
|
||||
$_POST['legende'] = "cso";
|
||||
$_POST['copyright'] = "cso";
|
||||
$_POST['title'] = "cso";
|
||||
$_POST['creator'] = "";
|
||||
$_POST['keywords'] = "";
|
||||
*/
|
||||
$conn = new PDO('sqlite:../db_photo.sqlite3');
|
||||
|
||||
if($_POST['action'] == 'edit') {
|
||||
try {
|
||||
$data = array(
|
||||
':lens' => $_POST['lens'],
|
||||
':legende' => $_POST['legende'],
|
||||
':copyright' => $_POST['copyright'],
|
||||
':title' => $_POST['title'],
|
||||
':creator' => $_POST['creator'],
|
||||
':keywords' => $_POST['keywords'],
|
||||
':id' => $_POST['id']
|
||||
);
|
||||
|
||||
$query = "
|
||||
UPDATE photos
|
||||
SET lens = :lens,
|
||||
legende = :legende,
|
||||
copyright = :copyright,
|
||||
title = :title,
|
||||
creator = :creator,
|
||||
keywords = :keywords
|
||||
WHERE id = :id
|
||||
";
|
||||
// echo $query;
|
||||
// print_r($data);
|
||||
|
||||
$statement = $conn->prepare($query);
|
||||
$statement->execute($data);
|
||||
echo json_encode($_POST);
|
||||
}
|
||||
catch(PDOException $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($_POST['action'] == 'delete') {
|
||||
$query = "
|
||||
DELETE FROM photos
|
||||
WHERE id = '".$_POST["id"]."'
|
||||
";
|
||||
$statement = $conn->prepare($query);
|
||||
$statement->execute();
|
||||
echo json_encode($_POST);
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
6762
test_sqlite/bootstrap.css
vendored
Normal file
6762
test_sqlite/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
185
test_sqlite/dataTables.bootstrap.css
Normal file
185
test_sqlite/dataTables.bootstrap.css
Normal file
@@ -0,0 +1,185 @@
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
border-collapse: separate !important;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th,
|
||||
table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: 75px;
|
||||
display: inline-block;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting {
|
||||
padding-right: 30px;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
table.dataTable thead .sorting,
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc,
|
||||
table.dataTable thead .sorting_asc_disabled,
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
table.dataTable thead .sorting:after,
|
||||
table.dataTable thead .sorting_asc:after,
|
||||
table.dataTable thead .sorting_desc:after,
|
||||
table.dataTable thead .sorting_asc_disabled:after,
|
||||
table.dataTable thead .sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
right: 8px;
|
||||
display: block;
|
||||
font-family: 'Glyphicons Halflings';
|
||||
opacity: 0.5;
|
||||
}
|
||||
table.dataTable thead .sorting:after {
|
||||
opacity: 0.2;
|
||||
content: "\e150";
|
||||
/* sort */
|
||||
}
|
||||
table.dataTable thead .sorting_asc:after {
|
||||
content: "\e155";
|
||||
/* sort-by-attributes */
|
||||
}
|
||||
table.dataTable thead .sorting_desc:after {
|
||||
content: "\e156";
|
||||
/* sort-by-attributes-alt */
|
||||
}
|
||||
table.dataTable thead .sorting_asc_disabled:after,
|
||||
table.dataTable thead .sorting_desc_disabled:after {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody table thead .sorting:after,
|
||||
div.dataTables_scrollBody table thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody table thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_scrollBody table tbody tr:first-child th,
|
||||
div.dataTables_scrollBody table tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_wrapper div.dataTables_length,
|
||||
div.dataTables_wrapper div.dataTables_filter,
|
||||
div.dataTables_wrapper div.dataTables_info,
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
table.dataTable.table-condensed > thead > tr > th {
|
||||
padding-right: 20px;
|
||||
}
|
||||
table.dataTable.table-condensed .sorting:after,
|
||||
table.dataTable.table-condensed .sorting_asc:after,
|
||||
table.dataTable.table-condensed .sorting_desc:after {
|
||||
top: 6px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
table.table-bordered.dataTable th,
|
||||
table.table-bordered.dataTable td {
|
||||
border-left-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||
table.table-bordered.dataTable td:last-child,
|
||||
table.table-bordered.dataTable td:last-child {
|
||||
border-right-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable tbody th,
|
||||
table.table-bordered.dataTable tbody td {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||
margin: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
7
test_sqlite/database_connection.php
Normal file
7
test_sqlite/database_connection.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
//database_connection.php
|
||||
|
||||
$connect = new PDO("mysql:host=localhost; dbname=testing", "root", "sncfp1p2");
|
||||
|
||||
?>
|
||||
0
test_sqlite/db_photo.sqlite3
Normal file
0
test_sqlite/db_photo.sqlite3
Normal file
80
test_sqlite/fetch.php
Normal file
80
test_sqlite/fetch.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
//fetch.php
|
||||
// id, filename, lens, legende, copyright, title,creator,keywords
|
||||
|
||||
$column = array("id", "filename", "lens", "legende", "copyright", "title", "creator", "keywords");
|
||||
|
||||
$query = "SELECT * FROM photos ";
|
||||
|
||||
if(isset($_POST["search"]["value"]))
|
||||
{
|
||||
$query .= '
|
||||
WHERE filename LIKE "%'.$_POST["search"]["value"].'%"
|
||||
OR lens LIKE "%'.$_POST["search"]["value"].'%"
|
||||
OR speed LIKE "%'.$_POST["search"]["value"].'%"
|
||||
';
|
||||
}
|
||||
|
||||
if(isset($_POST["order"]))
|
||||
{
|
||||
$query .= 'ORDER BY '.$column[$_POST['order']['0']['column']].' '.$_POST['order']['0']['dir'].' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
$query .= 'ORDER BY id DESC ';
|
||||
}
|
||||
$query1 = '';
|
||||
|
||||
if($_POST["length"] != -1)
|
||||
{
|
||||
$query1 = 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
|
||||
}
|
||||
|
||||
|
||||
$conn = new PDO('sqlite:../db_photo.sqlite3');
|
||||
|
||||
$stmt = $conn->prepare($query);
|
||||
$stmt->execute();
|
||||
$res = $stmt->fetchAll();
|
||||
$number_filter_row = count($res);
|
||||
|
||||
$stmt = $conn->prepare($query . $query1);
|
||||
$stmt->execute();
|
||||
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
|
||||
$data = array();
|
||||
|
||||
foreach($result as $row) {
|
||||
$sub_array = array();
|
||||
$sub_array[] = $row['id'];
|
||||
$sub_array[] = $row['filename'];
|
||||
$sub_array[] = $row['lens'];
|
||||
$sub_array[] = $row['legende'];
|
||||
$sub_array[] = $row['copyright'];
|
||||
$sub_array[] = $row['title'];
|
||||
$sub_array[] = $row['creator'];
|
||||
$sub_array[] = $row['keywords'];
|
||||
$data[] = $sub_array;
|
||||
}
|
||||
// id, filename, lens, legende, copyright, title,creator,keywords
|
||||
|
||||
function count_all_data($connect) {
|
||||
$connect = new PDO('sqlite:../db_photo.sqlite3');
|
||||
$query = "SELECT * FROM photos";
|
||||
$statement = $connect->prepare($query);
|
||||
$statement->execute();
|
||||
return $statement->rowCount();
|
||||
}
|
||||
|
||||
$output = array(
|
||||
'draw' => intval($_POST['draw']),
|
||||
'recordsTotal' => count_all_data($conn),
|
||||
'recordsFiltered' => $number_filter_row,
|
||||
'data' => $data
|
||||
);
|
||||
|
||||
echo json_encode($output);
|
||||
|
||||
?>
|
||||
84
test_sqlite/index.php
Normal file
84
test_sqlite/index.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>How to use Tabledit plugin with jQuery Datatable in PHP Ajax</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
|
||||
<!--link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /-->
|
||||
<link rel="stylesheet" href="bootstrap.css" />
|
||||
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.css" />
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
|
||||
<script src="https://markcell.github.io/jquery-tabledit/assets/js/tabledit.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<h3 align="center">How to use Tabledit plugin with jQuery Datatable in PHP Ajax</h3>
|
||||
<br />
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Sample Data</div>
|
||||
<div class="panel-body">
|
||||
<div class="table-responsive">
|
||||
<table id="sample_data" class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Filename</th>
|
||||
<th>Lens</th>
|
||||
<th>Legende</th>
|
||||
<th>Copyright</th>
|
||||
<th>Title</th>
|
||||
<th>Creator</th>
|
||||
<th>Keywords</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<script type="text/javascript" language="javascript" >
|
||||
$(document).ready(function(){
|
||||
|
||||
var dataTable = $('#sample_data').DataTable({
|
||||
"processing" : true,
|
||||
"serverSide" : true,
|
||||
"order" : [],
|
||||
"ajax" : {
|
||||
url:"fetch.php",
|
||||
type:"POST"
|
||||
}
|
||||
});
|
||||
|
||||
// id, filename, lens, legende, copyright, title,creator,keywords
|
||||
// [1, 'filename'],
|
||||
|
||||
$('#sample_data').on('draw.dt', function(){
|
||||
$('#sample_data').Tabledit({
|
||||
url:'action.php',
|
||||
dataType:'json',
|
||||
columns:{
|
||||
identifier : [0, 'id'],
|
||||
editable:[[2, 'lens'], [3, 'legende'], [4, 'copyright'], [5, 'title'], [6, 'creator'], [7, 'keywords']]
|
||||
},
|
||||
restoreButton:false,
|
||||
onSuccess:function(data, textStatus, jqXHR)
|
||||
{
|
||||
if(data.action == 'delete')
|
||||
{
|
||||
$('#' + data.id).remove();
|
||||
$('#sample_data').DataTable().ajax.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
23
test_sqlite/style.css
Normal file
23
test_sqlite/style.css
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
width: 750px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.container {
|
||||
width: 970px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
width: 1170px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1400px) {
|
||||
.container {
|
||||
width: 1370px;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user