Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 6
    Points : 2
    Points
    2

    Par défaut Lecture dans deux tables différentes

    Bonjour,

    Je me permets de poster ici après lecture du tutoriel sur les jointures.

    Le script est prévu pour une page affichant deux div distinctes.
    Pour éviter de multiples (de)connexions à la BDD, je souhaiterais que des informations issues de deux tables s'affichent conjointement.
    Code :
    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
    <div id="colonne1">
    	<?php
    		if (empty($_GET["page"])) 
    			echo "<a href='/accueil'>Retour à l'accueil</a>";
    		else
    		{
    			$numpage = $_GET['page'] ;
    			try
    			{
    				$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    				$bdd = new PDO('mysql:host=localhost;dbname=site', 'root', '***', $pdo_options);
    				$bdd->query("SET NAMES UTF8");
    				$requete = $bdd->query("SELECT * FROM pages,rubriques WHERE id=$numpage");
    				while ($donnees = $requete->fetch()) {
    					echo $donnees['titre']; // pages
    					echo $donnees['rub_titre']; // rubriques
     
     
    	?>
    </div><!--colonne1-->
    <div id="colonne2">
    	<?php
    					echo "<h1>".$donnees['soustitre']."</h1>";
    					echo $donnees['texte'];
    				}
    			}
    			catch(Exception $e)
    			{
    				die('Erreur : '.$e->getMessage());
    			}
    			$requete->closeCursor(); // Termine le traitement de la requête
    		}
    	?>
    </div><!--colonne2-->
    Le problème est qu'à partir du moment où j'ajoute ",rubriques", le contenu de la BDD ne s'affiche plus.
    Pas même une "Erreur : SQLSTATE[42000]: Syntax" comme il pourrait y en avoir si je remplaçais la virgule par un operateur.

  2. #2
    Expert Confirmé Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    mai 2002
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2002
    Messages : 2 346
    Points : 3 231
    Points
    3 231

    Par défaut

    Bonjour,

    Dans une page, tu as plusieurs rubriques ?

    Tu n'as pas de jointure pour l'instant ... donnes nous la structure des deux tables.
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    Merci Fench

    1 id int(11) Non Aucune AUTO_INCREMENT
    2 titre char(40) utf8_general_ci Non Aucune
    3 soustitre char(250) utf8_general_ci Oui NULL
    4 texte text utf8_general_ci Oui NULL
    Pour les deux tables avec le préfixe 'rub_' pour la table 'rubriques'.

    Justement, je n'ai pas de jointure car je ne suis pas sûr que cela est nécessaire ici.

    Citation Envoyé par Fench Voir le message
    Bonjour,

    Dans une page, tu as plusieurs rubriques ?
    Pour le moment, non, mais effectivement le problème va se poser.
    Je pense qu'à ce moment, j'ajouterais une colonne 'rub_id-pages' :
    Code :
    WHERE id=rub_id-page=$numpage
    Et dans ce cas, effectivement il faudra créer un lien entre 'rub_id-pages' et le 'id' de la table 'pages'. Je vais voir ça plus attentivement.

  4. #4
    Expert Confirmé Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    mai 2002
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2002
    Messages : 2 346
    Points : 3 231
    Points
    3 231

    Par défaut

    Je t'invite à regarder le tutoriel du forum ici

    Pour ton cas, il faudrait ajouter un id de de la table pages dans ta table rubriques car sinon tu n'auras pas de jointure mais un produit cartésien entre les deux.
    Ex
    Code :
    1
    2
     
    SELECT * FROM pages,rubriques
    Qd tu auras lu le tuto, utilises le mot clé JOIN et non un where sur l'id des deux tables. Ensuite après la jointure tu ajouteras un where
    Ex
    Code :
    1
    2
    3
    4
    5
    6
     
    SELECT ...
    FROM   pages
           JOIN rubriques
           ON pages.id = rubriques.id_page
           WHERE pages.id=$numpage
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    Merci Fench

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •