Séparer les mots par des virgule et finir par un point

Eléphant du PHP | 372 Messages

11 juin 2016, 11:32

saltut à tous.
Voila je fait une requete afin de récupérer des noms de salle de spectacle ca marche mais j'aimerais lors de l'echo de cette requete toutes les salles soit séparer par un point virgule et que le dernier soit suivi d'un point afin de finir la phrase.
Comment faire svp, merci à vous
// On affiche les salles de spectacle selon la ville renseigné
        $lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5");
        $req = $bdd->query($lieux);		
        while($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){  
        $nom_de_salle .=  '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>, ';
        }
 echo $nom_de_salle;

Eléphant du PHP | 176 Messages

11 juin 2016, 15:07

Bonjour Blinz,

Une solution possible est d'enlever le dernier caractère de ta chaîne puis de rajouter un "."
substr : http://php.net/manual/fr/function.substr.php

Code : Tout sélectionner

// On affiche les salles de spectacle selon la ville renseigné $lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5"); $req = $bdd->query($lieux); while($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){ $nom_de_salle .= '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>, '; } $nom_de_salle = substr($nom_de_salle ,0,-1); //retourne la chaîne de caractère sans le dernier caractère $nom_de_salle .= "."; echo $nom_de_salle;
Une autre solution est de chercher la position de la dernière occurrence du caractère "," et de le remplacer par "."
strrpos : http://php.net/manual/en/function.strrpos.php

Code : Tout sélectionner

// On affiche les salles de spectacle selon la ville renseigné $lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5"); $req = $bdd->query($lieux); while($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){ $nom_de_salle .= '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>, '; } $pos = strrpos($nom_de_salle, "," ) //Retourne la position de la dernière virgule de la chaîne $nom_de_salle[$pos] = "."; echo $nom_de_salle;
Encore une autre solution est de se servir de la taille de la chaîne de caractère (On sait que le caractère que tu souhaites enlevé est forcement le dernier.)
strlen : http://php.net/manual/fr/function.strlen.php

Code : Tout sélectionner

// On affiche les salles de spectacle selon la ville renseigné $lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5"); $req = $bdd->query($lieux); while($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){ $nom_de_salle .= '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>, '; } $size= strlen($nom_de_salle ) //Retourne la taille de la chaîne de caractères $nom_de_salle[$size-1] = "."; echo $nom_de_salle;
Cordialement
Naroth

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juin 2016, 18:35

Tu peux aussi...

Mettre une virgule au bout de ta chaine que si celle-ci n'est pas vide :
$lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5");
    $req = $bdd->query($lieux);		
    $nom_de_salle = '';
    while($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){  
        if ($nom_de_salle != '')
            $nom_de_salle .= ', ';
        $nom_de_salle .=  '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>';
    }
    echo $nom_de_salle . '.';
Ou se la péter avec un implode :)
$lieux = ("SELECT DISTINCT manufacturer FROM `loisirs` WHERE id_region = '".$region_id."' LIMIT 0,5");
    $req = $bdd->query($lieux);		
    $nom_de_salle = array();
    while ($salle_spectacle = $req->fetch(PDO::FETCH_ASSOC)){  
        $nom_de_salle[] = '<em> '.ucfirst (strtolower($salle_spectacle['manufacturer'])).'</em>';
    }
    if (!empty($nom_de_salle))
       echo implode(', ', $nom_de_salle) . '.';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...