par
Hubert Roksor » 07 déc. 2007, 22:11
En fait, la meilleure façon d'exposer ses problèmes c'est avec un exemple court. Dans ton cas, ça aurait été
Je possède un article dont le prix est 12, il possède deux attributs dont le prix est 8 et 5. Je cherche à afficher le total, 25, mais je n'obtiens que 12.
Ceci dit, le problème c'est surtout que ton code est très difficile à lire, notamment parce que tu mets trop de choses sur la même ligne. Il y a aussi beaucoup de code redondant. Par exemple, au lieu de
if ($products_options['price_prefix'] == '+') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'] + $products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
} else if ($products_options['price_prefix'] == '-') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'] - $products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
} else if ($products_options['price_prefix'] == '') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
}
...on pourra écrire...
switch ($products_options['price_prefix'])
{
case '+':
$price = $product_info['products_price'] + $products_options['options_values_price'];
break;
case '-':
$price = $product_info['products_price'] - $products_options['options_values_price'];
break;
default:
// '' est le cas par défaut j'imagine ?
$price = $product_info['products_price'];
}
$display_price = $currencies->display_price(
$price,
tep_get_tax_rate($product_info['products_tax_class_id'])
);
$tmp_html .= '<td width="70" class="main"><b>' . $display_price .'</b></td>';
À part ça, mon conseil serait de regarder le contenu de
$products_options_array : a-t'il toutes les infos dont tu as besoin pour calculer le prix ? Si oui, le problème est dans tes calculs PHP. Si non, le problème vient de la requête.
En fait, la meilleure façon d'exposer ses problèmes c'est avec un exemple court. Dans ton cas, ça aurait été
[quote]Je possède un article dont le prix est 12, il possède deux attributs dont le prix est 8 et 5. Je cherche à afficher le total, 25, mais je n'obtiens que 12.[/quote]
Ceci dit, le problème c'est surtout que ton code est très difficile à lire, notamment parce que tu mets trop de choses sur la même ligne. Il y a aussi beaucoup de code redondant. Par exemple, au lieu de
[php]if ($products_options['price_prefix'] == '+') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'] + $products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
} else if ($products_options['price_prefix'] == '-') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'] - $products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
} else if ($products_options['price_prefix'] == '') {
$tmp_html .= '<td width="70" class="main"><b>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .'</b></td>';
}[/php]
...on pourra écrire...[php]switch ($products_options['price_prefix'])
{
case '+':
$price = $product_info['products_price'] + $products_options['options_values_price'];
break;
case '-':
$price = $product_info['products_price'] - $products_options['options_values_price'];
break;
default:
// '' est le cas par défaut j'imagine ?
$price = $product_info['products_price'];
}
$display_price = $currencies->display_price(
$price,
tep_get_tax_rate($product_info['products_tax_class_id'])
);
$tmp_html .= '<td width="70" class="main"><b>' . $display_price .'</b></td>';[/php]
À part ça, mon conseil serait de regarder le contenu de [b]$products_options_array[/b] : a-t'il toutes les infos dont tu as besoin pour calculer le prix ? Si oui, le problème est dans tes calculs PHP. Si non, le problème vient de la requête.