Affichage de certaines valeurs

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 15:44

Bonjour,

J'ai deux interrogations. Je commence par exposer la première.

Je voudrais savoir comment je peux en fonction de mon scrit afficher seulement les données dont les quantités sont supérieures à 0 : Mon script se décompose comme suit :

j'ai une page qui affiche des données provenant d'une base : code, désignation et prix d'un article. J'ai un champ "quantité" dans lequel les utilisateurs saisissent des quantités.

Je récupère les variables sous forme de tableau et je les fais afficher avec un compteur.

Je voudrais n'afficher les codes, désignations, prix et quantités que pour les quantités supérieures à 0 car pour l'instant j'affiche tous les produits même si les quantités sont à zéro.
 /*Déclaration de variables */
    $nb=count($tabQuantite);
    $total_commande= 0;


    for($i = 0; $i < $nb; $i++) 
    {
    /*Calcul du total : quantite x prix */
    $prixTotal= $tabQuantite[$i] * $tabPrix[$i];

     /*Formatage du prix total : 0.00n*/  
    $prixTotal= number_format($prixTotal,"2",".","");

    /*Calcul du total HT. */
    $total_commande +=  $prixTotal;

    ?>
    <tr> 
    <td class="td1" width="100"><?php print $tabCode[$i]; ?></td>
    <td class="td1" width="150"><?php print $tabDesign[$i]; ?></td>
    <td class="td1" width="100"><?php print $tabQuantite[$i]; ?></td>
    <td class="td1" width="100"><?php print $tabPrix[$i]; ?></td>
    <td class="td1" width="100"><?php print $prixTotal; ?></td>
    </tr>
    <?php } ?>

    <tr>
    <td height="40" colspan="5" valign="middle"></td>
    </tr>
    <tr>
    <td colspan="3">
    <th class="th" width="100" align="center">Total H.T.:</th>
    <td class="td1" width="100" align="center">
    <?php 
    $total_commande= number_format($total_commande,"2",".","");
    print $total_commande;
    ?>
Merci pour votre aide

Eléphant du PHP | 445 Messages

11 déc. 2006, 15:53

Bonjour,

Quelque chose de ce genre là ?
<?php
 /*Déclaration de variables */
    $nb=count($tabQuantite);
    $total_commande= 0;


    for($i = 0; $i < $nb; $i++) 
    {
        if($tabQuantite[$i] > 0 && is_numeric($tabQuantite[$i]))   {  // On vérifie que la quantité entrée est supérieure à 0, et que c'est bien une donnée numérique
    /*Calcul du total : quantite x prix */
    $prixTotal= $tabQuantite[$i] * $tabPrix[$i];

     /*Formatage du prix total : 0.00n*/  
    $prixTotal= number_format($prixTotal,"2",".","");

    /*Calcul du total HT. */
    $total_commande +=  $prixTotal;

    ?>
    <tr> 
    <td class="td1" width="100"><?php print $tabCode[$i]; ?></td>
    <td class="td1" width="150"><?php print $tabDesign[$i]; ?></td>
    <td class="td1" width="100"><?php print $tabQuantite[$i]; ?></td>
    <td class="td1" width="100"><?php print $tabPrix[$i]; ?></td>
    <td class="td1" width="100"><?php print $prixTotal; ?></td>
    </tr>
    <?php
        }  // Fin du if
    }
    ?>

    <tr>
    <td height="40" colspan="5" valign="middle"></td>
    </tr>
    <tr>
    <td colspan="3">
    <th class="th" width="100" align="center">Total H.T.:</th>
    <td class="td1" width="100" align="center">
    <?php 
    $total_commande= number_format($total_commande,"2",".","");
    print $total_commande;
    ?>
LLDC
Ulti

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 16:10

Merci effectivement cela fonctionne!

Mon deuxième souci vient de la mise en forme d'un mail au format texte.
j'envoie toutes les données concernant les codes, désignations, quantités et prix dans une nouvelles page et je les fais transités par des input type=hidden. Je récupères bien les données mais je n'ai pas trouvé la sol pour les faire afficher comme je veux soit:

ex:

