Bonsoir, Je suis depuis peu Grafikart et merci a vous de vos nombreuses réponses. En développant mon système de news, j'ai voulu ajouter un un champ qui permet d'afficher l'auteur de la news. Dans le code que j'ai fait, l'article s'affiche bien mais avec le nom de chanque membre inscrit sur le site. En gros j'ai le titre, l'article, la date, et dans le champ auteur, j'ai tout les membres inscrits dans la base de donnée qui s'affiche alors que je veut uniquement celui qui a créer a a nouvelle. Index.php [code]<?php //Requete SQL
connect();
$sql = "SELECT titre,article,datepub,login FROM news INNER JOIN membre ON(id_membre) WHERE categorie='news' ORDER BY datepub DESC";
$req = mysql_query($sql) or die ('Erreur de sql <br>'.$sql.'
'.mysql_error()); //on affiche les nouvelles dans la boucle while ($data = mysql_fetch_assoc($req)) { echo "<header><h2>{$data["titre"]}</h2></header>"; echo "

{$data["article"]}

"; echo "

{$data["datepub"]}

"; echo "

Publié par : {$data["login"]}

"; } ?>[/code] J'ai ensuite cherché un autre piste, en essayant de récupérer l'id de l'auteur lors de la création de l'article en l'ajoutant dans une colonne dans ma table "news". Lorsque je fait ma requête SQL pour faire correspondre l'id membre avec l'id auteur, je recupere un tableau vide Voici le code. [code]<?php require_once"../controle/class.php";

    if(auth::isAdmin()){
        extract($_SESSION['tabAuth']);
        connect();

        $sql = "SELECT id_membre FROM membre WHERE login='$login'";
        $req = mysql_query($sql) or die (mysql_error());
        $data= mysql_fetch_assoc($req);
        echo $data;

    }
    else
    {
        header('Location:art_index.php');
    }

?>/code] Le traitement d'ajout dans la base de donnée se fait dans une autre page. Merci d'avances

9 réponses


Pewel-OutOfNutella
Réponse acceptée

Salut !

Voilà ta requête :

SELECT titre, article, datepub, login
FROM news
INNER JOIN membre ON ( membre.id_membre = news.id_membre ) 
WHERE categorie = 'news'
ORDER BY datepub DESC 
LIMIT 0 , 30

Il te manquait quelque chose dans le ON ^^

Edit : pour ton autre problème de session :

Ajouter une variable de session :

$_SESSION'monNomDeVariable'] = $maVariable;

Obtenir une variable de session :

$maVariable = $_SESSION'monNomDeVariable'];

Bien sur, n'oublie pas de mettre un

session_start()

avant

Bonsoir,

$sql = "SELECT titre,article,datepub,login FROM news INNER JOIN membre ON(id_membre)

Faut lui préciser comment faire la liaison (je suis pas spécialiste des liaisons sql mais je pense que le soucis est là)

Avec

ON(membre.id_membre = news.login)

ça donne quoi ?
Si j'ai bien compris ta structure de base de données...

bien cordialement

Antho

zemiki
Auteur

Merci de ta reponse rapide

J'ai eu un message d'erreur il faut que je vérifie ma structure je pense
Erreur de sql
SELECT titre,article,datepub,login FROM news INNER JOIN membre ON(membre.id_membre = news.login) WHERE categorie='news' ORDER BY datepub DESC
Unknown column 'news.login' in 'on clause'

J'ai corrigé la structure mais maintenant j'ai plus aucun article qui s'affiche

Montre nous la structure de tes tables mysql

EDIT: On est en 2013 utilise PDO et pas les fonctions mysql_

Tu pourrais nous donner la structure de tes tables:

le login de news est bien le id_membre de membre??

A mon avis il vaut mieux stocker dans news non pas le login du membre qui a écris mais son id .
donc table news : champ : membre_id

et ON(news.membre_id = membre.id)

zemiki
Auteur

Voici la structure de mes tables :

NEWS : id, titre, article, datepub, categorie, id_membre
MEMBRE : id_membre, login, email, password, rang

zemiki
Auteur

La nuit portant conseil, j'ai vérifié mes tables. J'ai remarqué que les news ne retournent rien car le champ contenant l'auteur de la nouvelle est vide.
J'ai ajouté dans phpmyadmin manuellement un id d'un membre existant et l'article est apparu. Je pense que maintenant le problème ce joue lors de la creation de l'article, je doit trouver un moyen d'y ajouter l'id du membre qui a créer cette nouvelle.

Maintenant je n'arrive pas a ajouter l'id du membre dans le tableau session. J'ai réussi a l'extraire de la BDD mais je ne sais pas comment je doit faire pour l'ajouter dans $_SESSION
Merci d'avance

zemiki
Auteur

Merci a tous pour votre aide, Pewel j'allais utiliser ta solution avec la variable session, j'ai testé j'ai réussi et je viens de voir que tu as publier la solution a laquelle je viens de pense. Ce fut un bon casse tete pour ma part, Voila une bonne chose faite aujourd’hui !