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 :

[SQL] Affichage de la base dans un tableau


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut [SQL] Affichage de la base dans un tableau
    bonjour,
    voila mon 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
    <?php
    include("../../../../../include/session.php");
     
    //récupère tous les enregistrements
    $description = "";
    $keywords = "";
    $subject = "";
    $title = "";
    $fakea = "";
    $menu = false;
    $body = '';
     $liste_marque = mysql_query('SELECT * FROM imprimante');
    $marque = mysql_fetch_array($liste_marque)
     
    $sql = ('Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
    $bdd -> sendQuery($sql);
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $res = mysql_num_rows($req);
    if($res) {
        // debut du tableau
         // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
    			<tr>
           <td bgcolor="#669999"><b><u>Situation</u></b></td>
           <td bgcolor="#669999"><b><u>Nom</u></b></td>
           <td bgcolor="#669999"><b><u>Adresse</u></b></td>       
    	   <td bgcolor="#669999"><b><u>CP</u></b></td>
    	   <td bgcolor="#669999"><b><u>Ville</u></b></td>
    	   <td bgcolor="#669999"><b><u>Pays</u></b></td>
    	   <td bgcolor="#669999"><b><u>Telephone</u></b></td>
    	   <td bgcolor="#669999"><b><u>Email</u></b></td>
    	   <td bgcolor="#669999"><b><u>Description</u></b></td>
    	   <td bgcolor=""669999"><b><u>Date de devis</u></b></td>
          </tr></br>';
     
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($req)) {
    	$body .= '<tr>
    		<td bgcolor="#CCCCCC">'.$row["situation"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["nom"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["adresse"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["cp"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["ville"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["pays"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["tel"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["email"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["description"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["date"].'</td>
     		</tr></br>';
        }
     
    	$body .= '</table></center></br>';
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($req);
     
    echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
     
    include("../../../../../include/base.php");
    ?>
    je voulais afficher un tableau de mes cartouches coresspondant a la serie.mais cela m ecrit:


    Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\EasyPHP 2.0b1\www\suncopy\catalogue\brother\jet d'encre\dcp\110c\index.php on line 15

    voici mon mcd pour que cela soit plus clair

    imprimante(id_imprimante,nom_imprimante)
    cartouche(ref_cartouche,designation_cartouche,...)
    accepter(id_cartouche,id_imprimante)

    je sais je n ai pas eu le temps de changer les nom des champs, mais ce le select qui ne fonctionne pas.

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Salut déjà est-ce que c'est une erreur de copie/colle mais tu n'as pas de ; sur ta ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $marque = mysql_fetch_array($liste_marque)
    Ensuite est ce que tu as essayé d'afficher ta variable $marque['ref_cartouche'] pour voir si elle contenait une valeur ou non?

    Dinde

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    merci de me repondre voila c est vrai je n avais pas vus le ; qui manquer mais maintenant il me donne ceci j ai changer de plus le debut avec select * marque par select cartouche:
    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
    <?php
    include("../../../../../include/session.php");
     
    //récupère tous les enregistrements
    $description = "";
    $keywords = "";
    $subject = "";
    $title = "";
    $fakea = "";
    $menu = false;
    $body = '';
     $liste_marque = mysql_query('SELECT * FROM cartouche');
    $marque = mysql_fetch_array($liste_marque);
     
    $sql = ('Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
     
    $bdd -> sendQuery($sql);
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $res = mysql_num_rows($req);
    if($res) {
        // debut du tableau
         // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
    			<tr>
           <td bgcolor="#669999"><b><u>Situation</u></b></td>
           <td bgcolor="#669999"><b><u>Nom</u></b></td>
           <td bgcolor="#669999"><b><u>Adresse</u></b></td>       
    	   <td bgcolor="#669999"><b><u>CP</u></b></td>
    	   <td bgcolor="#669999"><b><u>Ville</u></b></td>
    	   <td bgcolor="#669999"><b><u>Pays</u></b></td>
    	   <td bgcolor="#669999"><b><u>Telephone</u></b></td>
    	   <td bgcolor="#669999"><b><u>Email</u></b></td>
    	   <td bgcolor="#669999"><b><u>Description</u></b></td>
    	   <td bgcolor=""669999"><b><u>Date de devis</u></b></td>
          </tr></br>';
     
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($req)) {
    	$body .= '<tr>
    		<td bgcolor="#CCCCCC">'.$row["situation"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["nom"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["adresse"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["cp"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["ville"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["pays"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["tel"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["email"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["description"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["date"].'</td>
     		</tr></br>';
        }
     
    	$body .= '</table></center></br>';
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($req);
     
    echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
     
    include("../../../../../include/base.php");
    ?>
    et l erreur afficher est celui la:
    Erreur SQL !Select * FROM cartouche INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = 1
    Champ 'imprimante.id_imprimante' inconnu dans on clause

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    bonjour,une erreur que j avais faite oublier dans from imprimante.

    voila mon nouveau code maintenant le tableau apparait bien mais il affiche toute la table des cartouche plutôt que de sélectionner que les cartouche corresponde a la marque.

    Merci de votre aide.
    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
    <?php
    include("../../../../../include/session.php");
     
    //récupère tous les enregistrements
    $description = "";
    $keywords = "";
    $subject = "";
    $title = "";
    $fakea = "";
    $menu = false;
    $body = '';
     $liste_marque = mysql_query('SELECT * FROM cartouche');
    $marque = mysql_fetch_array($liste_marque);
     
    $sql = ('Select * FROM cartouche,imprimante INNER JOIN accepter ON imprimante.id_imprimante = accepter.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche']);
     
    $bdd -> sendQuery($sql);
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $res = mysql_num_rows($req);
    if($res) {
        // debut du tableau
         // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    	$body = '<h3>Liste des Devis</h3><center><table bgcolor="#FFFFFF"></br>
    			<tr>
    
    	   <td bgcolor="#669999"><b><u>Designation</u></b></td>
    	   <td bgcolor="#669999"><b><u>couleur</u></b></td>
    	   <td bgcolor="#669999"><b><u>contenance</u></b></td>
    	   <td bgcolor="#669999"><b><u>quantite en stock</u></b></td>
    	   <td bgcolor=""669999"><b><u>prix ttc</u></b></td>
          </tr></br>';
     
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($req)) {
    	$body .= '<tr>
    		<td bgcolor="#CCCCCC">'.$row["designation_cartouche"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["couleur_cartouche"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["contenance"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["qte_cartouche"].'</td>
    		<td bgcolor="#CCCCCC">'.$row["prixTTC_cartouche"].'</td>
    
     		</tr></br>';
        }
     
    	$body .= '</table></center></br>';
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($req);
     
    echo '<center><a href="index.php?page=Admin" title="Admin">Admin</a>';
     
    include("../../../../../include/base.php");
    ?>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Pour moi ta as un prob dans ta requête SQL, tu pourrais pas la tester direct dans phpmyadmin pour voire le résultat. Si le résultat est bon le prob est dans le code mais je suis septique.

    Je pense que c'est un prob SQL. Fais le test et dit nous quoi.

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    je suis complètement perdu aidez moi j ai tout essayer que quelque un m aide svp je ne vois pas d ou cela peut venir voici ma base de donne si voulez tester.

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Il te manquerai pas une jointure dans ta requete? (tu as 3 tables et une seule jointure il y a un souci - dans la théorie c'est une jointure par table si la clé est unique)
    (Pis mes des alias a ta table tu t'embeteras moins pour les requetes)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $sql = ('Select * FROM cartouche c, imprimante i INNER JOIN accepter a ON i.id_imprimante = a.id_imprimante WHERE accepter.id_cartouche = '.$marque['ref_cartouche'].' AND  c.refcartouche=a.id_cartouche);
    Dinde

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Je veux bien regarder à ton prob mais le plus simple est que tu fasses le test avec phpmyadmin.

    Tu vas dans ta base de données, tu sélectionne ta table, au dessus tu as un onglet SQL, tu cliques dessus et tu as une fenêtre exécuter une ou des requêtes sur la base X.

    Tu recopie ta requête et tu l'exécute et tu nous donnes le résultat on verra déjà plus clair.

    Ici à mon boulot je peux pas mettre ta base, je suis pas le boss désolé, sinon je regarderait un coup chez moi.

    Mais fait au moins le test svp.

  9. #9
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    j ai tester et il me retourne toujours 1 pour l'id de la cartouche pour tous le marque ce qui faux car certains sont a 2 mais rien a faire j ai tout dit que c etait a 2 il continue de me donner tout la table en disant qu'elle fait partie 1 quelqu'un pourrai regarder ma base svp

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Salut Kate,

    Effectivement ta requête ne retourne pas d'erreur, mais à mon sens elle n'est pas correcte ou alors je ne comprend pas ce à quoi tu veux arriver.

    J'ai pu installer ta base de données, et effectivement elle est sommaire sans vouloir de choquer. Surtout pour une application qui à un but professionnel.

    Explique concrètement ce que tu veux faire en étant le plus précis possible et puis on verra ce que l'on peut faire pour t'aider.

    Attention cela ne veut pas dire que je vais faire le boulot. T'aider ok

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Salut Kate,

    As tu essayé ma solution en rajoutant une jointure dans ta requete?
    Et si tu l'as fait que ça n'a pas marché est ce que ça a quand même changé quelque chose?

    Dinde

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Salut Dinde,

    je suis du même avis je pense qu'il y a un problème de jointure, mais pour ca j'aimerais comprendre parfaitement ce qu'elle veut. Car je comprend pas trop.

    Sinon je suis sur que la solution est dans la requête sql, donc rien de bien grave.

  13. #13
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    voila je vais expliquer les grande lignes je vais créer un page qui affiche la liste des cartouches qui correspond a la marque sélectionner dans la page précédentes oui j ai essayer mais voila il continue il me met ce message:

    Erreur SQL !Select * FROM cartouche c, imprimante i INNER JOIN accepter a ON i.id_imprimante = a.id_imprimante WHERE accepter.ref_cartouche = 1 AND c.ref_cartouche=a.ref_cartouche
    Champ 'accepter.ref_cartouche' inconnu dans where clause

    je precise donc mes tables:
    accepter(ref_cartouche,id_imprimante)
    cartouche(ref_cartouche,...)
    imprimante(id_imprimante,..)

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Ok, je vois un peu plus clair . Ta table accepter joue le rôle de table lien entre ta table cartouches et imprimantes ?

    Si oui pourquoi faire une requête sur tes trois tables.

  15. #15
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    ce n est pas moi qui est proposer ça, mais je pense que a présent vous avez compris mais moi de mon cote je n arrive toujours pas obtenir ce que je veux.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Ok, je termine de régler un prob sur une table pour mon boulot et je look ton prob et te propose une solution.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    La base de données est quand même un peu louche pour faire les recherches, mais bon, j'ai essayé de faire une requête, qui n'est pas de haut niveau vu que je bosse pas dans les BDD, mais j'ai tenté ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * FROM cartouche c WHERE ref_cartouche IN (SELECT id_cartouche FROM accepter WHERE id_imprimante=1)
    Qui renvoie toute les cartouches qui sont accepté par l'imprimante d'id 1, peut être que ça peut aider ...

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Bonsoir,


    Je viens de refaire les tests comme jonathan3357 et j'arrive au même résultat.
    Donc pour moi, tu peux franchement travailler sur base de cette requête.

    Mais je pense que tu ne dois pas perdre de vue que la structure de ta table est légère pour une application pro.

    Test et tiens nous au courant, on pourra encore t'aider.

    Bonne soirée

  19. #19
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    merci encore,mais pourquoi pensez vous qu'elle est legere?je ne pense pas avoir oublier quelques chose.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Bonjour Kate,


    je suis pas spécialiste en base de données mais tout doucement je prend de l'expérience dans le domaine, moi je suis analyste programmeur. Mais bon passons, quand je développe une BD de ce genre j'essaye de faire en sorte d'éviter les redondances.

    Cela prend vite bcp de place, de plus je regarde attentivement si mes tables on un rapport entre elle.

    Un exemple concret dans ton cas :

    Tu as les tables suivantes imprimantes, marques, séries, cartouches. Toutes ces tables sont indépendantes les unes des autres.

    Donc si tu veux faire une recherche à partir de la marque tu vas devoirs faire une requête sql complexe et qui va demander bcp de ressource.

    Par contre si dans ta table par exemple imprimantes, tu as un champs id_marque, id_série, id_cartouche, ...
    Tu peux à partir d'une recherche sur une table ici imprimante avoir toutes les infos sur cette imprimante. Tu le fais déjà mais ppas avec suffisamment de paramètres, hors tu pourrais le faire sans porb.

    Je sais pas si j'ai été claire, il ne faut surtout pas te décourager. On a tous fait ces erreurs, le tout est dans tenir compte pour ne plus les faires.

    Voilà si tu veux d'autre info je suis là.

Discussions similaires

  1. [SQL] affichage de tables différentes dans un même tableau
    Par brindherbe86 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/03/2008, 12h33
  2. affichage de mes donnees dans un tableau
    Par dedel53 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/05/2007, 18h22
  3. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07
  4. Réponses: 2
    Dernier message: 28/11/2006, 11h20
  5. Réponses: 4
    Dernier message: 11/07/2006, 22h58

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