Afficher l'auteur d'une news.

Par zemiki, il y a 12 ans


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

zemiki, il y a 12 ans

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 !

antho07, il y a 12 ans

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, il y a 12 ans

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

PopTart, il y a 12 ans

Montre nous la structure de tes tables mysql

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

antho07, il y a 12 ans

Tu pourrais nous donner la structure de tes tables:

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

antho07, il y a 12 ans

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, il y a 12 ans

Voici la structure de mes tables :

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

zemiki, il y a 12 ans

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

Pewel-OutOfNutella, il y a 12 ans

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