ajout de données existantes via un formulaire de saisie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ajout de données existantes via un formulaire de saisie

Re: ajout de données existantes via un formulaire de saisie

par tres » 23 mai 2011, 16:13

pardon!

En fait quand je rentre un lieu existant, il me dit qu'il existe déja et ne me met pas identifiant auquel il correspond.
Je voudrais pouvoir quand même le saisir dans ma table et qu'il garde toujours le même identifiant.

Re: ajout de données existantes via un formulaire de saisie

par tres » 23 mai 2011, 13:42

Merci de ta reponse.

en fait ça marche déja quand j'insere un nouveau lieu, il se met dans ma table lieu et idlieu dans matable image.
Mon problème vient quand je veux rentrer un lieu qui existe déja dans ma base.
Par exemple toulouse est déja dans ma base lieux, mais quand je rentre toulouse il le considère comme un nouveau mot et lui donne un nouvel identifiant.

J'espère avoir était plus claire :)

Re: ajout de données existantes via un formulaire de saisie

par moogli » 23 mai 2011, 13:23

salut,

sans vraiment avoir tous compris à ton soucis, je dirais simplement qu'il te faut une table lieux qui contient tous les lieux rencontrés, et dans la table images tu insère la clef primaire correspondant au lieux.
cela te permet de faire un select sur la table lieux et de vois s'il existe déjà, si ce n'est pas le cas de faire l'insertion (ou sur mysql utiliser REPLACE au lieux de insert / update).

ça permet d'éviter les soucis du au problème de casse (par exemple toulouse et Toulouse). ça permet de réduire la place prise en base (tu n'aurais pas 28 fois Toulouse mais 28 fois un chiffre c'est plus court, il sera déjà indexé et donc accélérera les recherches ;).

bref que tu bon, tu peux aussi prévoir un select qui affiche les villes déjà présentes dans la table et un champ texte permettant d'en ajouter au besoin.

@+

ajout de données existantes via un formulaire de saisie

par trbarji » 23 mai 2011, 11:31

bonjour,

J'ai un formulaire de saisie ou je peux inserer dans ma table image des nouvelles données de mes tables auteur, dates, lieux et motscles mais je ne sais pas comment entrer les données déja existantes de ces tables.

Par exemple je voudrais entrer 'toulouse' mais si le lieu existe déja ce n'est pas possible.

Merci
voici mon code:


[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(isset($_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>[/code]