Comment insérer une boucle PHP dans du PHP

Bonjour,

Mon problème est le fait que j'aimerais ajouter une boucle while dans du code PHP. Le but c'est de réaliser une calculatrice qui calcule la taxe à ajouter à un prix conformément au montant(grille tarifaire) saisi. Sauf que les chiffres sont issu d'une base de données.

Si c'était statique, j'allais le faire mais le fait que les chiffres provient de la DB me complique la tache.
Votre aide sera hautement apprécié!

Merci d'avance!

Voici le code PHP:
  if($_POST['amount'] <= 10000){
    echo $_POST['amount'] + 500;
    } elseif ($_POST['amount'] <= 20000) {
    echo $_POST['amount'] + 2000;
  }
  
  
  
Voici la boucle à insérer:
    <?php while($price = $ps3 ->fetch()) { ?>
 //Code PHP ci-dessus
 <?php } ?>
Les chiffres doivent provenir de la base de données.

 
J'ai essayé ceci:
<?php
  if($_POST['amount'] <= 10000){
    echo $_POST['amount'] + 500;

    <?php while($price = $ps3 ->fetch()) { ?>  //Problème ici: 

  } elseif ($_POST['amount'] <= 20000) {   //Problème ici: 
    echo $_POST['amount'] + 2000;    //Problème ici: 

  }
    <?php } ?>     //Problème ici
?>

EDIT : Ajout des BALISES DE CODE

3 réponses

  1. Contributeur Ambassadeur
    bonjour, je suppose que c'est la grille tarifaire qui est enregistrée dans la base de données.
    comment est structurée la base?
    pourquoi fais-tu une boucle au lieu d'extraire immédiatement les information utiles?
    0
    1. Mon soucis est le faite qu'en statique, ma calculatrice aura le script de calcul ci-dessous:
             
       <?php 
      
              if (isset($_POST['submit'])){
                  $montant = $_POST['amount'];
                  if ($montant <= 10000) {
                      echo $montant + 500;
                  } else
                  if ($montant <= 50000) {
                      echo $montant + 1500;
                  } else
                  if ($montant <= 100000) {
                      echo $montant + 2000;
                  } else
                  if ($montant <= 200000) {
                      echo $montant + 2500;
                  } else
                  if ($montant <= 300000) {
                      echo $montant + 3000;
                  } else
                  if ($montant <= 400000) {
                      echo $montant + 4000;
                  } else
                  if ($montant <= 500000) {
                      echo $montant + 5000;
                  } else
                  if ($montant <= 600000) {
                      echo $montant + 6000;
                  } else
                  if ($montant <= 700000) {
                      echo $montant + 7000;
                  } else
                  if ($montant <= 800000) {
                      echo $montant + 8000;
                  } else
                  if ($montant <= 900000) {
                      echo $montant + 9000;
                  } else
                  if ($montant <= 1000000) {
                      echo $montant + 10000;
                  } else{
      
                  }
              }
      ?>
      


      Ce script permet de calculer les taxes à ajouter sur un montant, ces taxes varient en fonction du montant.
      Le soucis est maintenant le fait de pouvoir donner le privilège aux utilisateurs de mon application de pouvoir modifier
      les intervals et grille tarifaire sans pour autant me solliciter pour éditer le coude source.

      C'est pourquoi j'ai pensé à mettre une boucle que de répété les syntaxes ci-dessus.

      J'ai alors crée une table "grille_tarifaire" qui a l'architecture ci-desous:
      - id
      - IntervalA
      - IntervalB
      - Taxe

      Exemple:

      Record1
      - id: 1
      - IntervalA: 0
      - IntervalB: 500
      - Taxe: 50

      Record2
      - id: 2
      - IntervalA: 501
      - IntervalB: 1000
      - Taxe: 100

      etc.

      Je me trouve confronté à un bug de vouloir insérer une déclaration PHP (de la boucle) dans du PHP

      EDIT : Ajout des BALISES DE CODE

      0
      1. Contributeur Ambassadeur
        puisque tu as une table dans une base de données, tu peux obtenir la taxe sans faire de boucle, en faisant une requête telle que
        select Taxe from grille_tarifaire where montant >= IntervalA and montant <= IntervalB
        0