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

PHP & Base de données Discussion :

Récupération valeurs dans la bdd [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut Récupération valeurs dans la bdd
    Bonjour tout le monde !

    Voilà, je vais essayer de vous soumettre mon problème de façon concise ...mais c'est pas gagné

    Je mets en place un petit système de news avec commentaires comme ce qui peut se faire sur les blogs ou autres sites d'actualité. Pour l'instant rien de bien compliqué sauf que je souhaiterais que ces commentaires soient consultés pour chaque news publiées. (exemple : News 1 = x commentaires, News 2 = x commentaires, ... ) où id.news=sid.commentaire (mais j'y vient plus loin)

    Les commentaires sont conservés dans une base de données tel que :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #
    # Structure de la table `commentaire`
    #
     
    DROP TABLE IF EXISTS commentaire;
    CREATE TABLE commentaire (
      id int(11) NOT NULL auto_increment,
      hid int(11) NOT NULL default '0',
      sid int(11) NOT NULL default '0',
      nom varchar(80) NOT NULL default '',
      spec text NOT NULL,
      email varchar(80) NOT NULL default '',
      PRIMARY KEY  (id),
      FULLTEXT KEY nom (nom,spec)
    ) TYPE=MyISAM;

    les news dans cette table :

    Code sql : 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
    #
    # Structure de la table `news`
    #
     
    DROP TABLE IF EXISTS news;
    CREATE TABLE news (
      id int(11) NOT NULL auto_increment,
      hid int(11) NOT NULL default '0',
      sid int(11) NOT NULL default '0',
      nom varchar(80) NOT NULL default '',
      spec text NOT NULL,
      photoarticle text NOT NULL,
      visu varchar(4) NOT NULL default '',
      PRIMARY KEY  (id),
      FULLTEXT KEY nom (nom,spec)
    ) TYPE=MyISAM


    Pour se faire, à chaque news un lien "commentaire" est attribué avec la redirection suivante : <a href='commentaire.php?sid=$row[0]'>commentaires</a>

    où news.id = commentaire.sid (mon problème est là mais j'y vient plus loin)

    Une fois sur la page commentaire.php, voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    $query = mysql_query("SELECT id,nom,spec,email,date FROM $commentaire WHERE sid='$sid' ORDER BY date");
    $row = mysql_fetch_row($query);
     
    while ($row = mysql_fetch_row($query)) {
     
    echo "";
    }
    ?>
    Nous voilà à l'épilogue car pour envoyer un commentaire voici ma page (ajouter_commentaire_2.php) avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
            $query = mysql_query("SELECT * FROM $commentaire WHERE nom='$name'");
    	$num = mysql_num_rows($query);
     
    $query = mysql_query("INSERT INTO $commentaire (hid,sid,nom,email,spec,date) VALUES ('$group','$subgroup','$name','$email','$spec',now())");
    ?>
    Ainsi, je récupère bien les valeurs du commentaire mais avec sid=0 à chaque commentaire.

    Comment faire pour que news.id=commentaire.sid ? et ainsi accéder à tous les commentaires pour chaque news ?

    Merci d'avance en espérant avoir été la plus claire possible..

  2. #2
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE news.id=commentaire.sid
    Mais il faut apprendre le sql pour faire de meilleures jointures.

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    De cette façon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
            $query = mysql_query("SELECT * FROM $news,$commentaire WHERE nom='$name' AND news.id=commentaire.sid");
    	$num = mysql_num_rows($query);
     
    $query = mysql_query("INSERT INTO $commentaire (hid,sid,nom,email,spec,date) VALUES ('$group','news.id','$name','$email','$spec',now())");
    ?>

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Il risque d'y avoir un conflit, dans ce type de "jointure" il doit y avoir des noms de table différent.

    P.s : J'ai eu un problème similaire il y a quelques temps, et le problème venait de cette façon de faire les "jointures".

  5. #5
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("INSERT INTO $commentaire (hid,sid,nom,email,spec,date) VALUES ('$group','news.id','$name','$email','$spec',now())")
    Si tu fais un update comme ca toute les lignes de ta table vont avoir la meme valeur n'oublie pas le WHERE et l'identifiant de la ligne a modifier.

  6. #6
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je vais peut être poster une énorme bétise, et d'avance je m'en excuse ...

    Ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("INSERT INTO $commentaire (hid,sid,nom,email,spec,date) WHERE news.id=commentaire.sid VALUES ('$group','news.id','$name','$email','$spec',now())")
    ?

    D'avance merci de votre patience...

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 12/06/2007, 11h05
  2. Réponses: 2
    Dernier message: 22/09/2006, 09h29
  3. [JSP][spring] récuperation d une valeur dans une BDD
    Par iftolotfi dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 24/06/2006, 15h39
  4. pb pour rentrer une valeur dans une bdd mysql
    Par gaetan.tranvouez dans le forum Requêtes
    Réponses: 25
    Dernier message: 02/06/2006, 21h29
  5. Probleme pour insérer une valeur dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 30/05/2006, 10h58

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