Bonjour à tous,

je n'ai que peu d'expérience avec Virtuemart (et plus généralement avec Mysql), mais je tombe parfois sur des portions de code qui me paraissent peu optimisées ...
A votre avis, dans le cas suivant (fichier ps_order.php > fonction order_status_update) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
// Update the Order Items' status 
$q = "SELECT order_item_id FROM #__{vm}_order_item WHERE order_id=".$d['order_id'];
$db->query($q);
$dbu = new ps_DB;
while ($db->next_record()) {
    $item_id = $db->f("order_item_id");
    $q  = "UPDATE #__{vm}_order_item SET order_status='".$d["order_status"]."'"
    . "\n, mdate='" . $timestamp . "' "
    . "\n WHERE order_item_id=".$item_id;
    $dbu->query( $q );
}
ne serait-il pas plus économique en requêtes de faire directement un UPDATE de tous les items correspondants à l'id de commande ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
// Update the Order Items' status 
$q  = "UPDATE #__{vm}_order_item SET order_status='".$d["order_status"]."'"
. "\n, mdate='" . $timestamp . "' "
. "\n WHERE order_id=".$d['order_id'];
$dbu->query( $q );
Quelle serait l'inconvénient possible (incompatilibité MySql ?) ?

Merci d'avance