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

PHP & Base de données Discussion :

Affichage sur plusieurs lignes dans base de données [Fait] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 50
    Points
    50
    Par défaut Affichage sur plusieurs lignes dans base de données
    Bonjour, j'ai besoin d'un petit coup de main!!

    J'ai une bd qui contient plusieurs champs, cependant toute les données s'affichent sur la même ligne. Ce que je voudrait, c'est par exemple:

    Disons que j'ai un champs amis, et que j'ai 3 noms dedans.

    Quand je le fais afficher grâce à une requete mysql_fetch_array dans un tableau, au lieu de voir ceci dans la cellule de mon tableau:

    Georges,Annie,Paule

    Que je vois ceci:

    Georges
    Annie
    Paule

    J'ignore comment faire, il y a t-il un moyen de dire que quand une virgule(,) ou nimporte quel caractère , est rencontré dans la bd, saute une ligne dans la cellule du tableau.

    Alors si quelqu'un a une idée je suis prenant. J'ai pas poster de code... prc je ne savais pas koi poster... mais si quelqun crois en avoir besoin pour m'aider, juste a me le faire savoir... je posterai.. Merci!!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 393
    Points : 15 754
    Points
    15 754
    Par défaut
    pour découper la chaine de caractères tu peux utiliser la fonction http://php.net/explode

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 50
    Points
    50
    Par défaut
    ok, merci mais vu que je suis null en php... peux-tu m'expliquer un peu la marche à suivre prc d'après tous les exemples que j'ai vu, aucun ne faisait appel à des données d'une bd, alors que moi si!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RequeteAffichagetblmovies = "Select *
                                  FROM tblmovies";
     
    //Assignation de la base de donnée
    $Dbselectedprojet = mysql_select_db ('dbprojet',$connexion);
     
    //Envoi de $RequeteAffichagetblmovies au serveur de données
    $EnvoiAffichagetblmovies = mysql_query ($RequeteAffichagetblmovies);
     
    //Assignation variable affichage $RequeteAffichagetblmovies
    $RowAffichagetblmovies = mysql_num_rows ($EnvoiAffichagetblmovies);
    J'utilise mysql_num_rows pour obtenir le nombre de ligne et ensuite:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    if ($RowAffichagetblmovies >0)
        {
            //Si le nombre de lignes =1+, traite ceci,
            //Affichage Entête de $tableMovies
            $tablemovies = "<table border=\"20\" align=\"center\" bordercolor=\"#000000\">
     
                                <tr id=\"entete\">
                                    <td>Titre Francophone</td>
                                    <td>Titre Anglophone</td>
                                    <td>Genre</td>
                                    <td>Durée</td>
                                    <td>Réalisateur</td>
                                    <td>Origine</td>
                                    <td>Sortie</td>
                                    <td>Affiche</td>
                                </tr>\n";
     
                //Création Boucle FOR pour affichage données
                for ($cells = 0; $cells < $RowAffichagetblmovies; $cells++)
                    {
                        //Assignation variable pour affichage colonne
                        $colonnetblmovies = mysql_fetch_array($EnvoiAffichagetblmovies);
     
                        //Affichage colonnes avec les données
     
                            //Colonne Titre Francophone
                            $tablemovies .= "<tr><td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Titre Francophone']."</b></td>";
     
                            //Colonne Titre Anglophone
                            $tablemovies .= "<td valign=\"middle\" align=\"center\">".$colonnetblmovies['Titre Anglophone']."</td>";                     
     
                            //Colonne Genre
                            $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Genre']."</b></td>";
     
                            //Colonne Durée
                            $tablemovies .= "<td valign=\"middle\" align=\"center\">".$colonnetblmovies['Durée']."</td>";
     
                            //Colonne Réalisateur
                            $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Réalisateur']."</b></td>";
     
                            //Colonne Origine
                            $tablemovies .= "<td valign=\"middle\" align=\"center\">".$colonnetblmovies['Origine']."</td>";
     
                            //Colonne Sortie
                            $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Année de Sortie']."</b></td>";
     
                            //Colonne Images
                            $tablemovies .= "<td valign=\"middle\" align=\"center\"><img src=\"./Images\AfficheMovies/".$colonnetblmovies['Affiche']."\"></td></tr>";
                    }
     
            $tablemovies .= "</table>\n";
        }
    J'affiche mon tableau avec une boucle FOR et mysql_fetch_array. Alors,exemple: au lieu de voir $colonnetblmovies[''Origine''] comme valeur dans mon tableau, je devrais écrire sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $realisateur = explode(".",$colonnetblmovies[''Origine'']);
    Et placer $origine dans mon tableau comme valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$origine."</b></td>";
    Je l'ai essayer mais sa ne fonctionne pas. $origine = array dans mon tableau.
    Alors si tu pourrais m'aider un peu avec la synthaxe se serait apprécier!! merci...

  4. #4
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    Si tu débutes, je pense qu'il est important de bien commencer.
    L'idéale, c'est de ne pas utliser ce genre de procédé.

    Si j'ai bien compris, un film peut avoir plusieurs origine. Et Origine, c'est la liste des réalisateurs, séparrés par des ','. C'est ca ?
    Dans ce cas, tu devrais utiliser une autre table

    Par exemple :
    tblmovies
    id_film, titre_film, ...
    et tblorigine
    id_film, origine

    Si tu décides de continuer avec des valeurs séparées par des virgules dans la table tblmovies :
    à chaque fois que tu affiches une ligne, il faut d'abbord découper le champ Origine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $arr_realisateurs = explode(",",$colonnetblmovies[''Origine'']);
    Tu vas donc avoir une variable $arr_realisateur qui sera un tableau (array) avec tous les réalisateurs.

    Et tu affiches comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach($arr_realisateurs as $realisateur) {
       echo "<tr>";
       echo "<td>".$colonnetblmovies['Titre francophone']."</td>";
       echo "<td>".$colonnetblmovies['Titre Anglophone']."</td>";
       ...
       echo "<td>".$realisateur."</td>";
       ...
       echo "</tr>";
    }

    Gillou.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 50
    Points
    50
    Par défaut
    Merci pour votre aide! J'ai moi aussi trouve une solution, la voici:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    /****
                         *
                         *  Boucle For, Texte tablemovies Pass a line
                         *
                         ***/
     
                            //Assignation variable $colonnetblmovies['Origine']
                            $origine = explode(".",$colonnetblmovies['Origine']);
     
                            //Assignation variable pour count
                            $countOrigine = count($origine);
     
                            //Assignation variable $colonnetblmovies['Genre']
                            $genre = explode(".",$colonnetblmovies['Genre']);
     
                            //Assignation variable pour count
                            $countGenre = count($genre);
     
                            //Assignation variable $colonnetblmovies['Réalisateur']
                            $realisateur = explode(".",$colonnetblmovies['Réalisateur']);
     
                            //Assignation variable pour count
                            $countRealisateur = count($realisateur);                    
     
     
                        //Affichage colonnes avec les données
     
                            //Colonne Titre Francophone
                            $tablemovies .= "<tr><td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Titre Francophone']."</b></td>";
     
                            //Colonne Titre Anglophone
                            $tablemovies .= "<td valign=\"middle\" align=\"center\">".$colonnetblmovies['Titre Anglophone']."</td>";                     
     
                            //Colonne Genre
                            $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>";
     
                            //Boucle For
                            for ($ligne = 0; $ligne <$countGenre; $ligne++)
                                        {
                                            $tablemovies .= "<b>".$genre[$ligne]."</b><br>";
                                        }
     
                                //Colonne Réalisateur
                                $tablemovies .= "</td>";
     
                            //Colonne Durée
                            $tablemovies .= "<td valign=\"middle\" align=\"center\">".$colonnetblmovies['Durée']."</td>";
     
                            //Colonne Réalisateur
                                $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\">";
     
                                //Boucle FOR
                                for ($ligne = 0; $ligne <$countRealisateur; $ligne++)
                                        {
                                            $tablemovies .= "<b>".$realisateur[$ligne]."</b><br>";
                                        }
     
                                //Colonne Réalisateur
                                $tablemovies .= "</td>";
     
                            //Colonne Origine
                                $tablemovies .= "<td valign=\"middle\" align=\"center\">";
     
                                //Boucle FOR
                                for ($ligne = 0; $ligne <$countOrigine; $ligne++)
                                    {
                                        $tablemovies .= $origine[$ligne]."<br>";
                                    }
     
                                //Colonne Origine
                                $tablemovies .= "</td>";
     
                            //Colonne Sortie
                            $tablemovies .= "<td BGCOLOR=\"#969696\" valign=\"middle\" align=\"center\"><b>".$colonnetblmovies['Année de Sortie']."</b></td>";
     
                            //Colonne Images
                            $tablemovies .= "<td valign=\"middle\" align=\"center\"><img src=\"./Images\AfficheMovies/".$colonnetblmovies['Affiche']."\"></td></tr>";
                    }
     
            $tablemovies .= "</table>\n";
    Sa ressemble a ta réponse Legilou je crois!Sa fonctionne parfaitement!! Merci encore!!

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Tant mieux.
    Pense à passer le sujet en [RÉSOLU].

    Gillou

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 50
    Points
    50
    Par défaut
    Cependant, Legilou, tu me dis de créer plusieurs table, alors si je comprends bien, aussitot qu'un de mes champs de ma table principale(movies) peut contenir plusieurs valeurs, je suis mieux de créer une autre table spécialement pour ce champs là?

    Alors, dans ma table movies, j'ai 3 champs qui seraient à changé:Genre,Réalisateur et Origine. Suis-je mieux de créer immédiatement ces tables ou de continuer selon ma facon?

    Une autre question, pour pouvoir afficher tous les éléments de tous les 4 tables réunis, sa risque d'être compliquer, qqq peut me conseiller un tutoriel ou un lien sur la liaison des tables en elles??

    Merci!!

  8. #8
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    En effet, si le site n'est pas trop avancé, c'est préférable de faire bien tout de suite. Donc de faire plusieurs tables.
    Les liaisons s'appellent des jointures.

    films
    - id_film
    - titre
    - durée

    realisateurs
    - id_realisateur
    - nom
    - prénom
    - nationalité

    film_realisateur
    - id_film
    - id_realisateur

    Et la requete pour trouver les info sur un film sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT * FROM
    films, realisateurs, film_realisateur
    WHERE
    films.id_film = film_realisateur.id_film
    AND
    realisateurs.id_realisateur = film_realisateur.id_realisateur
    Gillou

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 50
    Points
    50
    Par défaut
    Ok merci Legilou!! Je vais essayer sa!! Si j'ai des problèmes ou des questions, et bien je reposterai!! Merci encore!!

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

Discussions similaires

  1. [phpMyAdmin] Changer une donnée sur plusieurs lignes dans phpMyAdmin
    Par Honvara29 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 15/03/2015, 20h58
  2. Insérer des données sur plusieurs lignes dans une seule en SQL
    Par nathantahiti dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2011, 10h47
  3. Données sur plusieurs lignes dans une cellule - CRLF
    Par guycha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2010, 19h46
  4. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 17h20
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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