Page 1 sur 1

Eviter d'enregistrer une meme requete dans une B.Donnée

Posté : 01 juin 2005, 13:40
par catalan
bonjour tout le monde.
j'utilise phpMyadmin,j 'ai crée une base de donnée.A partir d'un formulaire j'envoie les données sur la BD. La requete que j'envoie marche très bien (les informations que je saisie dans le formulaire sont bien enregistrée dans la base) mais le problème c'est que je peux envoyer la même requete plusieurs fois.que faut-il faire pour éviter ça?? merci d'avance.
voici mon code:
<?php
$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$Rue=$_POST['Rue'];
$cp=$_POST['cp'];
$ville=$_POST['ville'];
$tel=$_POST['tel'];
$mail=$_POST['mail'];
$commentaire=$_POST['commentaire'];

/* Définition des variables servant au traitement de l'adresse électronique et du numéro de 
   téléphone: on utilise ici des expressions régulières. */
/* Définition de validation de l'adresse de courriel (e-mail) */
		$valid = "^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\.[a-z]{2,4}$";
/* Définition de validation du numéro de téléphone: des chiffres uniquement, de 6 à 10 chiffres */
		$phone = "^[0-9]{10}$";
/* Définition de validation du code postal: des chiffres uniquement*/
		 $code = "^[0-9]{5}$";    
// connexion à votre base de donnée
$connexion = mysql_connect("localhost","root") or die("erreur");
mysql_select_db("client",$connexion);

// on crée la requête SQL, pour ensuite l'envoyer
		  // lancement de la requête d'insertion
  if (empty($_POST['Nom'])==true || empty($_POST['Prenom'])==true || empty($_POST['Rue'])==true || empty($_POST['cp'])==true || empty($_POST['ville'])==true || empty($_POST['tel'])==true)	
   {
   echo "Erreur!: un ou plusieurs champs obligatoires n'ont pas été remplis ( vos infos n'ont pas été envoyées)";
   }
   else  
    {
	  if (($cp) && !(eregi($code, $cp)))
	   {
	   print "<li>le code postal est invalide, il doit comporter 5 chiffres</li>\n"; 
       }
        else
           if (($tel) && !(ereg($phone,$tel)))/* Comparaison du numéro de téléphone avec l'expression régulière */
	        { 
		    print "<li>Le numéro de téléphone doit comporter seulement des chiffres, 10 chiffres sans espaces ni tirets</li>\n";  
		    }
			else
			   if (($mail) && !(eregi($valid, $mail)))
			    {
			    print "<li>L'adresse électronique saisie est invalide.</li>\n"; 
				}
				else
				   {
			       $requete = "INSERT INTO test values('','$Nom','$Prenom','$Rue','$cp','$ville','$tel','$mail','$commentaire')";
		           mysql_query($requete) or die('Erreur SQL !'.$requete.''.mysql_error());
		           print "Vos données ont été envoyées avec succès!";
				   }
	} 
		// fermeture de la connexion vers Mysql
		mysql_close(); 
?>

Posté : 01 juin 2005, 13:46
par Cyrano
Tu peux utiliser une astuce: au début de ton code, là où tu définis quelques variables, crées-en une nouvelle:
$insertion = 0;
et là où tu fais ta requête, modifie ceomme ceci:
        if($insertion == 0)
{
    $requete = "INSERT INTO test values('','$Nom','$Prenom','$Rue','$cp','$ville','$tel','$mail','$commentaire')";
    mysql_query($requete) or die('Erreur SQL !'.$requete.''.mysql_error());
    $insertion = 1;
}
Tu ne pourras faire l'insertion qu'une seule fois, même si tu t'excite avec le clic de souris sur le bouton d'envoi du formulaire.

Posté : 01 juin 2005, 16:31
par Invité
Merci Cyrano. j' ai essayeé mais ça ne marche pas.ta une autre solution??

Posté : 01 juin 2005, 17:02
par pascaltje
pitié, codez en objet!