Bonjour.
J'utilise des Jquery DataTables pour afficher dynamiquement les données dans mon tbody. Voici le code HTML de la Table:
Code html : 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 <table id="order_data" class="table table-bordered table-striped"> <thead> <tr> <th>Order ID</th> <th>Customer Name</th> <th>Total Amount</th> <th>Payment Status</th> <th>Order Status</th> <th>Order Date</th> <?php if($_SESSION['type'] == 'master') { echo '<th>Created By</th>'; } ?> <th></th> <th></th> <th></th> </tr> </thead> </table>
Et maintenant, voici le Code Ajax qui est censé appelé le Code PHP qui traite les données:
Et enfin, le Code PHP du Fichier order_action.php qui traite l'affichage de la table:
Code : 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 $(document).on('click', '.delete', function(){ var inventory_order_id = $(this).attr("id"); var status = $(this).data("status"); var btn_action = "delete"; if(confirm("Are you sure you want to change status?")) { $.ajax({ url:"order_action.php", method:"POST", data:{inventory_order_id:inventory_order_id, status:status, btn_action:btn_action}, success:function(data) { $('#alert_action').fadeIn().html('<div class="alert alert-info">'+data+'</div>'); orderdataTable.ajax.reload(); } }) } else { return false; } });
Code : 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 if($_POST['btn_action'] == 'delete') { $status = 'Pending...'; if($_POST['status'] == 'Pending...') { $status = 'Order is ready'; } else if ($_POST['status'] == 'Order is ready'){ $status = 'Retired'; } $query = " UPDATE inventory_order SET inventory_order_status = :inventory_order_status WHERE inventory_order_id = :inventory_order_id "; $statement = $connect->prepare($query); $statement->execute( array( ':inventory_order_status' => $status, ':inventory_order_id' => $_POST["inventory_order_id"] ) ); $result = $statement->fetchAll(); if(isset($result)) { echo 'Order status change to ' . $status; } }
Le problème est que qu'au lieu que la ligne tbody de la colonne s'affiche avec le status correspondant (Pending..., Order is ready, Retired) qui change normalement et correctement dans la base de données, elle n'affiche que le mot "Inactive" qui ne change pas du tout sur la page HTML mais change très bien à chaque clique sur le bouton Delete dans la Base de Données.
Où se trouve donc le bug qui empêche la modification du Status à chaque fois qu'on clique sur le bouton delete pour effectuer la mise à jour dans la BDD, et dont l'affichage reste malgré tout (inchangeable) sur Inactive au lieu de Pending... ou de Order is ready ou encore de Retired ?
Je précise que la mise à jour s'opère bien dans la base de données. Mais côté client, c'est complètement impossible. Et c'est bien là mon souci.
Merci d'avance.
Partager