Bonjour à tous,
Bon ça y est, je viens de franchir le pas et me lance dans le PHP... donc encore énormément de lacunes !!!
Je suis sur le projet d'un formulaire de réservation de matériels de ski et je souhaiterai savoir comment faire pour mettre au pluriel le nom des articles qui pourraient être réservés par plusieurs personnes. Exemple : 1 casque / 2 casques...
A savoir que certains articles sont déjà au pluriel comme "skis ou chaussures", donc comment éviter que ceux-ci se retrouvent avec un double S ?

Mon code PHP (de débutant...)

<?php 
    echo '<p>Réservation traitée le '; 
    echo date_fran();
    echo ' à ';
    echo date('H:i');
    echo '</p>'
?>

<?php
  function date_fran()
  {
  $mois = array("Janvier", "Février", "Mars",
                "Avril","Mai", "Juin", 
                "Juillet", "Août","Septembre",
                "Octobre", "Novembre", "Decembre");
  $jours = array("Dimanche", "Lundi", "Mardi",
                "Mercredi", "Jeudi", "Vendredi",
                "Samedi");
  return $jours[date("w")]." ".date("j").(date("j")==1 ? "er":" ").
         $mois[date("n")-1]." ".date("Y");
  }
?>

<?php
//Adultes
    $qte_skigold = $_POST'qte_skigold'];
    $qte_skisilver = $_POST'qte_skisilver'];
    $qte_snowgold = $_POST'qte_snowgold'];
    $qte_snowsilver = $_POST'qte_snowsilver'];
    $qte_snowblades = $_POST'qte_snowblades'];
    $qte_ski_shoes_adulte = $_POST'qte_ski_shoes_adulte'];
    $qte_boots_adulte = $_POST'qte_boots_adulte'];
//Juniors
    $qte_skijunior = $_POST'qte_skijunior'];
    $qte_snowjunior = $_POST'qte_snowjunior'];
    $qte_ski_shoes_junior = $_POST'qte_ski_shoes_junior'];
    $qte_boots_junior = $_POST'qte_boots_junior'];
    $qte_casque_junior = $_POST'qte_casque_junior'];
//babys
    $qte_skibaby = $_POST'qte_skibaby'];
    $qte_ski_shoes_baby = $_POST'qte_ski_shoes_baby'];
    $qte_casque_baby = $_POST'qte_casque_baby'];
    $qte_pieps = $_POST'qte_pieps'];

    echo '<p>Réservation adulte(s) :</p>';
    echo $qte_skigold . ' Skis Gold<br/>';
    echo $qte_skisilver . ' Skis Silver<br/>';
    echo $qte_snowgold . ' Snowboard Gold<br/>';
    echo $qte_snowsilver . ' Snowboard Silver<br/>';
    echo $qte_snowblades . ' Snowblades<br/>';
    echo $qte_ski_shoes_adulte . ' Chaussures de ski<br/>';
    echo $qte_boots_adulte . ' Boots snowboard</p>';
    echo '<p>Réservation enfant(s) :</p>';
    echo $qte_skijunior . ' Skis<br/>';
    echo $qte_snowjunior . ' Snowboard<br/>';
    echo $qte_ski_shoes_junior . ' Chaussures de ski<br/>';
    echo $qte_boots_junior . ' Boots snowboard<br/>';
    echo $qte_casque_junior . ' Casque</p>';
    echo '<p>Réservation baby(s) :</p>';
    echo $qte_skibaby . ' Skis<br/>';
    echo $qte_ski_shoes_baby . ' Chaussures de ski<br/>';
    echo $qte_casque_baby . ' Casque</p>';
    echo '<p>Votre sécurité sur les pistes et hors pistes :</p>';
    echo $qte_pieps . ' Pieps + Sonde + Pelle + Sac à dos</p>';
    //quantité loué
    $qte_totale = 0;
    $qte_totale = $qte_skigold+ $qte_skisilver+ $qte_snowgold+ $qte_snowsilver+ $qte_snowblades+ $qte_ski_shoes_adulte+ $qte_boots_adulte+ 
    $qte_skijunior+ $qte_snowjunior+ $qte_ski_shoes_junior+ $qte_boots_junior+ $qte_casque_junior+ $qte_skibaby+ $qte_ski_shoes_baby+ $qte_casque_baby+ $qte_pieps;
    echo('Matériels loués : '.$qte_totale.'<br/>');

//Adultes
    define('PRIX_SKIS_GOLD', 54.00);
    define('PRIX_SKIS_SILVER', 43.20);
    define('PRIX_SNOW_GOLD', 54.00);
    define('PRIX_SNOW_SILVER', 43.20);
    define('PRIX_SNOWBLADES', 54.00);
    define('PRIX_SKI_SHOES_ADULTE', 28.80);
    define('PRIX_BOOTS_ADULTE', 28.80);
