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 :

Probleme avec la Fonction Implode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Par défaut Probleme avec la Fonction Implode
    Bonjour,

    Je tente désespérément d'afficher des commentaires dans un tableau,

    J'utilise la fonction implode pour lister tous les commentaires.

    Mon problème est le suivant:

    Pour l'id 1 j'obtiens les commentaires super, ok

    mais pour l'id 2 j'obtiens encore les commentaires super, ok auquelle viennent se rajouter tous les commentaires lies a l'id 2

    et ainsi de suite jusqu'à,a la fin

    Comment faire pour ne pas ré-afficher les commentaire des précédents ID dans les nouveau message.

    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
    $sql6 = 'SELECT commentaire, FROM bpom where link_id = '.$result["id"]  ;
    $requete6 = mysql_query( $sql6, $link ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
     
    $i = 0;
    $table6 =array();
     
    while ($row6 = mysql_fetch_array($requete6)){
     
    	array_push($table6,$row6);
    }
     
    $total_table6 = count($table6);
    for ($i=0; $i < $total_table6; $i++)
    	{
     
     
     
    		$commentaire[]= $table6[$i]['commentaire'];
     
    $sumcom = implode(",", $commentaire);
     
    <table  >
     
    <tr><>Avis</td><td> :<a class="info" href=""> Lire les Avis<span> '.$sumcom.'</span></a></td></tr> 
     
    }
    Merci

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    Bonsoir Voyageurdumonde,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql6 = 'SELECT GROUP_CONCAT(commentaire SEPARATOR ",") FROM bpom where link_id = '.$result["id"].' GROUP BY link_id;' ;
    ça devrait te donner directement le résultat escompté sans avoir à refaire de traitement en php. Pour les infos concernant GROUP_CONCAT c'est ici.

    Sinon c'est que je n'ai pas compris le résultat que tu voulais obtenir et des précisions seraient les bienvenues.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Par défaut
    merci Kwizatz

    Mon SELECT comporte en réalité plusieurs valeur autre que commentaire, comme prix, ambiance, emplacement etc....

    Je ne peux donc pas utiliser GROUP_CONCAT car chaque valeur a un type differente (int, string etc...)

    Andre

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Mon problème est le suivant:

    Pour l'id 1 j'obtiens les commentaires super, ok

    mais pour l'id 2 j'obtiens encore les commentaires super, ok auquelle viennent se rajouter tous les commentaires lies a l'id 2
    De quel ID parle tu vraiment ?

    Théoriquement, si tu sélectionne tous les commentaire (donc plusieurs) dont le link_id vaut 1 (ce que fait la requête), normalement il ne devrait pas avoir autre commentaire que ceux de 1.
    Je ne vois pas pourquoi ceux du ID 2 viendraient se rajouter au ID 1.
    Si c'est le cas alors c'est mélanger 2 types de données sans rapport.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $total_table6 = count($table6);
    for ($i=0; $i < $total_table6; $i++) {
     
    $sumcom = implode(",", $table6[$i]['commentaire']);
     
    <table  >
    <tr><>Avis</td><td> :<a class="info" href=""> Lire les Avis<span> '.$sumcom.'</span></a></td></tr>
    }
    Créer un tableau $commentaire[] n'est théoriquement pas nécessaire.
    Puis c'est peut être la source du problème car si tu le conserve, il faudrait le réinitialiser juste avant la boucle for ( -> $commentaire = array() ), sinon ça va cumuler si tout ce block de code se trouve imbriqué dans une autre boucle.

    Puis le implode m'intrigue un peu, car ça suppose que les données (champ commentaire) seraient stockés avec des virgules comme séparateur.

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    J'imagine que tu boucles pour parcourir les ids des links pour lesquels tu veux les commentaires non ? Si c'est bien ça c'est juste parce que ton tableau $commentaire n'est pas réinitialisé à chaque passage (ou alors pas au bon endroit).
    Du coup une fois que tu as traité le lien d'id 1, tu rajoutes à la suite du même tableau le lien d'id 2 et ainsi de suite.
    Un petit $commentaire = array(); quelque part avant le for et ça va rouler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $commentaire = array();
    $total_table6 = count($table6);
    for ($i=0; $i < $total_table6; $i++)
    {
    	$commentaire[]= $table6[$i]['commentaire'];
    }
    $sumcom = implode(",", $commentaire);

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Par défaut
    Merci Kwizatz,

    Ca fonctionne je vais pouvoir enfin dormir......

    Andre

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

Discussions similaires

  1. Probleme avec la fonction Ontimer
    Par Djule dans le forum MFC
    Réponses: 8
    Dernier message: 27/11/2005, 17h52
  2. Probleme avec la fonction rename()
    Par TheZenZen dans le forum C
    Réponses: 6
    Dernier message: 08/10/2005, 15h59
  3. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  4. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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