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 :

Récupérer le champ d'une table pour le mettre dans une autre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut Récupérer le champ d'une table pour le mettre dans une autre
    Bonjour

    Je débute en php, et j'ai fais un système de gestion de news, tout fonctionne très bien, en parallele, j'ai fait un formulaire de commentaire qui envois le tout dans une autre table

    Seulement, maintenant, j'aimerais pouvoir inscrire des commentaires concernant uniquement la news souhaité (pour l'instant, les commentaires s'affiche sur toutes les news)

    A priori, il faudrait que je puisse indiquez dans ma page commentaire, l'id de la news, et lui dire de n'afficher que les commentaires passé depuis cette derniere...

    Mais la je sèche completement...

    une idée ?

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    fais toi une table "commentaires"

    CHAMPS (selon tes besoins) :
    • id_commentaire
    • id_news
    • auteur
    • titre (si besoin)
    • message
    • date_creation


    Quand qqun écrit un commentaire, tu y met l'id_news qui correspond à la news où il se trouve

    Pour récupérer tous les commentaires d'une news :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM commentaires WHERE id_news = '".mysql_real_escape_string($_GET['id_news'])."'";

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    merci de ta réponse..

    J'ai une base pour les commentaires :

    id_com
    comment
    nom
    email
    et surtout id (qui doit etre l'id de la news)

    le seul truc, c'est que je ne vois pas comment recuperer l'id de la news en questions pour l'implementer dans la base des commentaires...

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    hmm pourtant c'est simple... quand tu permet à l'utilisateur de lire une news, tu as forcément l'ID de la news que tu passes dans l'URL, donc un lien du genre : news.php?id=42 ou encore index.php?page=news&id=68

    Il ne te reste alors qu'à récupérer ceci grâce à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_news = (int) $_GET['id'];
    Voilà, maintenant $id_news contient l'ID de ta news

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    non mes news s'affiche les unes en dessous des autres, sans page unique pour celle ci (d'ailleurs l'idée est bonne )

    donc pas d'id dans le lien, vu que y 'a pas de lien

    par contre je n'ai toujours pas compris la manip, pour recuperer l'id...

    je n'arrive pas "gongler" entre les deux tables...

    j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query('SELECT * FROM news ');
      $id_news = (int) $_GET['id'];
    dans la page qui traite le formulaire de soumission ( il faut sans doute le mettre dans le formulaire aussi non ? )

    en bref, je nage

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    le plus simple en général est d'avoir une page par news

    sinon quand tu fais ta boucle pour affichage de news, je suppose que tu crées un lien "commenter cette news", il suffit alors d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?page=commentaires&id_news=<?php echo $row['id_news']; ?>">commenter cette news</a>
    par contre j'ai pas compris ton $_GET['id_news'].... $_GET => ce sont toutes les variables passées par URL (ou par form method="get") donc si t'as rien dans ton URL tu peux pas récup cette valeur...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    le plus simple en général est d'avoir une page par news
    oui tu as raison, plus j'y pense, plus je me dis que ca doit etre plus pratique a tout point de vue..
    Je pourrais integrer au bas de la page le formulaire de commentaire, et les eventuels commentaires egalement...

    par contre, je ne vois pas comment faire..

    Mon code permet d'injecter les news dans la bd, ca ca marche, ensuite je les affiches sur une page avec ceci :

    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
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("celine");
    // On récupère les 5 dernières news
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
    while ($donnees = mysql_fetch_array($retour))
    {
    ?>
     
     
    <div class="news">
        <h3>
            <?php echo $donnees['titre']; ?>
           <em> <div class="date">le <?php echo date('d/m/Y', $donnees['timestamp']); ?></div></em>
        </h3>
     
        <p>
        <?php
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
        ?>
        </p>
     
    </div>
    <?php
    } // Fin de la boucle des news
    ?>
    comment faire pour les afficher sur une page qui leur est propre ? ( en gros le top serait d'avoir ce que j'ai en ce moment, mais avec un espece de read more qui renvoit sur la page de la news...

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <p>
        <?php
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
        ?>
        </p>
        // Ajout du lien pour ajouter un comment
        <a href="index.php?page=commentaires&id_news=<?php echo $donnees['id']; ?>">Ajouter un commentaire</a>

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    heu..

    j'ai rien compris la

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    beeen j'ai repris une partie de ton code de base et juste apres le contenu de la news (echo $contenu), j'ai ajouté le lien qui permettrait d'ajouter un commentaire...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    bon en fait j'ai modifier le truc

    J'ai mis un lien commentaires, qui affiche, la news unique et le formulaire de commentaire.

    Pour faire bien je suppose qu'il faut pouvoir récuperer l'id de la news, le mettre dans la table des commentaires, et faire un tri..

    Seulement je suis incappable de faire rentrer de la news dans la base commentaires

    le fichier de news unique avec commentaire :

    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
    mysql_connect("localhost", "", "");
    mysql_select_db("celine");
    $retour = mysql_query('SELECT * FROM news WHERE id  = '. (int)$_GET['id'] .' LIMIT 1');
     while ($donnees = mysql_fetch_array($retour))
    {
    ?>
     
      <div class="news">
        <h3>
            <?php echo $donnees['titre']; ?>
           <em> <div class="date">le <?php echo date('d/m/Y', $donnees['timestamp']); ?></div></em>
        </h3>
     
        <p>
        <?php
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
     
        ?>
        <br>
     
     
     
    	<?php
    } // Fin de la boucle des news
    ?>
     
     
     
     
      <form name="insertion" action="commentaires.php" method="POST">
      <table border="0"  cellspacing="2" cellpadding="2">
        <tr>
          <td>nom</td>
          <td><input type="text" name="nom"></td>
        </tr>
        <tr >
          <td>email</td>
          <td><input type="text" name="email"></td>
        </tr>
        <tr >
          <td>commentaires</td>
          <td><textarea type="textarea" cols="40" rows="10" name="comment"> </textarea></td>
        </tr>
        <tr >
         <input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" />
          <td colspan="2"><input type="submit" value="Ajoutez votre commentaire"></td>
        </tr>
      </table>
    </form>
    et la page de traitement des commentaires :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
        <title>Céline, Nico, Malo et ?</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel="stylesheet" href="css/template.css" type="text/css" />
    </head>
           <title>commentaire</title>
     
     
     <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "" ) ;
     
      //récupération des valeurs des champs:
      //nom:
      $nom     = $_POST["nom"] ;
      //prenom:
      $email        = $_POST["email"] ;
      //numéro de téléphone:
      $comment       = $_POST["comment"] ;
     
      $id = $_donnees["id"];
     
      //création de la requête SQL:
      $sql = "INSERT  INTO commentaires (nom, email, comment, id)
               VALUES ( '$nom', '$email', '$comment', '$id') " ;
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
      //affichage des résultats, pour savoir si l'insertion a marchée:
      if($requete)
      {
        echo("Merci pour votre commentaire") ;
     
      }
      else
      {
        echo("L'insertion à échouée") ;
      }
    ?>
         <br><A href="affcomment.php">Retour</A>
    </body>
    </html>

  12. #12
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    ton problème se situe dans le fait que tu n'as qu'un formulaire pour toutes tes news... c'est pour ça que dans un tout petit bout de code plus haut j'ai rajouter un lien "Ajouter un commentaire"... soit tu passes par une page à part avec une variable id_news, soit tu dois avoir chaque fois un formulaire dans ta boucle....

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2013, 11h27
  2. Réponses: 62
    Dernier message: 16/04/2009, 11h09
  3. Réponses: 1
    Dernier message: 31/03/2009, 23h59
  4. Réponses: 4
    Dernier message: 22/05/2007, 15h42
  5. Réponses: 1
    Dernier message: 03/08/2006, 14h08

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