//Juniors
    define('PRIX_SKIJUNIOR', 25.20);
    define('PRIX_SNOWJUNIOR', 28.80);
    define('PRIX_SKI_SHOES_JUNIOR', 21.60);
    define('PRIX_BOOTS_JUNIOR', 21.60);
    define('PRIX_CASQUE_JUNIOR', 7.20);
//Babys
    define('PRIX_SKIBABY', 21.60);
    define('PRIX_SKI_SHOES_BABY', 18.00);
    define('PRIX_CASQUE_BABY', 7.20);
    define('PRIX_PIEPS', 15.00);
    //montant résa
    $montant_total = $qte_skigold * PRIX_SKIS_GOLD
                    + $qte_skisilver * PRIX_SKIS_SILVER
                    + $qte_snowgold * PRIX_SNOW_GOLD
                    + $qte_snowsilver * PRIX_SNOW_SILVER
                    + $qte_snowblades * PRIX_SNOWBLADES
                    + $qte_ski_shoes_adulte * PRIX_SKI_SHOES_ADULTE
                    + $qte_boots_adulte * PRIX_BOOTS_ADULTE
                    + $qte_skijunior * PRIX_SKIJUNIOR
                    + $qte_snowjunior * PRIX_SNOWJUNIOR
                    + $qte_ski_shoes_junior * PRIX_SKI_SHOES_JUNIOR
                    + $qte_boots_junior * PRIX_BOOTS_JUNIOR
                    + $qte_casque_junior * PRIX_CASQUE_JUNIOR
                    + $qte_skibaby * PRIX_SKIBABY
                    + $qte_ski_shoes_baby * PRIX_SKI_SHOES_BABY
                    + $qte_casque_baby * PRIX_CASQUE_BABY
                    + $qte_pieps * PRIX_PIEPS;
    echo 'Montant de votre réservation : ' .number_format($montant_total, 2, ',', ''). ' €<br/>';

    //réservation nulle
    if ( $qte_totale == 0): 
        echo 'Votre réservation ne contient aucun matériel !<br/>';
    exit;
    endif;
?>

Merci pour votre aide qui sera sûrement très instructive ;)

7 réponses


thybarth
Auteur
Réponse acceptée

bon j'ai fini par trouver !!! Je ne sais pas si c'est la meilleur solution, mais elle fonctionne...

$qte_casque_baby = $qte_casque_baby ;
    if ($qte_casque_baby <2) 
    {
        echo $qte_casque_baby . ' Casque<br/>';
    }
    elseif ($qte_casque_baby >1) 
    {
        echo $qte_casque_baby . ' Casques<br/>';
    }
Natà
Réponse acceptée

Il y a plusieurs manières de faire, ta solution est bonne, celle de Swup aussi quoiqu'un peu plus compliquée dans la mesure ou il faut rentrer beaucoup d'infos et à mon sens plus adaptée, comme il le dit, à l'internationalisation.

On peut donc ajouter à ces solutions :

Pour des vérification courtes et rapides, c'est ce que je préfère.

  • Ajouter un caractère à une chaine ou variable :

    $item = 'casque';
    if($qte_casque_baby>1){
    // On utilise ici l'opérateur .= qui permet donc de rajouter un s à la variable $item.
    $item .= 's';
    }
    echo $qte_casque_baby.' '.$item

Bonjour ThyBarth, Ce que je te conseille c'est de mettre tes textes dans un tableau associatif, de définir un identifiant pour chacun de tes textes et d'y inscrire pour chaque ligne le singulier et le pluriel. Exemple : [code] $messages = new array( "page" => [s: "Page", p: "Pages"], "cake" => [s: "Gâteau", p: "Gâteaux"] );[/code] Ensuite tu testes si le nombre d'éléments est strictement supérieur à 1 : si oui tu affiches le singulier, sinon le pluriel pour chaque entité. Bravo, tu as fait un pas vers l'internationalisation.

thybarth
Auteur

Merci pour vos réponses... et vos différentes méthodes.
J'ai encore un peu de mal avec les tableaux, prochaine étape de mon apprentissage PHP ;)
J'ai opté pour la solution de Natà, qui me parait plus simple et moins lourde que la mienne.

Tu arrives à manipuler les opérateurs ternaires, mais pas les tableaux ? :p
Ton ordre d'apprentissage est à revoir :p

thybarth
Auteur

Il faudrait dire ça aux auteurs du livre qui me sert de support ;)

Va leur dire alors :D
Car bon les tableaux c'est l'une des bases je trouve alors que l'opérateur ternaire moins !