jointure mysql

zimounet

WRInaute passionné
Hello, voila j'ai besoin d'aide avec un select sur plusieurs table, tout est expliqué en commentaires


Code:
//connexion db
$num_article = $_GET['article']; //ici je récupère l'id de mon article

//La je fait un select pour récupérer les divers infos sur ma table articles
$resultat = mysql_query("SELECT cat,titre,auteur,date,heure,contenu,forum FROM articles where id='$num_article'");

//Je met l'ensemble dans des variables...
$titre = mysql_result($resultat,'.$num_article.',"titre");
$auteur = mysql_result($resultat,'.$num_article.',"auteur");
$date = mysql_result($resultat,'.$num_article.',"date");
$heure = mysql_result($resultat,'.$num_article.',"heure");
$contenu = mysql_result($resultat,'.$num_article.',"contenu");
$forum = mysql_result($resultat,'.$num_article.',"forum");
$cat = //mais je veux que cette variable contienne le nom de ma catégorie, qui est stocké dans la table cat. Et si je fait sa: $cat = mysql_result($resultat,'.$num_article.',"cat"); je n'ai évidement que l'id de la catégorie, présent dans le champs cat de ma table articles, qui correspond a l'id de ma table cat... evidement...

Comment avoir le resultat voulu avec un seul requete?
 

yBicou

Nouveau WRInaute
Déjà jamais envoyer des données provenant de $_GET, $_POST ou tout autre tableau provenant du browser directement dans une requête sql sans le vérifier ou modifier :

Code:
// faire un isset($_GET['article']) avant et réagir à ce cas
$num_article = $_GET['article']+0;

$sql = "SELECT articles.*, cat.title AS cat_title FROM articles LEFT JOIN cat ON articles.cat = cat.id WHERE articles.id='$num_article'";
$res = mysql_query( $sql );
if( $res )
{
    if( mysql_num_rows( $res ) )
    {
        $article = myslq_fetch_assoc( $res );
        echo $article['titre'],' dans la catégorie : ',$article['cat_title'];
    }
}

Bon courage !
 

zimounet

WRInaute passionné
ybicou, je n'ai juste mis que l'extrait de code qui interresse, mais merci de faire la remarque par sécurité!

Sinon, je ne veux pas lister les articles, mais juste afficher un seul article, pour ce dernier sa catégorie etc...

donc comment faire, a partir de ta requete pour ne travailler et n'afficher que sur un enregistrement de ma bdd? (je n'ai pas besoin de mettre sa dans un tableau)
 

zimounet

WRInaute passionné
Pour l'instant, j'ai fait ceci, est ce que sa va ou est-ce moins performant que de faire qu'un seul requete?

Code:
<?
//connexion Bdd
$num_article = $_GET['article']; 
if (isset($_GET['article']))
{header("Location: index.php");}
$resultat = mysql_query("SELECT cat,titre,auteur,date,heure,contenu,forum from articles where id='$num_article'");
$cat = mysql_result($resultat,'.$num_article.',"cat");

$rescat = mysql_query("SELECT cat from cat_articles where id='$cat'");

$categorie = mysql_result($rescat,'.$num_article.',"cat");
$titre = mysql_result($resultat,'.$num_article.',"titre");
$auteur = mysql_result($resultat,'.$num_article.',"auteur");
$date = mysql_result($resultat,'.$num_article.',"date");
$heure = mysql_result($resultat,'.$num_article.',"heure");
$contenu = mysql_result($resultat,'.$num_article.',"contenu");
$forum = mysql_result($resultat,'.$num_article.',"forum");
?>
 

ltressens

WRInaute occasionnel
Qqchose comme :

SELECT c.cat, a.titre, a.auteur, a.date, a.heure, a.contenu, a.forum from articles a, cat_articles c
where a.id='$num_article'
and a.cat = c.id;
 

Discussions similaires

Haut