Comment concaténer deux enregistrements

sanddy -  
 sanddy -
Comment concaténer deux enregistrements en un seul svp ?

Bonjour,
J'ai une table de membres avec certains qui ont le même numéro de téléphone.
J'aimerais pouvoir ne former plus qu'un enregistrement, c'est-à dire que le champ "nom" aura pour valeur le "nom du membre" & "le nom de l'autre membre" avec le même numéro et dans le même enregistrement.
Comment faire svp ?

ex :

ma table membre contient : nom, telephone
et les enregistrements sont :
moreau 0456545434
durand 0493049404
bernard 0456545434

J'aimerais que bernard et moreau ne forme plus qu'un enregistrement et ça donnerait :
moreau & durand 0456545434

Merci pour votre aide.
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. sanddy
     
    Bonjour,

    Je vous réexplique mon problème, j'ai une table membres (je la simplifie pour que vous compreniez mieux)
    avec un numero et un nom.

    Voici ma table :

    CREATE TABLE membres (
    numero int(11) NOT NULL,
    nom varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    #
    # Contenu de la table `membres`
    #

    INSERT INTO membres VALUES (1, 'martin');
    INSERT INTO membres VALUES (2, 'maurice');
    INSERT INTO membres VALUES (3, 'dupond');
    INSERT INTO membres VALUES (1, 'dupont');
    INSERT INTO membres VALUES (2, 'marcellin');
    INSERT INTO membres VALUES (2, 'maret');
    INSERT INTO membres VALUES (4, 'popeye');

    Je souhaiterais pouvoir faire un affichage de ces enregistrements mais que lorsque le même numéro
    revient, les noms puissent se concaténer.
    Exemple ici :
    1 donnerait martin & dupont
    2 donnerait maurice, marcellin & dupont
    3 donnerait M. dupond
    4 donnerait M. popeye

    Comment faire ?

    J'arrive à faire afficher les numéros et noms, voici le fichier :

    <?PHP

    echo "<center><h1>Test</h1></center>";

    $serveur="localhost";
    $utilisateur="root";
    $motdepasse="";
    $database="mabase";
    @mysql_connect($serveur,$utilisateur,$motdepasse) or die("<CENTER><A style='color:white;background-color:red'> Désolé, problème de serveur </BODY></HTML>");

    $TableRep=mysql($database,"SELECT * FROM membres ORDER BY numero") or die("<br><CENTER><A style='color:white;background-color:red'> Désolé, la table est inaccessible </BODY></HTML>");
    $NombreEntrees=mysql_num_rows($TableRep);
    ?>
    <br><table width="93%" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td height="210">
    <p align="justify"><font color="#000000"><b><font face="Verdana, Arial" size="2">Bienvenue sur le site<br><br>
    </font></b>
    </p></td></tr></table><br>

    <?

    $i=0; /* initialisation de la variable de boucle */

    while ($i < $NombreEntrees) /* faire tant que la fin de la table n'est pas atteinte */
    {

    $numero = mysql_result($TableRep, $i, "numero");
    $nom =mysql_result($TableRep, $i, "nom");

    echo "<table><tr>";
    echo "<font size=\"1\">";
    echo "<td align=\"center\">";
    echo "\"$numero\",";
    echo "</td>";
    echo "<td>";
    echo "\"$nom\",";
    echo "</td>";
    echo "</font>";

    echo "</tr></table>";
    $i++;
    }

    echo "</body></html>";
    ?>

    Maintenant, comment faire pour vouloir faire afficher ce que je veux ???

    Actuellement, il y a :

    "1", "martin",
    "1", "dupont",
    "2", "maurice",
    "2", "marcellin",
    "2", "maret",
    "3", "dupont",
    "4", "popeye",

    Et je voudrais :

    "1", "martin & dupont",
    "2", "maurice, marcellin & maret",
    "3", "M. dupont",
    "4", "M. popeye",

    Je ne vois pas où et comment faire pour afficher le "&" avec le dernier membre du même numéro.
    Et s'ils sont plusieurs, mettre des virgules comme au numéro 3.
    Et si le membre est le seul à avoir ce numéro, j'aimerais afficher "M. " devant.

    SVP, j'ai vraiment besoin d'une aide. Merci d'avance.

    Cordialement,

    Sandy
    0