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 :

Concaténation des variables d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Concaténation des variables d'un tableau
    Bonjour,

    Je suis en train d'écrire une fonction.

    Dans la table "langues" j'ai les valeurs suivantes :
    a français
    b anglais
    c allemand
    d russe

    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
    <?php
    //Paramètre de la fonction : $id_langue et le nom de la table
    require_once 'connectbdd.php';
    $id_langue = ('acd');
    $table = ('langues');
    $langue = donne($id_langue,$table);
     
    function donne($id_langue,$table) {   
    $lg_chaine = strlen($id_langue);
    $tab = array();
    for($i = 0 ; $i < $lg_chaine ; $i++) {
    $resultat = mysql_query('SELECT nom_langue FROM ' . $table . ' WHERE langue_id = "' . ($id_langue[$i]) . '"')
    or die('Erreur de sélection dans la base de données '.mysql_error());
    $row =  mysql_fetch_array($resultat);
    $tab[$i] = $row[0];
    }
     
    // La concaténation devra se faire ici et à la fin renvoyer une chaine de caractères $langues
     
    return ($langues);
     
    }
    ?>
    J'obtiens donc un tableau $tab dans lequel il y a les valeurs suivantes :

    $tab[0] = français
    $tab[1] = allemand
    $tab[2] = russe

    J'aimerais concaténer ces 3 valeurs pour obtenir la chaîne de caractères suivante avec des virgules et l'adverbe "et" pour le dernier:

    "français, allemand et russe"

    Le tableau étant de longueur variable (je peux par exemple avoir en paramètre $id_langue = ('abcd')), je ne sais pas comment m'y prendre...

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je me lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo implode(", ", array_slice($tab,0,count($tab) - 1)) . ' et ' . $tab[count($tab) - 1] ;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Sabotage ?
    Merci sabotage

    J'ai modifié l'énoncé de ma question car il n'était pas assez explicite (le tableau est de longueur variable)

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La méthode proposée fonctionne quelque soit la taille du tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Plus c'est bon !
    Ok j'essaie !

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Une autre solution qui semble être légèrement plus rapide à l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $separateur = ', ';
      $remplacement = ' et ';
      $chaine = implode($separateur, $tab);
      $chaine = substr_replace($chaine, $remplacement, strrpos($chaine, $separateur), strlen($separateur));

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Mais non ce n'est pas un saboteur !
    Ta solution marche nickel saboteur !

    Quel talent...! Je n'aurais jamais trouvé cela seul...

    Merci encore

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut La solution
    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
    <?php
    //Paramètre de la fonction : $id_langue et le nom de la table
    require_once 'connectbdd.php';
    $id_langue = ('acd');
    $table = ('langues');
    $langue = donne($id_langue,$table);
     
    function donne($id_langue,$table) {   
    $lg_chaine = strlen($id_langue);
    $tab = array();
    for($i = 0 ; $i < $lg_chaine ; $i++) {
    $resultat = mysql_query('SELECT nom_langue FROM ' . $table . ' WHERE langue_id = "' . ($id_langue[$i]) . '"')
    or die('Erreur de sélection dans la base de données '.mysql_error());
    $row =  mysql_fetch_array($resultat);
    $tab[$i] = $row[0];
    }
     
    $lg_tab = count ($tab);
     
    // Concaténation des variables du tableau
    // Exemple : avec id_langue = ('acd') $langues = 'français, allemand et russe'
    if ($lg_tab == 1) {$langues = $tab[0];} // si id_langue ne contient qu'une seule lettre
     
    else {$langues = (implode(", ", array_slice($tab,0,count($tab) - 1)) . ' et ' . $tab[count($tab) - 1]);}
     
    return $langues;
    }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténation des données d'un tableau
    Par SybVicious dans le forum Débuter
    Réponses: 13
    Dernier message: 25/07/2007, 15h05
  2. Problème de syntaxe pour concaténer des variables
    Par renaud26 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/09/2006, 09h44
  3. Réponses: 4
    Dernier message: 15/08/2006, 11h28
  4. Réponses: 4
    Dernier message: 17/04/2006, 20h10
  5. Réponses: 1
    Dernier message: 30/12/2005, 10h57

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