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

Langage PHP Discussion :

mettre des commentaires a ses news


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut mettre des commentaires a ses news
    Bonsoir,

    J'essaye d'afficher les commentaires de mes news.
    J'ai deux tables: news et commentaires_news.
    Elle peuvent etre relié par id(news) et id_news(commentaires_news)
    .
    Mon code ne marche pas, j'ai du mal a faire la jointure, voila mon code:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    			//VARIABLES GENERALES
    include("espace_membres/data.php");
    global $dbserver;
    global $dbdb;
    global $dbuser;
    global $dbpass;
    //CONNEXION A LA BASE DE DONNEES
    $base = @MYSQL_CONNECT ("$dbserver","$dbuser","$dbpass") or die ("<p>Erreur: impossible de communiquer avec la base de donn&eacute;es.<br>V&eacute;rifiez les donn&eacute;s du fichier <b>data.php</b>.</p>");
    mysql_select_db("dbdb",$base);
     
    // lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)  
    $sql = 'SELECT * FROM commentaires_news, news where commentaires_news.id_news = news.id ;';  
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
     
     // on compte le nombre de news stockées dans la base de données  
    $nb_news = mysql_num_rows($req);  
     
    if ($nb_news == 0) { 
        echo 'Aucune news enregistrée.';  
     }  
     else { 
        // si on a au moins une news, on l'affiche 
        while ($data = mysql_fetch_array($req)) { 
     
           // on décompose la date 
           sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec); 
     
     // on compte le nombre de news stockées dans la base de données  
    $nb_commentaires_news = mysql_num_rows($req);  
     
    if ($nb_commentaires_news == 0) { 
        echo 'Aucun commentaire enregistré.';  
     }  
     else { 
        // si on a au moins un commentaire, on l'affiche 
        while ($data = mysql_fetch_array($req)) { 
     
           // on affiche les résultats 
           echo'<span>'.htmlentities(trim($data['titre'])).':'.'<br>'.'</span>';
    	    echo'<ul>'.htmlentities(trim($data['contenu'])).'<br>'.'</ul>'; 
    		?><h2>Commentaires</h2><?php
    	echo'<span>'.htmlentities(trim($data['auteur'])).'<br>'.'</span>'; 
    	echo'<span>'.htmlentities(trim($data['date_commentaire'])).'<br>'.'</span>'; 
    	echo'<ul>'.htmlentities(trim($data['commentaire'])).'<br>'.'</ul>'; 
             }  
     }  
      }  
     }  
     ?>
    Merci
    Bonne soirée

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    merci de nous informer que ton script ne fonctionne pas.
    Comme tu ne nous sorts pas de messages d'erreur je suppose qu'il n'y en a pas.
    Vu les informations que tu donnes sur la base, ta jointure est ok (pas de message d'erreur), une tres jolie jointure naturelle, syntaxe pas standard mais plébiscité par moi-même.Je suppose que tu l'as évidement testé dans phpmyadmin.

    Résultat, je pense que tu n'as pas de données (commentaires ou news).

    Le "ou" est important. Si tu veux le transformer en "ET" il faut utiliser un LEFT JOIN.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ma_fonction("$dbserver","$dbuser","$dbpass")
    pourquoi ce luxe?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ma_fonction ($dbserver,$dbuser,$dbpass)
    tout simplement.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  4. #4
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par gene69 Voir le message
    merci de nous informer que ton script ne fonctionne pas.
    Comme tu ne nous sorts pas de messages d'erreur je suppose qu'il n'y en a pas.
    Vu les informations que tu donnes sur la base, ta jointure est ok (pas de message d'erreur), une tres jolie jointure naturelle, syntaxe pas standard mais plébiscité par moi-même.Je suppose que tu l'as évidement testé dans phpmyadmin.

    Résultat, je pense que tu n'as pas de données (commentaires ou news).

    Le "ou" est important. Si tu veux le transformer en "ET" il faut utiliser un LEFT JOIN.
    Bonsoir,

    Excusez moi d'avoir donné si peux d'information.

    En fait il renvoie qu'une news et qu'un seul commentaire.
    Alors que dans ma table il existe 2 news comportant 1 commentaire par news.
    Je suis très novice en php, et excusez moi d'écorcher les codes comme ça.

    Merci encore

    Bonne soirée
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  5. #5
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par gene69 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ma_fonction("$dbserver","$dbuser","$dbpass")
    pourquoi ce luxe?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ma_fonction ($dbserver,$dbuser,$dbpass)
    tout simplement.
    Merci, je nettoie le code.


    Bonne soirée

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bon, je vais encore faire le grincheux, mais tu n'as pas bien lu la doc de php. Tu seras un bon en php le jour ou elle te sera tellement nécessaire que tu t'endormira dessus.

    Trève de plaisanterie diagnostic différenciel

    La doc dit ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Impossible de se connecter : " . mysql_error());
    mysql_select_db("mydb");
     
    $result = mysql_query("SELECT id, name FROM mytable");
     
    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
       printf ("ID : %s  Nom : %s", $row[0], $row["name"]);
    }
     
    mysql_free_result($result);
    ?>
    ce qui est important c'est pas le "array" de mysql_fetch_array, d'ailleurs mysql_fetch_assoc est plus simple mais son exemple dans la doc est plus long.

    Ce qu'on observe c'est qu'il y a
    • 1 requete SQL,
    • 1 mysql_query,
    • 1 mysql_fetch_array (qui est répété grace au while).


    Dans ton code je trouve
    • 1 requete
    • 1 mysql_query
    • 2 mysql_fetch_array


    Faut choisir,
    1. soit tu fait une requete qui récupere un tableau avec tous les commaintes et la news répétée autant de fois que de commentaire
    2. soit tu fais deux requetes l'une pour la new, l'autre pour les commentaires éventuels.


    la tu fais un mélange des deux qui t'es préjudiciable. A mon avis le cas 2. est meilleur.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2009, 01h42
  2. mettre des commentaire sur des cellules
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2008, 16h03
  3. Mettre des commentaires dans les requêtes ?
    Par guidav dans le forum Access
    Réponses: 4
    Dernier message: 18/06/2007, 12h16
  4. Réponses: 7
    Dernier message: 15/02/2007, 13h32
  5. [XML] Comment mettre des commentaires ?
    Par fredhali2000 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/08/2006, 11h32

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