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 :

remplir tableau à partir de la base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut remplir tableau à partir de la base de données
    Salut
    je veux remplir un tableau dons les lignes sont les entrées de la tables et les colonnes sont certains champs de la table de la base de donnée.
    Je ne suis pas arriver à concevoir la structure générale de ce tableau, j'ai pris comme exemple le tutoriel:
    http://j-reaux.developpez.com/tutori...-tableau-html/
    J'ai voulu faire affichage "en ligne" avec BD mais la j'ai pas bien compris l'exemple qu'on a donné, en plus j'ai trouvé du mal à convertir les fonctions de mysql vers PDO (parce que je suis débutante et j'ai appris à programmer seulement avec PDO) , du fait j'ai fais un code avec pleins de fautes (d'ailleurs il n'a pas fonctionné)
    Pouvez vous m'aidez à le corriger? merci
    le code doit afficher :
    tableau avec 3 colonnes(images/titre/annéeSortie) et les lignes sont aux nombre des entrées de la table cd_film
    le code:
    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
    81
    82
    83
    <?php
    try
    {
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$bdd = new PDO('mysql:host=localhost;dbname=projet', 'root', '', $pdo_options);
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Votre mediatheque en ligne</title>
    </head>
     
    <body>
    <?php
    // $NbrCol : le nombre de colonnes
    // $NbrLigne : calcul automatique a la FIN
    // --------------------------------
    $NbrCol = 3;
     
    $query = 'SELECT titre, annéeSortie, genre, image FROM cd_film';
    $result = $bdd->query('SELECT titre, annéeSortie FROM cd_film');
    // --------------------------------
    // nombre de cellules a remplir
    $NbreData = $bdd->query('SELECT COUNT(*) FROM cd_film');
    // --------------------------------
    // affichage
    $NbrLigne = 0;
    if ($NbreData != 0) {
    	$j = 1;
    ?>
    	<table border="1">
    	<tbody>
    <?php
    	while ($val = $pdo->query($query)->fetch()) 
    	{
    		if ($j%$NbrCol == 1) {
    			$NbrLigne++;
    			$fintr = 0;
    ?>		<tr>
    <?php		}
    ?>
    			<td>
    <?php			// -------------------------
    			// DONNEES A AFFICHER dans la cellule
    			echo $val['image'];
     
    ?>			</td>
                <td>
    <?php
                echo $val['titre'];
    			echo '<br/>';
    			echo '<i>'.$val['GENRE'].'</i>';
    ?> 
                </td>
                <td>
                <?php
                echo $val['annéeSortie'];
    			?>
                </td>
     
    <?php		if ($j%$NbrCol == 0) {
    			$fintr = 1;
    ?>		</tr>
    <?php		}
    		$j++;
    	} // fin while
    	// fermeture derniere balise /tr
    	if ($fintr!=1) {
    ?>		</tr>
    <?php	} ?>
    	</tbody>
    	</table>
    <?php
    } else {
    	echo 'pas de données à afficher';
    }
    ?>
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Il serait plus simple de passer par un foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <?php
    echo("<table id=monid nom=monnom>");
    echo("<TR>");
    //$entete contient le résultat de ta requête.
    foreach ($entete as $titre)	
    {
    	echo("<TH class=\"maclasse\">".$titre."</TH>");
    }
    $retour.="</TR>";
    ?>
    Pour parcourir une liste ou un tableau c'est plus simple car tu n'a pas a tenir compte de la longueur du tableau, sa se gère en autonome.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  3. #3
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    Bonjour
    s'il vous plait, est ce que cette requete retourne bien le nombre de cellules à remplir?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NbreData = $bdd->query('SELECT COUNT(*) FROM cd_film');
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    ta requête te retournera le nombre d’entrée dans ta table.

    Mais comme dit un foreach serait plus simple car tu auras pas a connaitre la longueur du résultat de la requête.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  5. #5
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    merci
    Quelle partie de mon code devrai-je changer? ou le tout devra être changé en utilisant foreach?
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Citation Envoyé par janyoura Voir le message
    merci
    Quelle partie de mon code devrai-je changer? ou le tout devra être changé en utilisant foreach?
    En fait au lieu de determiner la longueur de ta reponse, de stoquer le resultat "compté" dans une variable et de t'en servir pour delimitert l'action de ton while tu remplace le ou les while par des foreach .
    Ensuite tu pourra supprimer ce qui correspond a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NbreData = $bdd->query('SELECT COUNT(*) FROM cd_film');
    et voila Theoriquement
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  7. #7
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    mon but c'est d'afficher un tableau qui ressemble à celui dans la pièce jointe, à partir des données de la base de donnée
    Images attachées Images attachées  
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  8. #8
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    est ce que cette requete retourne bien le nombre de cellules à remplir?
    Oui, mais il n'est pas utile de faire 2 requêtes SQL pour ça, comme 1 pour récupérer les lignes et la 2ème pour obtenir le nombre.

    Fais juste 1 requêtes, celle qui récupère les les lignes (les films).
    Ensuite, suffit de procéder en 2 temps.
    1/ On stock toutes les lignes dans un tableau.
    Après, uffit de compter combien d'éléments contient le tableau pour obtenir le nombre total de film.
    fonction : count()
    2/ On boucle sur le tableau obtenu précédemment

    Exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $bdd->query('SELECT titre, annéeSortie FROM cd_film');
    $films = $result->fetchAll(PDO::FETCH_ASSOC);
    $total_films = count($films);
    Ceci dit, normalement rowCount() retourne le nombre total du résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $bdd->query('SELECT titre, annéeSortie FROM cd_film');
    $films = $result->fetchAll(PDO::FETCH_ASSOC);
    $total_films = $result->rowCount();
    A voir.

    Ensuite, suffit de boucler avec un foreach() :
    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
    <table>
    <tr>
        <td>images</td>
        <td>titre</td>
        <td>annéeSortie</td>
    </tr>
    <?php
    $cpt = 0;
    foreach ($films as $film) {
    ?>
    <tr>
        <td><?php echo $film['images']; ?></td>
        <td><?php echo $film['titre']; ?></td>
        <td><?php echo $film['annéeSortie']; ?></td>
    </tr>
    <?php
        $cpt++;
    }
    ?>
    </table>
    Il y a 3 colonnes (images, titre, annéeSortie)
    Il pas vraiment nécessaire de connaitre le nombre total, à moins de vouloir l'afficher avant la fin de la boucle.
    J'y ai rajouté un compteur ($cpt) dans le cas où ce serait nécessaire.


    Au passage, je ne sais pas si l'erreur est juste ici, mais pour ceci : annéeSortie
    Il vaut mieux ne jamais utiliser de caractères spéciaux (genre àéùè, espace, etc ...) pour des noms de Bdd, tables, champs, etc ... et même pour les répertoires (dossiers), fichiers, etc ...
    C'est se mettre des bâtons dans les roues.
    -> annee_sortie serait tout aussi bien (le _ est tout à fait valable)
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Personnellement le _ est d'ailleur le seul caractère non alpha numérique que j’utilise dans mes BdD.

    Ps je parle de caractere non alpha numérique et non de caractères spéciaux car je crois me rappeler que l'underscore n'est justement pas considéré comme caractère spécial.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  10. #10
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    Merci à vous deux EIN-LESER et RunCodePhp je prendrai en compte ce que vous m'avez dis puis je posterai le code résultat.
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

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

Discussions similaires

  1. [MySQL] Créer un tableau à partir d'une base de données
    Par barakobama95 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 30/09/2013, 16h58
  2. Remplir JTable à partir de la base de données
    Par L'aigle de Carthage dans le forum Composants
    Réponses: 3
    Dernier message: 11/11/2009, 10h02
  3. [MySQL] créer un tableau à partir d'une base de donnée
    Par bastien dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/01/2009, 15h03
  4. [VS2008] Remplir ListView à partir d'une base de données
    Par paonus dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/07/2008, 20h32

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