12 POIRE à 5.00 au lieu de 12 poire à 5.00. Je veux dons insérer plus d'espaces entre chaque valeurs.

Voici comment je transfère les données :
/*Transformation des tableaux en chaine de caractère pour les passer en input type=hidden */
    $valeurs= array();

    /*Récupération du contenu des tableaux $tabQuantite, $tabDesign, $tabPrix; */
    for($i = 0; $i < $nb; $i++) 
    { 
    $valeurs[] = " ".$tabQuantite[$i]." "; 
    $valeurs1[] = " ".$tabDesign[$i]." ";
    $valeurs2[] = " ".$tabPrix[$i]." "; 
    } 
     
    /*Transformation des tableaux en chaine de caractère */ 
    $valeurTab = implode(",", $valeurs); 
    $valeur1Tab = implode(",", $valeurs1); 
    $valeur2Tab = implode(",", $valeurs2); 
    ?>

    </td>
    </tr>
    <tr>
    <td height="50" colspan="5">&nbsp;</td>
    </tr>
    <tr>
    <td align="right" width="225" colspan="2">
    <input type="hidden" name="adressemail" value="<? print $tabCourriel; ?>">
    <input type="hidden" name="total" value="<? print $total_commande; ?>">
    <input type="hidden" name="value" value="<? print $valeurTab; ?>">
    <input type="hidden" name="value1" value="<? print $valeur1Tab; ?>">
    <input type="hidden" name="value2" value="<? print $valeur2Tab; ?>">
    <input class="input1" type="submit" value="Valider">
Voici ma fonction mail():
/*Envoi du mail récapitulatif de la commande*/
  $msg= "
  Bonjour,\n\n 
  Nous vous remercions pour votre commande dont voici le détail:
  -----------------------------------------------------------------------------------------------------------------------
  ";
  /*Récupération des quantités, désignations et prix Unitaire */
  $tabValeurs=explode(",",$tabValeurs);
  $tabValeurs1=explode(",",$tabValeurs1);
  $tabValeurs2=explode(",",$tabValeurs2);

  $valeurs= array();
  $nb=count($tabValeurs);
  for($i = 0; $i < $nb; $i++) 
  { 
  $valeurs[]= " ".$tabValeurs[$i]." ".$tabValeurs1[$i]." à ".$tabValeurs2[$i]." Euros (prix unitaire)";
  }

  $mailValeurs= implode("\n",$valeurs);
  
  $msg=$msg."
  $mailValeurs
  ";
 
  $msg=$msg."
  -----------------------------------------------------------------------------------------------------------------------
  Montant total HT:       $totalHt Euros 
   

  Bien cordialement,
  La Rotonde Editions.
  "; 
Merci

Eléphant du PHP | 445 Messages

11 déc. 2006, 16:22

Comment ça ?

Code : Tout sélectionner

12 POIRE à 5.00 au lieu de 12 poire à 5.00.
Si tu veux qu'il t'affiche ce mot en majuscule, il te suffit de regarder du côté de la fonction strtoupper();

Et penses également à bien sortir tes variables, comme ici par exemple :
<?php
  $msg=$msg."
  $mailValeurs
  "; 
?>
LLDC
Ulti

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 16:47

Mon souhait est d'avoir plus d'espaces entre chaque valeur pour avoir un affichage plus aéré et pour l'instant je n'y arrive pas. J'ai tout juste réussi à faire un saut de ligne.
Pour mon saut de ligne j'avais fait un implode
 implode("<br>",$valeurs) 
mais il m'affichait <br> au lieu de l'exécuter.

Qu'entends-tu par bien sortir mes variables?
Merci

ViPHP
ViPHP | 2144 Messages

11 déc. 2006, 16:53

Tes données proviennent d'une base de donnée ?
Si c'est la cas, pour ta première question, il serait plus judicieux de ne sortir de la base de donnée que les données ayant une quantité plus grande que 0.

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 16:59

Mes données proviennent d'une base juste pour l'affichage des caractéristiques des produits sinon bien sûr que je aurais extrait avec une requète sql que les produits dont les quantités saisies étaient supérieures à 0. Là est la particularité de ce script.