formulaire d'enregistrement et récupération de données

formulaire d'enregistrement et récupération de données - PHP - Programmation

Marsh Posté le 01-06-2011 à 10:43:05    

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:  

Code :
  1. [url][cpp]<?php
  2. // On commence par récupérer les champs  
  3. if(isset($_POST['titre']))      $titre=$_POST['titre'];
  4. else      $titre="";
  5. if(isset($_POST['support']))      $support=$_POST['support'];
  6. else      $support="";
  7. if(isset($_POST['photographe']))      $photographe=$_POST['photographe'];
  8. else      $photographe="";
  9. if(isset($_POST['date']))      $date=$_POST['date'];
  10. else      $date="";
  11. if(isset($_POST['provenance']))      $provenance=$_POST['provenance'];
  12. else      $provenance="";
  13. if(isset($_POST['droitimage']))      $droitimage=$_POST['droitimage'];
  14. else      $droitimage="";
  15. if(isset($_POST['description']))      $description=$_POST['description'];
  16. else      $description="";
  17. if(isset($_POST['localisation']))      $localisation=$_POST['localisation'];
  18. else      $localisation="";
  19. if(isset($_POST['nom']))      $nom=$_POST['nom'];
  20. else      $nom="";
  21. if(isset($_POST['periode']))      $periode=$_POST['periode'];
  22. else      $periode="";
  23. if(!empty($_POST['lieu']))      $lieu=$_POST['lieu'];
  24. else      $lieu="";
  25. if(isset($_POST['mot']))      $mot=$_POST['mot'];
  26. else      $mot="";
  27. if(isset($_POST['idate']))      $idate=$_POST['idate'];
  28. else      $idate="";
  29. if(isset($_POST['idauteur']))      $idauteur=$_POST['idauteur'];
  30. else      $idauteur="";
  31. if(isset($_POST['idlieu']))      $idlieu=$_POST['idlieu'];
  32. else      $idlieu="";
  33. if(isset($_POST['idmot']))      $idmot=$_POST['idmot'];
  34. else      $idmot="";
  35. if(isset($_POST['idimage']))      $idimage=$_POST['idimage'];
  36. else      $idimage="";
  37. require_once("connect.php" );
  38. $bd=mysql_connect(SERVEUR,NOM,PASSE);
  39. mysql_select_db(BASE,$bd);
  40. // on regarde dans la table auteur si le nom existe déjà  
  41. $sql = "SELECT idauteur FROM auteur WHERE nom='$nom'";
  42. $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  43. $res= mysql_num_rows($req);
  44. if($res!=0)  // le nom  existe déjà, on affiche un message d'erreur  
  45.     {
  46.     echo '<font color="red">Désolé, mais ce nom  existe déjà dans notre base.</font>';
  47.     }
  48. else  // Le nom n'existe pas, on insère d'abord les infos dans auteur
  49.     {
  50.     $sql = "INSERT INTO auteur (idauteur, nom) VALUES('','$nom')";
  51.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  52.     // on récupère l'idauteur qui vient d'être généré  
  53.     $idauteur = mysql_insert_id();
  54.  
  55.     }
  56.    
  57.      
  58.      // on regarde dans la table dates si la periode existe déjà  
  59. $sql = "SELECT idate FROM dates WHERE periode='$periode'";
  60. $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  61. $res= mysql_num_rows($req);
  62. if($res!=0)  // la periode  existe déjà, on affiche un message d'erreur  
  63.     {
  64.     echo '<font color="red">Désolé, mais cette periode  existe déjà dans notre base.</font>';
  65.     }
  66. else  // La periode n'existe pas, on insère d'abord les infos dans dates
  67.     {
  68.     $sql = "INSERT INTO dates (idate, periode) VALUES('','$periode')";
  69.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  70.    
  71.     // on récupère l'idate qui vient d'être généré  
  72.     $idate = mysql_insert_id();
  73.    
  74.    
  75.     }
  76.      // on regarde dans la table lieux si le lieu existe déjà  
  77.    
  78.     $sql = "SELECT idlieu FROM lieux WHERE lieu='$lieu'";
  79. $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  80. $res= mysql_num_rows($req);
  81. if($res!=0)  // le lieu  existe déjà, on affiche un message d'erreur  
  82.     {
  83.     echo '<font color="red">Désolé, mais ce lieu  existe déjà dans notre base.</font>';
  84.     }
  85. else  // Le lieu n'existe pas, on insère d'abord les infos dans lieux
  86.     {
  87.     $sql = "INSERT INTO lieux (idlieu, lieu) VALUES('','$lieu')";
  88.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  89.     // on récupère l'idlieu qui vient d'être généré  
  90.     $idlieu = mysql_insert_id();
  91.     }
  92.    
  93.    
  94.      
  95.  
  96.   // on regarde dans la table motcles si le mot existe déjà  
  97.  
  98.       $sql = "SELECT idmot FROM motcles WHERE mot='$mot'";
  99. $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  100. $res= mysql_num_rows($req);
  101. if($res!=0)  // le mot  existe déjà, on affiche un message d'erreur  
  102.     {
  103.     echo '<font color="red">Désolé, mais ce mot  existe déjà dans notre base.</font>';
  104.     }
  105. else  // Le mot n'existe pas, on insère d'abord les infos dans motcles
  106.     {
  107.     $sql = "INSERT INTO motcles (idmot, mot) VALUES('','$mot')";
  108.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  109.     // on récupère l'idmot qui vient d'être généré  
  110.     $idmot = mysql_insert_id();
  111. $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')";
  112. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  113.     }
  114.    
  115. mysql_close($bd);  // on ferme la connexion   
  116. ?>
  117. <div id="formulaire">
  118. <form action="nouveau3.php" method="post">
  119.  
  120.     <p>Titre:<br/>
  121.     <input name="titre" size="22" value="" type="text"/>
  122.    </p> 
  123.  
  124.    <p>Support:<br/>
  125.     <input name="support" size="22" value="" type="text"/>
  126.    </p> 
  127.  
  128.    <p>Photographe:<br/>
  129.     <input name="photographe" size="22" value="" type="text"/>
  130.    </p> 
  131.  
  132.    <p>Date:<br/>
  133.     <input name="date" size="22" value="" type="text"/>
  134.    </p>
  135.  
  136.     <p>Provenance:<br/>
  137.     <input name="provenance" size="22" value="" type="text"/>
  138.    </p>
  139.  
  140.     <p>Droits:<br/>
  141.     <input name="droitimage" size="22" value="" type="text"/>
  142.    </p> 
  143.     <p>Description:<br/>
  144.    <textarea name="description" rows="10" cols="50" ></textarea>
  145.    </p> 
  146. <p>Localisation dans la photothèque:<br/>
  147.    <textarea name="localisation" rows="10" cols="50" ></textarea>
  148.   </p>
  149.       <p>  Nom du photographe:</p>
  150.         <input name="nom" size="22" value="" type="text"/>
  151.    </p>
  152.           <p>  Periode :</p>
  153.         <input name="periode" size="22" value="" type="text"/>
  154.    </p>
  155.  
  156.     <p>  Lieu :</p>
  157.         <input name="lieu" size="22" value="" type="text"/>
  158.    </p>
  159.          <p>  Mot-clé :</p>
  160.         <input name="mot" size="22" value="" type="text"/>
  161.    </p>
  162.  
  163.      <input name="Valider" value="Valider" type="submit"/>
  164.    <input name="Effacer" value="Effacer" type="reset"/>
  165. </form>[img]

