PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 23-07-2009 01:21:34

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Liaison entre deux table besoin d'aide

Bonsoir,

je souhaite faire plusieurs liaisons entre deux tables déja existante sur mon site "an_membre" et "an_annonce"
et faire concorder plusieurs champs comme dans le tutoriel existant sur le site.

j'ai fait un essaie par rapport au tutoriel mais je suis tombé sur des messages d'erreur et le sujet est rare ou bien je n'ai pas trouvé...

J'utilise donc un formulaire pour une inscription ou les infos doivent s'enregistrer dans "an_membre" récupérer certaine info de "an_membre" dans "an_annonce" et d'autres du formulaire dans "an_membre" aussi.

voila un petit peu du bout du code:


<?php

$db = mysql_connect('localhost', 'root', 'mysql');
mysql_select_db('liaison',$db);

// on regarde dans la table an_membre si l'url existe déjà
$sql = "SELECT idmembre FROM an_membre WHERE email='$email'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);

if($res!=0)
    {
    echo '<font color="red">Désolé, mais cette URL existe déjà dans notre base.</font>';
    }

else                  

    {
    $sql = "INSERT INTO an_membre(idmembre, email, pseudo, passe, datem, statut, cam, age, dept, ville, sexe, acceptemsn,

acceptecgu) VALUES

('','$email','$pseudo','$passe','$datem','$statut','$cam','$age','$dept','$ville','$sexe','$acceptemsn','$acceptecgu')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // je récupère certaines infos qui viennent d'être généré
    $idmembre = mysql_insert_id();
    $pseudo = mysql_insert_id();
    $datem = $date = mysql_insert_id();
    $sexe = mysql_insert_id();
    $age = mysql_insert_id();

    // ci-dessous on insère les infos dans an_annonce
    $sql = "INSERT INTO an_annonce(idannonce, message, idmembre, pseudo, nomcat, date, photo, photo2, photo3, sexe, age)

VALUES('','$message','$idmembre','$pseudo','$nomcat','$date','$photo','$photo2','$photo3','$sexe','$age')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }

mysql_close($db);
?>
 

Je suis un peu perdu... Si une personnes pouvait jetter un petit coup d'oeil ce serai vraiment gentil.
J'arrive a comprendre la logique mais par rapport au erreur je ne comprend pas ce qui cloche.

Merci d'avance, Cédric

Hors ligne

#2 23-07-2009 11:49:17

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Liaison entre deux table besoin d'aide

Bonjour,

- mysql_insert_id — Get the ID generated from the previous INSERT operation -> pour ton id utilisateur ça marche peut être mais certainement pas pour toutes les infos que tu voulais récupérer, en gros tu récupère 5 fois l'id du membre. Je te conseil le tutoriel pour interroger une base de données : http://www.phpdebutant.org/article66.php

Sinon vu que tu ne donne pas le code en entier je ne peux le deviner mais vérifie que tu attribue bien une valeur à toutes les variable que tu utilise dans tes requêtes et met nous le code d'erreur que te renvoie ton code.

Hors ligne

#3 23-07-2009 17:18:45

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Re : Liaison entre deux table besoin d'aide

Bonjour,

merci Sergnal d'avoir porté attention à mon message pour " mysql_insert_id " en effet je ne savais trop si c'était ça... comme l'exemple donné sur le site ne donne qu'un seul champ à récupérer

je te met le code au complet si tu parle bien de rajouter le code manquant du formulaire j'espére que c'est bien ça?
et aussi mes messages d'erreur (note: le formulaire ne s'affiche pas a l'écran)

Messages d'erreur:
Notice: Undefined variable: email in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 9
Notice: Undefined variable: email in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: pseudo in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: passe in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: datem in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: statut in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: cam in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: age in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: dept in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: ville in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: sexe in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: acceptemsn in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Notice: Undefined variable: acceptecgu in C:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Erreur SQL !INSERT INTO an_membre(idmembre, email, pseudo, passe, datem, statut, cam, age, dept, ville, sexe, acceptemsn, acceptecgu) VALUES('','','','','','','','','','','','','')
Incorrect integer value: '' for column 'idmembre' at row 1

Code de ma page:


<?php

// On récupère les champs (voir plus haut)

$db = mysql_connect('localhost', 'root', 'mysql');  // connexion à la base
mysql_select_db('wizzme_i4663175',$db);

