Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1095 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2079716
craya
Posté le 01-06-2011 à 10:43:05  profilanswer
 

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]

mood
Publicité
Posté le 01-06-2011 à 10:43:05  profilanswer
 

n°2079871
AzOo
Posté le 01-06-2011 à 15:05:14  profilanswer
 

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 ***
n°2079883
craya
Posté le 01-06-2011 à 15:37:17  profilanswer
 

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?

n°2079885
AzOo
Posté le 01-06-2011 à 15:43:54  profilanswer
 

à 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 ***
n°2079892
craya
Posté le 01-06-2011 à 16:07:53  profilanswer
 

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();
   
   
    }

n°2079893
AzOo
Posté le 01-06-2011 à 16:09:43  profilanswer
 

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


---------------
*** [Feed-Back] AzOo ***
n°2079896
craya
Posté le 01-06-2011 à 16:17:35  profilanswer
 

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
n°2079902
AzOo
Posté le 01-06-2011 à 16:45:50  profilanswer
 

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 ***
n°2080139
craya
Posté le 03-06-2011 à 10:18:29  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
JTable et base de donnéesRequête d'export de données Mysql vers fichier CSV
Formulaire PHP avec test champs videsPHP - Formulaire problème value
Formulaire vers une même page sans bouton "Submit"RESOLU - Excel VBA - Données, Dico, et MsgBox
[MySQL] Répartir des données dans plusieurs tablesBesoin de conseil sur modèle de données
Enregistrement nom de domaine sur Wordpress 
Plus de sujets relatifs à : formulaire d'enregistrement et récupération de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR