IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Mettre un mot au pluriel si > à 1


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut Mettre un mot au pluriel si > à 1
    Bonjour à tous,

    Dans un petit compteur de visites, j'affiche bien le nombre de visiteurs mais le mot est toujours au pluriel même s'il n'y en a qu'un d'afficher.

    Au cas où, je mets la partie du code pour l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $donnees[$argument_requêtes]++;
    if( !$donnees[$ip] ) {
    $donnees[$argument_visites]++;
    $donnees[$ip] = $time;
    }
     
    /*
    * On effectue un petit report de variable
    * pour une utilisation ultérieur plus aisée.
    */
    $nb_visiteurs = $donnees[$argument_visites];
    $nb_aujourdhui = count($donnees)-2;
    $nb_requêtes = $donnees[$argument_requêtes];
     
    /*
    * On stock le tableau dans le fichier de données
    * en écrasant sa valeur précédente.
    */
    $fp = fopen($fichier,"w");
    fwrite($fp, serialize($donnees));
    fclose($fp);
     
    /*
    * On affiche les résultats du compteur.
    */
    echo $nb_visiteurs." visiteurs <br> ";
    echo $nb_aujourdhui." aujourd'hui <br> ";
    echo $nb_requêtes." pages affichées ";
    Y a-t-il un moyen de remédier à ça ?



    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo $nb_visiteurs." visiteur";
    if ($nb_visiteurs > 1)
        echo "s <br> ";
    else
        echo "<br> ";

  3. #3
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Merci jlm94, mais un prb se pose.

    Si "Visiteur<br>" est singulier s'il n'y en a qu'un seul, le code que tu m'as donné s'affichera comme suit :

    et s'il y en a 2, le "s" va s'afficher sous "1 visiteur" juste au dessus de "1 aujourd'hui".

    Comment faire ?

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Je plaisantais un peu avec ce bout de code.

    Une version plus lisible est préférable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($nb_visiteurs > 1)
        echo $nb_visiteurs." visiteurs <br> ";
    else
        echo $nb_visiteurs." visiteur <br> ";

    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo $nb_visiteurs;
    if ($nb_visiteurs > 1)
        echo " visiteurs <br> ";
    else
        echo " visiteur <br> ";
    Par contre, je vais me fâcher très fort et tout rouge si tu oublies encore le

  5. #5
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Rassure-toi, je n'ai pas oublié de mettre "RESOLU", mais comme ce n'était pas le cas !...

    Concernant ton 2ème code, j'avais essayé ça aussi, mais j'avais 2 fois "visiteur" affiché, donc, c'était pas ça.

    Je vais essayer l'autre, on verra bien.

  6. #6
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Pour l'instant, comme c'est un essai, je suis le seul visiteur.
    Il faut que j'attends demain pour voir le résultats.
    A++

  7. #7
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    Sinon tu pourrais faire comme ceci avec l'écriture ternaire :p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nb_visiteurs = 2;
    echo $nb_visiteurs,' ',$nb_visiteurs > 1 ? 'visiteurs' : 'visiteur';
    Par contre si quelqu'un pouvait m'expliquer pourquoi cela ne fonctionne pas avec l'opérateur "." pour concaténer sur ma version 5.2 de PHP, ca m'intrigue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nb_visiteurs = 1;
    echo $nb_visiteurs.' '.$nb_visiteurs > 1 ? 'visiteurs' : 'visiteur';

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Les virgules sont comme des paramètres, donc dans les priorités les virgules passent bien avant la comparaison d'infériorité.
    En revanche, la concaténation n'est pas prioritaire, il se passe donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nb_visiteurs = 1;
    echo $nb_visiteurs.' '.($nb_visiteurs > 1 ? 'visiteurs' : 'visiteur');
    Morale : mettez des parenthèses de temps en temps, surtout quand les priorités d'exécution ne sont pas claires

    [Edit] Bon ok, ce n'est pas très logique, ça devrait fonctionner dans le même sens... Mais c'est comme ça !

  9. #9
    Membre confirmé
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Par défaut
    Bonsoir,

    Je ne sais pas si cela peut aider, mais j'utilise ceci dans des pages de résultats de recherche, lorsque je veux que le mot "résultat" ne prenne un s que lorsqu'il y en a plusieurs...
    A adapter, bien sûr...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Il y a <?php print $nb_resultats;?> résultat
    <?php
     if ($nb_resultats > 1) 
    {
        print "s";
    }
    ?>
    et cela fonctionne correctement chez moi...

  10. #10
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Citation Envoyé par Yogui Voir le message
    Salut

    Les virgules sont comme des paramètres, donc dans les priorités les virgules passent bien avant la comparaison d'infériorité.
    En revanche, la concaténation n'est pas prioritaire, il se passe donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nb_visiteurs = 1;
    echo $nb_visiteurs.' '.($nb_visiteurs > 1 ? 'visiteurs' : 'visiteur');
    Morale : mettez des parenthèses de temps en temps, surtout quand les priorités d'exécution ne sont pas claires

    [Edit] Bon ok, ce n'est pas très logique, ça devrait fonctionner dans le même sens... Mais c'est comme ça !
    Yes !
    L'expression doit être évaluée avant d'être concaténée sinon seule l'opération est exécutée.

  11. #11
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Yogui Voir le message
    Morale : mettez des parenthèses de temps en temps, surtout quand les priorités d'exécution ne sont pas claires

    [Edit] Bon ok, ce n'est pas très logique, ça devrait fonctionner dans le même sens... Mais c'est comme ça !
    Morale de cette morale : évitez les expressions compliquées tant que faire se peut. Deux ou trois lignes de code en plus, c'est pas la mer à boire.

Discussions similaires

  1. [VBA-E]Mettre un mot de passe sur l'onglet Modules
    Par flyfrog dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/06/2006, 14h25
  2. [VBA] EXCEL comment mettre un mot de passe dans d’une macro?
    Par POUY64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/01/2006, 16h13
  3. Mettre un mot de passe sur un partage réseau
    Par maxonman dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/10/2005, 10h22
  4. Smbclient mettre le mot de passe dans la ligne de commande
    Par EpOnYmE187 dans le forum Réseau
    Réponses: 2
    Dernier message: 28/07/2005, 19h39
  5. [bit]Mettre un mot de 16 bits (string) en short
    Par -=Spoon=- dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 27/03/2004, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo