[php/sql] Aide enregistrement sur 2 base

Bonjour,
j'aimerais quelque infos y'a t'il une requete pour enregistrer sur 2 base a la fois

une table 1 genre :
id int(11)
pseudo varchar (80)
email varchar (100)

une 2eme table genre:
id int(11)
idpseudo int(11)
comment longtext
date int(20)

donc comment faire pour faire l'enregistrement dans la premiere et que lorsque que le pseudo publie un commentaire l'idpseudo de la deuxieme table corresponde a l'id de la table 1

Comment faire j'ai un tres grand besoin de votre aide?
Configuration: Windows Vista
Firefox 3.5.7

17 réponses

  1. salut :)
    si j'ai bien compris ton problème cette page devrait t'aider http://dev.mysql.com/doc/refman/5.0/fr/ansi-diff-foreign-keys.html
    1. si je fais :
      SELECT news.* FROM news LEFT JOIN news_comment ON news.id=news_comment.id WHERE news_comment.id
      


      est-ce juste?
      le but de ceci est d'afficher pour chaque news des commentaires propres a chacune d'elles
      j'utilise des fonction pour ceci pas de multi pages.

      un lien commentaires quand on clic, cela affiche les news avec la possibilite dans poster un nouveaux.

      en esperant que l'explication soit clair.

      j'aimerais un petit coup de main la dessus.
      Merci d'avance pour vos proposition
      1. Contributeur
        je ne sais pas si news.* ca va marcher, mais essaye et dis nous ce que ca donne :)
        1. Sa marche pas j'ai essayer plein de truc.

          Normalement sa doit faire par exemple:
          Tu clic sur news id4 (commentaire = idnews 4) -> affichage de la news id4 + affichage commentaire de la news id4 -> en bas affichage des éléments pour poster un nouveau commentaire.

          J'ai bien affichage de l'image de fond de la news, pas de commentaire associer et en bas les éléments pour poster un nouveaux commentaire.

          Que dois-je faire? je but sur cette partit, j'ai essayer différentes chose sans y arriver.
          Quelle serais, selon-vous, la meilleur façon d'afficher la news actuellement sélectionner + la liste des commentaires associer moi j'ai fais qu'un requête.
          1. je vous met le code avec les emplacement ou doit etre les requete:
            la requete si dessous a été testé et ne fonctionne pas
            $sql3 = mysql_query("SELECT * FROM news LEFT JOIN news_comment ON news.id=news_comment.id WHERE news_comment.idnews
            ")OR die("mysql error - listage de la news id"); 
            le list n'affiche rien
            list($contenu, $auteurn, $date) = mysql_fetch_array($sql3);
            	
            			// On ouvre un tableau pour l'affichage
            	echo "<table width=\"100%\" valign=\"top\">";
            	
            		//affichage du logo des news
            	echo "<tr><td><img src=\"themes/images/center1.gif\" border=\"0\" alt=\"-- News --\"/></td></tr>";
            	
            		$nbCar = strlen($contenu);
            		if($nbCar <= 150){
            			echo "<tr><td style=\"background-image:url('/themes/images/news_center0.gif');background-repeat:no-repeat; border:1px; width:690px; height:70px;\">
            			<center><font color=\"black\" style=\"font-family:Times New Roman;\"><br />".$contenu."</font></center>
            			</td></tr>
            			<tr><td style=\"background-image:url('/themes/images/center3.gif');background-repeat:no-repeat; width:690px; height:18px;\">
            			<font color=\"black\"><small><b>Publiée par : </b><i>".$auteurn."</i>
            			&nbsp;&nbsp;<b> le : </b><i>".date("d-m-Y",$date)."</i><b>
            			&nbsp;à&nbsp</b><i>".date("H:i",$date)."</i></small></font></td></tr>
            			<tr><td></td></tr>";
            		}
            		else if($nbCar <= 250){
            			echo "<tr><td style=\"background-image:url('/themes/images/news_center1.gif');background-repeat:no-repeat; border:1px; width:690px; height:100px;\">
            			<center><font color=\"black\" style=\"font-family:Times New Roman;\"><br />".$contenu."</font></center>
            			</td></tr>
            			<tr><td style=\"background-image:url('/themes/images/center3.gif');background-repeat:no-repeat; width:690px; height:18px;\">
            			<font color=\"black\"><small><b>Publiée par : </b><i>".$auteurn."</i>
            			&nbsp;&nbsp;<b> le : </b><i>".date("d-m-Y",$date)."</i><b>
            			&nbsp;à&nbsp</b><i>".date("H:i",$date)."</i></small></font></td></tr>
            			<tr><td></td></tr>";
            		}
            		else if($nbCar <= 450){
            			echo "<tr><td style=\"background-image:url('/themes/images/news_center2.gif');background-repeat:no-repeat; border:1px; width:690px; height:150px;\">
            			<center><font color=\"black\" style=\"font-family:Times New Roman;\"><br />".$contenu." </font></center>
            			</td></tr>
            			<tr><td style=\"background-image:url('/themes/images/center3.gif');background-repeat:no-repeat; width:690px; height:18px;\">
            			<font color=\"black\"><small><b>Publiée par : </b><i>".$auteurn."</i>
            			&nbsp;&nbsp;<b> le : </b><i>".date("d-m-Y",$date)."</i><b>
            			&nbsp;à&nbsp</b><i>".date("H:i",$date)."</i></small></font></td></tr>
            			<tr><td></td></tr>";
            		}
            		else{
            			echo "<tr><td style=\"background-image:url('/themes/images/news_center3.gif');background-repeat:no-repeat; border:1px; width:690px; height:200px;\">
            			<center><font color=\"black\" style=\"font-family:Times New Roman;\"><br />".$contenu." </font></center>
            			</td></tr>
            			<tr><td style=\"background-image:url('/themes/images/center3.gif');background-repeat:no-repeat; width:690px; height:18px;\">
            			<font color=\"black\"><small><b>Publiée par : </b><i>".$auteurn."</i>
            			&nbsp;&nbsp;<b> le : </b><i>".date("d-m-Y",$date)."</i><b>
            			&nbsp;à&nbsp</b><i>".date("H:i",$date)."</i></small></font></td></tr>
            			<tr><td></td></tr>";
            		}
            ici le listage des commentaires n'affcihe rien non plus	
            while(list($id, $contenu, $auteurn, $date, $id, $idnews, $comment, $pseudo, $cdate) = mysql_fetch_array($sql3)){
            	echo "<tr><td style=\"background-image:url('/themes/images/news_center1.gif');background-repeat:no-repeat; border:1px; width:690px; height:100px;\">
            		<center><font color=\"black\" style=\"font-family:Times New Roman;\"><br />".$comment." </font></center>
            		</td></tr>
            		<tr><td style=\"background-image:url('/themes/images/center3.gif');background-repeat:no-repeat; width:690px; height:18px;\">
            		<font color=\"black\"><small><b>Publiée par : </b><i>".$pseudo."</i>
            		&nbsp;&nbsp;<b> le : </b><i>".date("d-m-Y",$cdate)."</i><b>
            		&nbsp;à&nbsp</b><i>".date("H:i",$cdate)."</i></small></font></td></tr>
            		<tr><td></td></tr>";
            }
            


            Que dois-je faire pour que cela fonctionne réellement?
            Aider moi je n'y arrive plus.
            1. $sql3 = mysql_query("SELECT * FROM news LEFT JOIN news_comment ON news.id=news_comment.id WHERE news_comment.idnews
              ")OR die("mysql error - listage de la news id");


              lorsqu'il y a une condition WHERE il faut que ce soit égal comparé à qq chose

              par exemple WHERE A=B hors toi tu as mis WHERE news_comment.idnews sans rien derrieère, pas de égal

              ensuite mets une trace d'erreur plus explicite que OR die("mysql error - listage de la news id")

              OR die("Pb de requette listage:  ".mysql_error())
              1. je sais WHERE news.id = news_comment.idnews

                si news.id = 19 affichage news_comment.idnews = 19 hors news comment.id peut etre de 1 a ~ sa importe peut mais le probleme est que l'affichage ne se fais aucunement ni la partie news.id = 19 ni le commentaire associer

                Alors je suis un peut perdue la dessus je ne comprend pas trop ou est le probleme la-dedans
                1. je n'ai pas le temps d'éplucher tout ton code mais:

                  while(list($id, $contenu, $auteurn, $date, $id, $idnews, $comment, $pseudo, $cdate) = mysql_fetch_array tu as déja deux fois la même variable $id ça doit poser problème

                  ensuite opur voir si ta requette trouve qq chose juste après la ligne :

                  $sql3 = mysql_query(........

                  mets echo "Nbr enregistrements trouves=" mysql_num_rows($sql3);
                  1. j'ai utilise cette partie comme suit
                    $link = mysql_num_rows($sql4);
                    echo "nbre d'enregistrement '".$link."'";

                    et cela me donne 0

                    qu'est ce qui va pas dans mon code?
                    1. J'ai refait mon code :
                      j'ai donc la partie fonction avec ceci:
                      function index(){
                      <a href=\"index.php?accueil=1&amp;op=comment&amp;id=" . $id . "\"><i>Commentaires</i></a>
                      }
                      
                      qui fait donc appel a ceci:
                      function comment($id){
                      $sql2 = mysql_query("SELECT	id, contenu, auteurn, date FROM news") OR DIE ("Probleme de requete listage:  ".mysql_error());
                      	
                      	list($id, $contenu, $auteurn, $date) = mysql_fetch_array($sql2);
                      }
                      

                      mais cela m'affiche que la premiere news.
                      hors que id du depart est egale a 19
                      quel est la requete exact pour faire appel a l'id 19 ou 18 etc...
                      1. sur post d'avant:
                        $link = mysql_num_rows($sql4);
                        un conseil dami choisit mieux tes noms de variables $link veut dire lien pour une varaible devant contenir le nombre d'enr c'est pas le top

                        ensuite pourquoi $sql4 alors que jusque là tu utilisait $sql3 ?

                        pour répondre à ta question:

                        $sql2 = mysql_query("SELECT id, contenu, auteurn, date FROM news") OR DIE ("Probleme de requete listage: ".mysql_error());

                        list($id, $contenu, $auteurn, $date) = mysql_fetch_array($sql2);


                        normal que tu n'ai que la derniere tu ne fait pas de boucle

                        pour n'avoir que celle dont l'id est passé par le lien:

                        function comment($id){
                        $id=$_GET[id''];//recup de l'id passé par le lien
                        $sql2 = mysql_query("SELECT id, contenu, auteurn, date FROM news WHERE id='".$id."'") OR DIE ("Probleme de requete listage:  ".mysql_error());
                        	
                        	list($id, $contenu, $auteurn, $date) = mysql_fetch_array($sql2);
                        }
                        
                        
                        1. oki merci pour ton aide et tes conseils mais pour l'instant ce n'est qu'un brouillon quand ce seras au propre ce seras mieux et encore un grand merci
                          1. j'ai un autre petit souci avec le SELECT COUNT pour afficher le nombre de commentaire publier pour chaque news moi sa m'affiche le nombre de commentaire pour toutes les news

                            Comment faire?
                            1. marche po, j'ai deja essayer et sa me met 1 post sur toutes les news.