par
chegmarco » 26 janv. 2021, 22:46
Bonjour.
J'utilise des
Jquery DataTables pour afficher dynamiquement les données dans mon
tbody. Voici le code HTML de la Table:
Code : Tout sélectionner
<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:
Code : Tout sélectionner
$(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;
}
});
Et enfin, le Code PHP du Fichier
order_action.php qui traite l'affichage de la table:
Code : Tout sélectionner
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.
Bonjour.
J'utilise des [b]Jquery DataTables[/b] pour afficher dynamiquement les données dans mon [b]tbody[/b]. Voici le code HTML de la Table:
[CODE]<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>[/CODE]
Et maintenant, voici le Code Ajax qui est censé appelé le Code PHP qui traite les données:
[CODE]$(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]
Et enfin, le Code PHP du Fichier [b]order_action.php[/b] qui traite l'affichage de la table:
[CODE]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;
}
}[/CODE]
Le problème est que qu'au lieu que la ligne [b]tbody[/b] de la colonne s'affiche avec le status correspondant ([b]Pending...[/b], [b]Order is ready[/b], [b]Retired[/b]) 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 [b]Delete[/b] 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 [b]delete[/b] pour effectuer la mise à jour dans la BDD, et dont l'affichage reste malgré tout ([b]inchangeable[/b]) sur [b]Inactive[/b] au lieu de [b]Pending...[/b] ou de [b]Order is ready[/b] ou encore de [b]Retired[/b] ?
[b]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.[/b]
Merci d'avance.