// on regarde dans la table SITES_TBL si l'url existe déjà
$sql = "SELECT idmembre FROM an_membre WHERE email='$email'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);

if($res!=0)  // l'url existe déjà, on affiche un message d'erreur
    {
    echo '<font color="red">Désolé, mais cette URL existe déjà dans notre base.</font>';
    }

else                  

    {
    $sql = "INSERT INTO an_membre(idmembre, email, pseudo, passe, datem, statut, cam, age, dept, ville, sexe, acceptemsn, acceptecgu) VALUES('','$email','$pseudo','$passe','$datem','$statut','$cam','$age','$dept','$ville','$sexe','$acceptemsn','$acceptecgu')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on récupère l'idmembre qui vient d'être généré
    $idmembre = mysql_insert_id();
    $pseudo = mysql_insert_id();
    $datem = $date = mysql_insert_id();
    $sexe = mysql_insert_id();
    $age = mysql_insert_id();

    // ci-dessous on insère les infos dans an_membre
    $sql = "INSERT INTO an_membre(idannonce, message, idmembre, pseudo, nomcat, date, photo, photo2, photo3, sexe, age) VALUES('','$message','$idmembre','$pseudo','$nomcat','$date','$photo','$photo2','$photo3','$sexe','$age')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }

mysql_close($db);  // on ferme la connexion
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' n est pas valide.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est obligatoire\n'; }
  } if (errors) alert('   ATTENTION !\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>

<link href="feuille.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Style1 {color: #666666}
body {
  margin-top: 2px;
}
-->
</style>
</head>

<body>
<div align="center">
  <table border="0">
    <tr>
      <td><div align="center">
        <p> </p>
        <p> </p>
        <p><span class="Style1">
          </span><span class="sidebarHeader Style1"><font face="arial" size="4">Inscrivez-vous dès maintenant</font></span>
          <br>
          Tous les champs sont obligatoires <br>
            <br>
        </p>
      </div>
        <div align="center">
   <table width="520" border="0" bordercolor="#FE0BE6">
         <tr>
            <td width="520" height="80" align="center">

               <font color="#333333">

 <form action="<?php echo $editFormAction; ?>" method="POST" name="form1">

   <table align="center">
         <tr valign="baseline">
                              <td nowrap align="right"><font color="red">*</font>Votre E-mail:</td>
                              <td><input type="text" name="email" value="" size="32"></td>
         </tr>
         <tr valign="baseline">


         </tr>

         <tr valign="center">
                            <td nowrap align="right">Pseudo Utilisateur:</td>
                            <td><input type="text" name="pseudo" value="" size="32"></td>         </tr>


         <tr valign="baseline">
                            <td nowrap align="right">Votre mot de passe:</td>
                            <td><input type="password" name="passe" value="" size="32"></td>         </tr>


         <tr valign="baseline">
                            <td nowrap align="right">Age:</td>
                            <td><input type="text" name="age" value="" size="1"></td>         </tr>  


         <tr valign="baseline">
                            <td nowrap align="right">Vous êtes :</td>
                            <td><select type="choix" name="sexe">                          
                            <option value="Homme">Homme</option>
                            <option value="Femme">Femme</option>
                            </select>
                            </td>        </tr>

         <tr valign="baseline">
                            <td nowrap align="right">Avez-vous une cam :</td>
                            <td><select type="text" name="cam" id="cam">                          
                            <option value="oui">oui</option>
                            <option value="non">non</option>
                            </select>        
                            </td>                     </tr>
                   
                     
         <tr>
                            <td width="32%"><div align="right">Département : </div></td>
                            <td width="68%"><select name="dept" id="dept">

<?php
do {  
?>
                          <option value="<?php echo $row_Recordset2['dept']?>">
<?php echo $row_Recordset2['numdept']?>-<?php echo $row_Recordset2['dept']?></option>
                          <?php
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
  $rows = mysql_num_rows($Recordset2);
  if($rows > 0) {
      mysql_data_seek($Recordset2, 0);
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
  }
?>
                        </select></td>
                      </tr>
                     

         <tr>
         <tr>
                           <td><div align="right">Ville : </div></td>
                           <td><input name="ville" type="text" id="ville" value=""></td>           </tr>
 

         <tr valign="baseline">
                            <td nowrap align="right">Catégorie (Votre recherche) :</td>
                            <td><select type="text" name="nomcat" id="nomcat">                          
                            <option value="Amitié">Amitié</option>
                            <option value="Rencontre">Rencontre</option>
                            <option value="Rose">Rose</option>
                            <option value="Gays">Gays</option>
                            <option value="Lesbiennes">Lesbiennes</option>
                            <option value="Bisexuel">Bisexuel</option>
                            </select>        
                            </td>                     </tr>


         <tr valign="baseline">
                            <td align="right" valign="top" nowrap> </td>
                            <td><br>Entrez ici votre description et recherche, passion, physique, etc...:</td>                            </tr>
         <tr valign="baseline">
                            <td align="center" valign="top" nowrap> </td>
                            <td><textarea name="message" cols="50" rows="7"></textarea></td>         </tr>

</table>
<table>


        <tr>
                           <td height="42"><div align="center">
              <label>
              <tr>
<td align="center">Vous pouvez rajouter jusqu'a 3 photos:</td>
              </tr>
              <tr>
              <td nowrap align="right">Photo 1 :</td>
              <td><input type="file" name="photo" /></td>
              </tr>
              <tr>
              <td nowrap align="right">Photo 2 :</td>
              <td><input type="file" name="photo2" /></td>
              </tr>
              <tr>
              <td nowrap align="right">Photo 3 :</td>
              <td><input type="file" name="photo3" /></td>
              </tr>
              </label>
                           </td>
       </tr>


         <tr>
                            <td><br><input type="checkbox" name="acceptemsn" value="oui">  j'accepte d'être contacté par MSN <br></td>
                            <td><br><input type="checkbox" name="acceptecgu" value="oui">  j'ai lu et j'accepte les<a href="conditiongen.html" target="_blank"><font color="blue"> <u>conditions d'utilisation</u></font>

 </td>
   </tr>

         <tr valign="baseline">
                           <td nowrap align="right"> </td>
                           <td><br><input type="submit" onClick="MM_validateForm('email','','RisEmail','pseudo','','R','passe','','R','sexe','','R','cam','','R','age','','R','ville','','R','photo','','R','acceptemsn','','R');return document.MM_returnValue" value="Valider votre inscription"></td>
                    </tr>
                  </table>
                  <input type="hidden" name="idmembre" value="">
                  <input type="hidden" name="idannonce" value="">
                <input type="hidden" name="datem" value="<? echo $datem ?>">
                <input name="statut" type="hidden" id="statut" value="<? echo $statut ?>">
                <input type="hidden" name="MM_insert" value="form1">
                </form>
</font>
              </td>
            </tr>

          </table>
          <br>
 <?php if($row_Recordset1['validm']=="y")
 {
 print"<center>Petit rappel le webmaster valide toutes les inscriptions !</center>";
 }
 
  ?> </div></td>
    </tr>
  </table>
 
  <hr width="60%" color="#888888">

</div>

</body>
</html>
 

Merci d'avance, je suis allé sur le lien que tu ma donné mais ça ne m'aide pas vraiment en faite.
Peu étre aussi que je m'explique mal...

Dans tous les cas merci beaucoup, Cédric

Dernière modification par dobi19 (23-07-2009 17:21:21)

Hors ligne

#4 24-07-2009 17:36:47

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Liaison entre deux table besoin d'aide

Saluton,
Combien de fois encore faudra-t'il dire qu'on ne fait pas de mise en page avec des tableaux html, et que les balises <font> et autres vieilleries genre <center> sont à remiser au magasin des accessoires au profit des règles CSS des feuilles de style ?

D'autre part, lire la doc n'est pas une option, ce qui t'aurais permis de voir que mysql_insert_id() ne retourne que le dernier identifiant autoincrement généré lors de la session, et en aucun cas l'ensemble du tuplet.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 26-07-2009 21:07:17

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Liaison entre deux table besoin d'aide

Bonjour,

En ce qui concerne les erreurs retournées, elles indiquent de manière explicite le pb. Tu n'as pas défini tes variables. Par ex dans ta première requête tu utilise $email mais où indique-tu sa valeur ? Pareil pour toutes les autres variables que tu utilise dans tes requêtes.

Donc au final je te conseil de jeter un oeil aux différents tuto de phpdebutant (récupération de données en provenance d'un formulaire pour commencer) ^^

Et si tu n'y arrive pas hésite pas à demander conseil.

PS: Je rejoins Maljuna pour les balises obsolètes mais là il va te falloir un peu de temps et plus qu'un topic ^^ (alsacréation est un très bon site pour les css et la mise en forme).

Hors ligne

Pied de page des forums