PHP|Débutant :: Forums

Advertisement

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

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

#1 01-06-2011 09:11:58

craya
Membre
Inscription : 01-06-2011
Messages : 6

formulaire de saisie en récuperant données d'autres tables

Bonjour,

j'ai fais un formulaire de saisie.
voici mon problème. J'arrive à inserer des nouvelles données dans ma table image mais dès que je rentre une données déja existante dans une table par exemple un auteur, un lieu ou un mot déja connu. On me répond qu'il existe, je voudrais qu'il reprenne l'identifiant dans la table image comment faire?

voici mes tables image(idimage, titre, support..., idauteur,idlieu,idmot)
et par exemple ma table mot (idmot, mot).

Je comprends mon problème: je lui dis que si le mot existe on affiche un message d'erreur(c'est ce qu'il fait) et je peux inserer un nouveau mot sans problème. mais comment recuperer l'identifiant d'un mot qui existe déja?

Merci beaucoup!

voici mon code:

<?php


 // On commence par récupérer les champs
if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";

if(isset($_POST['support']))      $support=$_POST['support'];
else      $support="";

if(isset($_POST['photographe']))      $photographe=$_POST['photographe'];
else      $photographe="";

if(isset($_POST['date']))      $date=$_POST['date'];
else      $date="";

if(isset($_POST['provenance']))      $provenance=$_POST['provenance'];
else      $provenance="";

if(isset($_POST['droitimage']))      $droitimage=$_POST['droitimage'];
else      $droitimage="";

if(isset($_POST['description']))      $description=$_POST['description'];
else      $description="";

if(isset($_POST['localisation']))      $localisation=$_POST['localisation'];
else      $localisation="";


if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['periode']))      $periode=$_POST['periode'];
else      $periode="";

if(!empty($_POST['lieu']))      $lieu=$_POST['lieu'];
else      $lieu="";

if(isset($_POST['mot']))      $mot=$_POST['mot'];
else      $mot="";
if(isset($_POST['idate']))      $idate=$_POST['idate'];
else      $idate="";

if(isset($_POST['idauteur']))      $idauteur=$_POST['idauteur'];
else      $idauteur="";

if(isset($_POST['idlieu']))      $idlieu=$_POST['idlieu'];
else      $idlieu="";

if(isset($_POST['idmot']))      $idmot=$_POST['idmot'];
else      $idmot="";

if(isset($_POST['idimage']))      $idimage=$_POST['idimage'];
else      $idimage="";
 
 require_once("connect.php");
  $bd=mysql_connect(SERVEUR,NOM,PASSE);
  mysql_select_db(BASE,$bd);
 
  // on regarde dans la table auteur si le nom existe déjà
 
 
$sql = "SELECT idauteur FROM auteur WHERE nom='$nom'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);

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

else  // Le nom n'existe pas, on insère d'abord les infos dans auteur
    {
    $sql = "INSERT INTO auteur (idauteur, nom) VALUES('','$nom')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on récupère l'idauteur qui vient d'être généré
    $idauteur = mysql_insert_id();
   
 
    }
   
     
      // on regarde dans la table dates si la periode existe déjà
 
 
$sql = "SELECT idate FROM dates WHERE periode='$periode'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);

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

else  // La periode n'existe pas, on insère d'abord les infos dans dates
    {
    $sql = "INSERT INTO dates (idate, periode) VALUES('','$periode')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
   
    // on récupère l'idate qui vient d'être généré
    $idate = mysql_insert_id();
   
   
    }

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

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

else  // Le lieu n'existe pas, on insère d'abord les infos dans lieux
    {
    $sql = "INSERT INTO lieux (idlieu, lieu) VALUES('','$lieu')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on récupère l'idlieu qui vient d'être généré
    $idlieu = mysql_insert_id();
   
 
    }
     
   
     
   
    // on regarde dans la table motcles si le mot existe déjà
   
      $sql = "SELECT idmot FROM motcles WHERE mot='$mot'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);

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

else  // Le mot n'existe pas, on insère d'abord les infos dans motcles
    {
    $sql = "INSERT INTO motcles (idmot, mot) VALUES('','$mot')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on récupère l'idmot qui vient d'être généré
    $idmot = mysql_insert_id();
   
 
  $sql = "INSERT INTO image (idimage, titre, support, photographe, date, provenance, droitimage, description, localisation, idauteur, idate, idlieu, idmot) VALUES('$idimage','$titre','$support','$photographe','$date','$provenance','$droitimage','$description','$localisation','$idauteur','$idate','$idlieu','$idmot')";
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }

   

mysql_close($bd);  // on ferme la connexion  
 
?>

