Problème variable en PHP

Résolu
Bonjour,

Je n'arrive pas à solutionner un petit problème dans ce petit bout de script PHP:

// la variable $reduc permet de tester s'il y a une promo
$price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

if($special_result['specials_new_products_price'] == '' ) {
$discount_price = '' ;
$regular_price = $price;
$reduc = false;
} else {
// $discount_price = $special_result['specials_new_products_price'];
$discount_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));

// $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

$regular_price = $price;
$reduc = true;
}

Si une promo existe le prix normal est le même que le prix barré ??

Y a t'il un programmateur dans la salle ?
Configuration: Windows Vista
Internet Explorer 6.0

8 réponses

  1. Je te remercie beaucoup, je ne vois plus de BUG.

    Si tu as du temps libre, j'ai plein de petite co.....eries qui pourrait animer tes soirées.

    Encore Merci
    1. Contributeur
      Euh...
      Bah à l'occasion postes tes nouveaux problèmes sur le forum. Si ça me parle je répondrai.
      Après des fois ça m'arrive aussi d'avoir des projets pour animer mes soirées ;)

      A la prochaine,
  2. Contributeur
    Ok, je comprends mieux.

    La solution :
    ...
    } else {
    $discount_price = $price;
    
    $regular_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));­
    $reduc = true;
    } 
    ...
    


    Pourquoi?
    Parce qu'en fait, ce qui est stocké dans la base de donnée ($special_result['products_price']), c'est le prix de vente. C'est à dire le prix auquel l'article va être vendu :
    - s'il n'y a pas de réduc, c'est le prix de base
    - s'il y a une réduc, c'est le prix soldé

    Ensuite, pour obtenir le prix originel, il faut rajouter à ce prix la valeur de la démarque/

    Cordialement,
    1. En commentant la ligne, j'arrive à avoir le prix Normal et le prix Promo mais pas dans les bonnes cases :

      Case 1 = prix barré = 100€ qui devrait être prix de vente
      Case 2 = prix de Vente = 80€ qui devrait être prix promo

      J'en perds mes sens !!
      1. En commentant cette ligne je me retrouve avec les prix inversés :

        // if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

        Le prix barré devient le prix de vente

        Le prix de vente devient le prix barré

        J'ai l'impression d'avancer mais dans le désordre (amis Turfiste Bonjour)
        1. Contributeur
          ?
          Je ne comprends pas... Le prix de vente et le prix barrés sont égaux, comment vois-tu qu'ils sont inversés ?
      2. Et ci joint le code d'origine que j'ai modifié car la TVA n'était pas prise en compte sur les promo:

        $special_query = tep_db_query("SELECT specials_new_products_price , expires_date , specials_date_added FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id'] . " AND status = '1' limit 1");
        $special_result = tep_db_fetch_array($special_query);
        if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

        $product_num++;

        //calcul des prix
        // la varaible $reduc permet de tester s'il y a une promo
        $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));
        if($special_result['specials_new_products_price'] == '' ) {
        $discount_price = '' ;
        $regular_price = $price;
        $reduc = false;
        } else {
        $discount_price = $special_result['specials_new_products_price'];
        $regular_price = $price;
        $reduc = true;
        }

        Si tu veux les fichiers complets, je peux aussi mais le problème vient de ces quelques lignes (enfin je pense)
        1. Contributeur
          Et bien écoute, vu que $price n'est pas modifié lorsque tu as une réduction, et que dans tous les cas $regular_price = $price, je ne comprends pas.

          Peut-être est-ce ta fonction $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])); qui fournit un mauvais résultat...

          J'en doute, mais je ne vois que ça...

          Cordialement,
      3. Effectivement, je viens de voir que les quelques lignes au dessus vont avec ce code :

        $special_query = tep_db_query("SELECT specials_new_products_price , expires_date , specials_date_added FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id'] . " AND status = '1' limit 1");
        $special_result = tep_db_fetch_array($special_query);
        if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

        $product_num++;

        //calcul des prix
        // la variable $reduc permet de tester s'il y a une promo
        $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

        if($special_result['specials_new_products_price'] == '' ) {
        $discount_price = '' ;
        $regular_price = $price;
        $reduc = false;
        } else {
        // $discount_price = $special_result['specials_new_products_price'];
        $discount_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));

        // $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

        $regular_price = $price;
        $reduc = true;
        }

        Ps: je viens de m'enregistrer, c'est pour ça la petite différence de pseudo
        1. Contributeur
          Bonsoir,
          Oui. Si une réduc existe, le seul prix qui change est le prix discount apparemment.

          Cordialement,
          1. Sauf que là le prix Normal ce met au même prix que le prix Barré ??
          2. Contributeur
            @Chris2009Et bien, si ton prix est barré alors qu'il n'y a pas de réduction (ce qui est un peu bizarre tu m'avoueras), d'après le peu de code qu'on a, je serais enclin à répondre OUI à ta question.

            Cordialement,
          3. Bonsoir Marco la baraque et merci de te pencher sur mon problème.

            Un petit exemple pour mieux expliquer:

            Produit 100€ pas de promo

            Case 1 = prix de Vente = 100€
            Case 2 = prix barré = vide

            Produit 100€ avec -20%

            Case 1 = prix de Vente = 80€
            Case 2 = prix barré = 80€

            C'est là que ça marche pas !!
          4. Contributeur
            @Chris2009Effectivement, ça n'a pas l'air d'être bon.
            Cependant, avec le code que tu nous montres, on ne peut pas déterminer d'où vient le problème, ce n'est pas suffisant.

            Cordialement,