Page 1 sur 1

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

Posté : 11 juin 2016, 11:32
par blinz
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;

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

Posté : 11 juin 2016, 15:07
par Naroth
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;

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

Posté : 13 juin 2016, 18:35
par Ryle
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) . '.';