Bonjour à tous
Je rencontre une difficulté et je demande votre aide.
J'affiches les données d'une requête avec datatable. J'autorise le trie sur la première et la seconde colonne uniquement. Mes données s'affichent correctement mais lorsque je trie sur la première colonne, je n'ai pas de résultat, aucune donnée dans le tableau. Cependant sur la colonne 2 ça marche sans soucis.
Je cherche en vain sans comprendre d'où viens le problème.
Pouvez vous m'aider s'il vous plait?
La code fetch_test
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 include('db.php'); include('function.php'); $query = ''; $output = array(); $query .= "SELECT * FROM tbl_test "; if(isset($_POST["search"]["value"])) { $query .= 'WHERE col1 LIKE "%'.$_POST["search"]["value"].'%" '; } if(isset($_POST["order"])) { $query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' '; } else { $query .= 'ORDER BY id DESC '; } if($_POST["length"] != -1) { $query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length']; } $statement = $connection->prepare($query); $statement->execute(); $result = $statement->fetchAll(); $data = array(); $filtered_rows = $statement->rowCount(); foreach($result as $row) { $sub_array = array(); $sub_array[] = $row["col1"]; $sub_array[] = $row["col2"]; $sub_array[] = $row["col3"]; $data[] = $sub_array; } $output = array( "draw" => intval($_POST["draw"]), "recordsTotal" => $filtered_rows, "recordsFiltered" => get_total(), "data" => $data ); echo json_encode($output);
Le html du tableau :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <div class="table-responsive"> <table id="test_data" class="table table-bordered table-sm table-striped table-hover" style="width: 100%"> <thead> <tr class="text-center"> <th>col1</th> <th>col2</th> <th>col3</th> </tr> </thead> </table> </div>
Le script au besoin :
Code script : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 var dataTable = $('#test_data').DataTable({ "processing":true, "serverSide":true, "order":[], "ajax":{ url:"fetch_test.php", type:"POST" }, "columnDefs":[ { "targets":[2], "orderable":false, }, { "targets":[0, 1, 2], "className":"text-center", }, ], });
Merci d'avance
Salutation
Partager