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 :

requête combinée avec jointure ?


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de steve o'steen
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Points : 44
    Points
    44
    Par défaut requête combinée avec jointure ?
    bonjour, je souhaite effectuer une requéte qui me permette de récupérer des données qui se trouvent dans 2 tables différentes.

    voici mes tables :


    je dois récup les informations concernant les différents poste mais je dois aussi pouvoir dire à quelles sections ils appartiennent...

    par contre je vois pas du tout comment faire!

    j'ai commencé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_test="SELECT poste_nom, section_nom, section_desc FROM Poste_tbl, Section_tbl WHERE section_tbl.section_id=Poste_tbl.section_id";
    mais par contre je suis vraiment pas sur de moi!!

  2. #2
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Bonjour,

    c'est presque ca (en tous les cas tu es dans le bon), juste le nom de ta table a rajouter comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_test="SELECT Poste_tbl.poste_nom, section_tbl.section_nom, section_tbl.section_desc FROM Poste_tbl, Section_tbl WHERE section_tbl.section_id=Poste_tbl.section_id";

  3. #3
    Membre du Club Avatar de steve o'steen
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Points : 44
    Points
    44
    Par défaut
    merci ça a l'air de marcher..

    je dis bien "ça a l'air de marcher" car je n'ai pour l'instant aucun tuple dans la table poste.

    voici mon code complet :
    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
    <?php
    $server="localhost";
    $bdd="*****";
    $user="user";
    $mdps="*****";
    $connection=mysql_connect ($server,$user,$mdps)
    	or die (mysql_connect_error());
    $select_db=mysql_select_db($bdd,$connection);
     
    $query_test="SELECT poste_tbl.poste_nom, section_tbl.section_nom, section_tbl.section_desc FROM Poste_tbl, Section_tbl WHERE section_tbl.section_id=Poste_tbl.section_id";
     
    $result=mysql_query($query_test) or die ('Erreur SQL a la ligne :<br>'.$sql.'<br>'.__LINE__);
     
     
    if ($resultat){
     
    		while ($resultat=mysql_fetch_array($result))
    			{
    			 	echo '<p>poste_nom :' .$resultat['poste_nom'].'<br>';
    				echo 'id section :' .$resultat['section_id'].'<br>';
    				echo 'nom section :' .$resultat['section_nom']. '<br>';
    				echo 'desc section :' .$resultat['section_desc'].'<br></p>';
    			}
    		}
    else
    	{
    		echo 'il ny a aucun enregistrement';
    	}
     
     
    ?>
    du coup je teste s'il me renvoie quelque chose.
    maintenant je vais essayé de mettre des données dedans!!

  4. #4
    Membre du Club Avatar de steve o'steen
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Points : 44
    Points
    44
    Par défaut
    j'ai un souci avec ma requéte pour recuperer les données.

    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
    $query_test="SELECT poste_tbl.poste_nom, section_tbl.section_nom, section_tbl.section_desc FROM Poste_tbl, Section_tbl WHERE section_tbl.section_id=Poste_tbl.section_id";
     
    $result=mysql_query($query_test) or die ('Erreur SQL a la ligne :<br>'.$sql.'<br>'.__LINE__);
     
     
    if ($resultat){
     
    		while ($resultat=mysql_fetch_array($result))
    			{
    			 	echo '<p>poste_nom :' .$resultat['poste_nom'].'<br>';
    				echo 'id section :' .$resultat['section_id'].'<br>';
    				echo 'nom section :' .$resultat['section_nom']. '<br>';
    				echo 'desc section :' .$resultat['section_desc'].'<br></p>';
    			}
    		}
    else
    	{
    		echo 'il ny a aucun enregistrement';
    	}

    le probléme c'est que la requéte me renvoie rien alors que j'ai des données sur la base!!

    eje ne comprends pas trop le pb ma requéte a l'air correcte!??

  5. #5
    Invité
    Invité(e)
    Par défaut
    tête en lair
    ...if ($resultat){...
    ça serait pas plutot
    ...if ($result){...

  6. #6
    Membre du Club Avatar de steve o'steen
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Points : 44
    Points
    44
    Par défaut


    merci pour cette erreur même si ça ne marche pas mieux c'est déja ça en moins!!

    j'ai repris un peu le script en externalisant les fonctions de connexion comme l'a fait Pierre-Baptiste Naigeon dans son tuto sur les sites dynamiques.

    mysql.inc
    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
    <?php
    // Se connecte à la DB
    // Paramètres : nom de la base -> $name_DB
    function connexion_DB($name_DB) 
    	{
    		// Déclaration des paramètres de connexion
    		$host = "localhost";
    		$user = "user";
    		$bdd = $name_DB;
    		$passwd = "*****";
    		// Connexion au serveur
    		mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
    		mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
    	}
    //
    //-----------------------------------------------------------------------------------------------
    // Deconnection de la DB
    function close_DB() 
    	{
    		mysql_close();
    	}
    // -----------------------------------------------------------------------------------------------
     
    // Exécute une requète SQL. Si la requête ne passe pas, renvoir le message d'erreur MySQL
    // Paramètres : chaine SQL -> $strSQL
    // Renvoie : enregistrements correspondants -> $result
    function requete_SQL($strSQL) 
    	{
    		$result = mysql_query($strSQL);
    		if (!$result) 
    			{
    				$message = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    				$message .= 'SQL string : ' . $strSQL . "<br>\n";
    				$message .= "Merci d'envoyer ce message au webmaster";
    				die($message);
    			}
    		return $result;
    	}
    ?>
    et la partie du code fautive remanié et corrigé suite à l'erreur que tu as trouvé

    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
    <?php
    require ('mysql.inc');
    connexion_db('*****');
     
    $query_test="SELECT poste_tbl.poste_nom, section_tbl.section_nom, section_tbl.section_desc FROM Poste_tbl, Section_tbl WHERE section_tbl.section_id=Poste_tbl.section_id";
    requete_SQL($query_test);
    if ($result){
     
    		while ($result=mysql_fetch_array($result))
    			{
    			 	echo '<p>poste_nom :' .$result['poste_nom'].'<br>';
    				echo 'id section :' .$result['section_id'].'<br>';
    				echo 'nom section :' .$result['section_nom']. '<br>';
    				echo 'desc section :' .$result['section_desc'].'<br></p>';
    			}
    		}
    else
    	{
    		echo 'il ny a aucun enregistrement';
    	}
    ?>
    par contre rien n'a été amélioré!!

    je n'arrive pas à trouver où l'information bloque, car à priori c'est la requéte qui merde est qui doit renvoyé NULL?
    alors que normalement elle doit me renvoyer des data!!

  7. #7
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    bonjour,

    peut etre le nom de tes tables (SECTION_tbl, POSTE_tbl) qui sont en majucules sur ton schema. Mysql tient a la casse des noms de tables. Essaies comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_test="SELECT POSTE_tbl.poste_nom, SECTION_tbl.section_nom, SECTION_tbl.section_desc FROM POSTE_tbl, SECTION_tbl WHERE SECTION_tbl.section_id=POSTE_tbl.section_id";

  8. #8
    Invité
    Invité(e)
    Par défaut
    1. attention à la case qui est sensible (noms des tables)
    2. tu recuperes pas le resultat de la requete
    3. tu as 2 fois result dans ton while
    4. tu recuperes section_id alors quil ny est pas dans ton select

    <?php
    require ('mysql.inc');
    connexion_db('*****');

    $query_test="SELECT POSTE_tbl.poste_nom, SECTION_tbl.section_nom,SECTION_tbl.section_id, SECTION_tbl.section_desc
    FROM POSTE_tbl, SECTION_tbl
    WHERE SECTION_tbl.section_id=POSTE_tbl.section_id"
    ;

    $result = requete_SQL($query_test);

    if (
    $result){
    while (
    $resultat=mysql_fetch_array($result))
    {
    echo
    '<p>poste_nom :' .$resultat['poste_nom'].'<br>';
    echo
    'id section :' .$resultat['section_id'].'<br>';
    echo
    'nom section :' .$resultat['section_nom']. '<br>';
    echo
    'desc section :' .$resultat['section_desc'].'<br></p>';
    }
    }
    else
    {
    echo
    'il ny a aucun enregistrement';
    }
    ?>

Discussions similaires

  1. Requête Update avec jointure
    Par maph1 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2008, 01h10
  2. Requête SELECT avec jointure
    Par Ptit_bouchon dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/12/2007, 14h04
  3. Requête UPDATE avec jointure
    Par petburn dans le forum SQL
    Réponses: 7
    Dernier message: 30/07/2007, 15h22
  4. Requête DELETE avec jointure
    Par Roach- dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/03/2006, 16h00
  5. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 11h37

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