<div id="formulaire">

 <form action="nouveau3.php" method="post">
   

 

    <p>Titre:<br/>
    <input name="titre" size="22" value="" type="text"/>
   </p>  
   
   <p>Support:<br/>
    <input name="support" size="22" value="" type="text"/>
   </p>  
   
   <p>Photographe:<br/>
    <input name="photographe" size="22" value="" type="text"/>
   </p>  
   
   <p>Date:<br/>
    <input name="date" size="22" value="" type="text"/>
   </p>
   
    <p>Provenance:<br/>
    <input name="provenance" size="22" value="" type="text"/>
   </p>
   
    <p>Droits:<br/>
    <input name="droitimage" size="22" value="" type="text"/>
   </p>  
    <p>Description:<br/>
   <textarea name="description" rows="10" cols="50" ></textarea>
   </p>  
 
<p>Localisation dans la photothèque:<br/>
   <textarea name="localisation" rows="10" cols="50" ></textarea>
  </p>
      <p>  Nom du photographe:</p>
        <input name="nom" size="22" value="" type="text"/>
   </p>
          <p>  Periode :</p>
        <input name="periode" size="22" value="" type="text"/>
   </p>
   
    <p>  Lieu :</p>
        <input name="lieu" size="22" value="" type="text"/>
   </p>
         <p>  Mot-clé :</p>
        <input name="mot" size="22" value="" type="text"/>
   </p>
   
     <input name="Valider" value="Valider" type="submit"/>
   <input name="Effacer" value="Effacer" type="reset"/>
 
</form>
</div>

Hors ligne

#2 01-06-2011 09:45:12

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

Re : formulaire de saisie en récuperant données d'autres tables

Saluton,
tu fais

$req = mysql_query($sql)

si tu te retrouves là

$res= mysql_num_rows($req);
 
if($res!=0)  // le mot  existe déjà, on affiche un message d'erreur
    {

tu peux récupérer l'id avec mysql_fetch_row($req).


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

#3 01-06-2011 11:00:40

craya
Membre
Inscription : 01-06-2011
Messages : 6

Re : formulaire de saisie en récuperant données d'autres tables

merci beaucoup pour ta réponse!
mais je n'ai pas compris comment mettre "mysql_fetch_row($req)." dans mon code. Désolée je débute

Hors ligne

#4 01-06-2011 12:34:14

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

Re : formulaire de saisie en récuperant données d'autres tables

craya a écrit :

merci beaucoup pour ta réponse!
mais je n'ai pas compris comment mettre "mysql_fetch_row($req)." dans mon code. Désolée je débute

Pour les débutants, il y a nos vieux tutos.


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 01-06-2011 13:19:19

craya
Membre
Inscription : 01-06-2011
Messages : 6

Re : formulaire de saisie en récuperant données d'autres tables

en fait j'ai suivi à la lettre le tuto alimenter 2 tables, cela fonctionne par contre rien n'est indiqué pour saisir une données déja présente. par exemple j'ai dans ma base le mot porte, quand je saisi dans mon formulaire le mot porte l'identifiant du mot n'est pas repris dans ma table image.

Rappel de mes tables image(idimage, titre....,idmot)
motcles (idmot, mot)

Dernière modification par craya (01-06-2011 13:19:54)

Hors ligne

#6 01-06-2011 13:28:48

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

Re : formulaire de saisie en récuperant données d'autres tables

Dans ta table image, idmot est, de fait, une clé étrangère.
Soit tu la récupères, via mysql_insert_id() par exemple, en créant la ligne dans la table motcles.
Soit le mot existe déjà dans la table et tu la récupères comme je t'ai indiqué.


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

#7 01-06-2011 15:21:48

craya
Membre
Inscription : 01-06-2011
Messages : 6

Re : formulaire de saisie en récuperant données d'autres tables

j'ai suivi tes conseils mais ça ne fonctionne pas sad

  // on regarde dans la table auteur si le nom existe déjà
 
 
$sql = "SELECT idauteur FROM auteur WHERE nom='$nom'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$res= mysql_fetch_row($req);


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

else  // Le nom n'existe pas, on insère d'abord les infos dans auteur
    {
    $sql = "INSERT INTO auteur (idauteur, nom) VALUES('','$nom')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on récupère l'idauteur qui vient d'être généré
    $idauteur = mysql_insert_id();
   
 

     }

Hors ligne

#8 01-06-2011 15:29:52

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

Re : formulaire de saisie en récuperant données d'autres tables

Ne fait mysql_fetch_row qu'après avoir testé qu'il y a bien un résultat dans le bloc

    $res= mysql_num_rows($req);
     
    if($res!=0)  // le mot  existe déjà, on affiche un message d'erreur
        {
 

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

#9 03-06-2011 09:21:27

craya
Membre
Inscription : 01-06-2011
Messages : 6

Re : formulaire de saisie en récuperant données d'autres tables

enfait j'ai trouvé, ça a marché avec mysql fetch assoc merci qd même de ton aide

Hors ligne

Pied de page des forums