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 :

Jointures et affichage [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut Jointures et affichage
    Bonjour à tous,

    Voila, essayant de créer un site "base de données" j'ai commencé (pour l'affichage) à multiplier les requêtes jusqu'à se qu'on me dise... utilise les jointures^^ et maintenant j'ai un soucis,
    ma page php récupère une variable GET et lance un requête (la variable passée est l'id pour la requète)

    ma base dispose de ceci:

    à l'inscription on enregistre le nom de la personne et une id:

    table1 : id - auteur(nom)
    puis les livres écrits par celui-ci, id de l'auteur pour savoir puis le nom du livre:

    table2 : id - livre
    et pour finir les textes simple, id de l'auteur et le texte:

    table3 : id - texte
    Voila^^ donc avant je lançais 3 requête avec l'id, pour avoir son nom, lister ses livres et ses textes... puis avec les jointures je fait la demande directement dans les 3 bases par rapport à l'id.

    jusque là tout a bien^^ j'ai tester toutes mes données sortent super bien et tout mais pour l'affichage cela pose un problème, pour sortir toute les valeurs je fait un while() seulement cela m'empêche de mettre les valeur correctement sur ma page:

    while(fetch_array) //j'écrit pas tout hein^^
    {$livre}
    va me lister tout les livres et ensuite si je fait un

    while(fetch_array)
    {$texte}
    rien ne sort... car les valeur on sauté avec le 1er while()

    et si je fait

    while(fetch_array)
    {$livre
    $texte}
    cela me sort tout n'importe comment enfin 1 livre puis 1 texte etc... (pas cool pour l'affichage)

    donc ma question: est-il possible de faire un affichage correcte avec les jointures? si oui est-il possible d'avoir une petite explication s'il vous plait^^

    (j'espère que mon roman n'est pas trop long et qu'il est compréhensible)
    Merci à tous.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu ne peux pas faire une jointure pertinente entre livre et texte puisque ces tables n'ont pas de champ pouvant les joindre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut
    ah^^ mince j'ai oublier de préciser, l'id donné à l'auteur est mise avec les livres et les texte, les champs id avec livres et texte sont en faite l'id de l'auteur... désolé j'ai oublié de préciser se point la.

  4. #4
    jnore
    Invité(e)
    Par défaut
    Bonsoir,

    Ce qu'il serait interessant c'est que tu nous donnes l'écriture de ta requête ainsi que le resultat que tu attends à l'écran.
    Avec cela, on pourra constuire.

    En tout cas, par rapport à te 2ème boucle, il est normal qu'au deuxieme while, il ne sorte aucun resultat --> Le pointeur de la ressource se trouve en fin après ta première boucle --> Il faut donc le faire revenir à zero.

    Cette opération peut différer en fonction du moteur de BDD --> Quel est-il?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    , l'id donné à l'auteur est mise avec les livres et les texte, les champs id avec livres et texte sont en faite l'id de l'auteur
    Non j'avais bien compris ca.
    Mais une jointure lie des données horizontalement :

    table 1 jointure table2
    champ 1A - champ 1B - champ 1C -------- champ 2C - champ 2Y - champ 2z

    dans ton cas les informations du texte et les informations du livre n'ont pas de rapport l'une avec l'autre
    livre "toto", ecrit en 1928 ---> auteur <--- texte 'titi' ecrit en 1942
    d'ailleurs ta requete te sortirait toutes les combinaisons texte/livre possibles pour l'auteur.

    au contraire tu peux lier l'auteur et le texte ou le livre, la ca a du sens :
    livre "toto", ecrit en 1974 -->auteur<-- M. xxxxx, né en 1928

    Si tu veux recuperer les deux sources en une seule requete, tu peux toujours faire une UNION des deux requetes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut
    ah ok je comprend^^ donc j'explique ma requête déjà

    alors on a donc:

    table1 : id - auteur
    table2 : id(auteur) - livre
    table3 : id(auteur) - texte
    ma requête fait ceci:

    $requete1 = mysql_query('SELECT
    base_livre.id,
    base_livre.livre,
    base_texte.id,
    base_texte.texte
    FROM base_livre
    LEFT JOIN base_texte
    ON base_livre.id = base_texte.id
    WHERE base_livre.id = "'.$choix.'" ');
    voila donc ceci est pour prendre les livres et texte par rapport à l'id de l'auteur, le nom de l'auteur est repris à part.

    Pour l'affichage j'aimerais avoir ceci:

    <table>
    <tr>

    <td>
    livre 1 <br>
    livre 2 <br>
    etc... <br>
    </td>

    <td>
    texte 1 <br>
    etc... <br>
    </td>

    </tr>
    </table>
    se qui me ferais donc 2 colonnes avec à gauche les livres et à droite les textes, au début j'avais une requête et un while() dans le premier <td> pour lister les livres puis dans le 2eme <td> un while() pour lister les texte, ensuite j'ai essayé de faire toujours 2 while() mais une seul requête avec jointure qui ne donne pas se que je veut et je ne peut pas faire que 1 while() car ça me mélangerais les colonnes.

    Voila, je ne connais pas la façon de remettre à zéro, je ne savais pas que ça existais, j'apprends sur le net je connais as trop mal mais pour le petits truck c'est pas facile, pour se qui est de l'union si tu a une adresse de cours ou quoi, je ne sais pas pour programmé j'utilise WAMP v1.7.2 mais sur mon fournisseur ça change peut-être, je ne sais même pas la version de WAMP donc faudra que je regarde ça de plus près, si tu a aussi un cours ou quoi sur la remise à zéro je suis preneur^^ plus j'apprends mieux c'est .

    Merci à vous.

    j'ai fais quelques recherche sur la remise à zéro et sur les UNION, au niveau de la remise à zéro cela na pas été très concluant, je suis tombé sur un seul truck, reset($ma_variable) qui ne marche pas et malgré d'autre recherche je n'est rien de différent, pour les UNION j'ai trouvé pas mal de choses mais cela sorts quand même toute la requête dans une seul variable, enfin bref je débute donc je fait peut-être des erreur et je comprend peut-être mal mais se qui m'intéresse surtout c'est d'apprendre, donc même si on m'envoie que des liens j'aimerais qu'on me guide :p
    Juste pas le lien google.... ça c'est les boulets qui veulent juste monter leurs taux de messages qui font ça mici.

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

Discussions similaires

  1. Jointure et affichage par nombre de commentaires
    Par Him dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/09/2009, 09h49
  2. [MySQL] Jointure et affichage tableau
    Par Cruelo dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/03/2009, 19h43
  3. requette avec jointure et affichage redondant
    Par gilles974 dans le forum Requêtes
    Réponses: 26
    Dernier message: 25/10/2008, 12h35
  4. Problème de jointure pour affichage "speciale"
    Par webjeux dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/06/2006, 12h23
  5. Réponses: 5
    Dernier message: 04/05/2006, 15h38

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