[/url][/cpp]

Reply

Marsh Posté le 01-06-2011 à 10:43:05   

Reply

Marsh Posté le 01-06-2011 à 15:05:14    

Salut,
 
Je ne sais pas si j'ai très bien compris mais tu recherches seulement à récupérer l'identifiant du mot / auteur / lieu / ... si il est déjà en base ?
 
Si c'est cela, tu fais déjà fait quasiment déjà tout le boulot, il ne te reste qu'a faire un mysql_fetch_assoc ( http://fr.php.net/manual/fr/functi [...] -assoc.php ) après tes requête pour récupérer ce que tu veux !


Message édité par AzOo le 01-06-2011 à 15:05:55

---------------
*** [Feed-Back] AzOo ***
Reply

Marsh Posté le 01-06-2011 à 15:37:17    

Merci beaucoup pour ta réponse! oui c'est bien ce que je veux faire mais je bloque dessus où dois je et comment mettre mysql_ftech_array dans mon code?

Reply

Marsh Posté le 01-06-2011 à 15:43:54    

à la place de tes mysql_num_rows() et tu check si l'id ($res['id']) n'est pas vide ...


Message édité par AzOo le 01-06-2011 à 15:44:07

---------------
*** [Feed-Back] AzOo ***
Reply

Marsh Posté le 01-06-2011 à 16:07:53    

Merci encore et également pour ta patience alors j'ai remplacé mais ça ne fonctionne pas j'ai un un 0 dans ma table et pas mon identifiant.
 
 
 
// 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_assoc($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();
   
   
    }

Reply

Marsh Posté le 01-06-2011 à 16:09:43    

si tu fait un print_r($res) juste après $res= mysql_fetch_assoc($req);  
 
qu'as-tu ?


---------------
*** [Feed-Back] AzOo ***
Reply

Marsh Posté le 01-06-2011 à 16:17:35    

voila ce que j'ai fais :
 
$sql = "SELECT idauteur FROM auteur WHERE nom='$nom'";  
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
$res= mysql_fetch_assoc($req);  
print_r($res);
 
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();
   
   
    }
 
ça m'affiche: Array ( [idauteur] => 1 )


Message édité par craya le 01-06-2011 à 16:20:32
Reply

Marsh Posté le 01-06-2011 à 16:45:50    

heu .. je ne comprends pas tu as la réponse sous les yeux ... tu récupère donc bien l'idauteur, tu n'as plus qu'à le réutiliser ...
 
$monId = $res['idauteur'];


---------------
*** [Feed-Back] AzOo ***
Reply

Marsh Posté le 03-06-2011 à 10:18:29    

Merci infiniment ça fonctionne, cela faisait des jours et des jours que je cherchais!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed