IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérification d'un champ sans doublon [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut Vérification d'un champ sans doublon
    voici mon pb:

    j'ai créer une plusieurs conditions et une boucle pour vérifier que mon champ adresse n'est pas déjà enregistré dans ma base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    if (mysql_fetch_row($requete_list)!=0) //1er cas: la requête contient au moins un enregistrement//
    			{	
    				 while( $boucle = mysql_fetch_array( $requete_list ) )
    		        {
    		        //vérification adresse du formulaire et adresse de la requête sql//
    			        if (strcasecmp($boucle["Adresse"],$adress)== 0)
    			        {
    			        	$trouve=true;
    			        	die ("déjà enregistré");
    			        }
    		        }
    					//Enregistrement dans la base//
    					if ($trouve==false) 
    					{
    					$sql = "INSERT INTO adresse VALUES ('', '".$nom."','".$adress."','".$ville."','".$departement."')";
    						if (mysql_query($sql) == false) 
    						{
    						  die ("Impossible de créer l'enregistrement.</span></h3> Message d'erreur: " . mysql_error());
    						}
    						else 
    						{
    						  echo "Enregistrement effectué avec succès ! 1er cas";
    						  echo ("</span></h3>");
    						  echo ("<br><br>");
     
    						}
    					}				
     
    			}
    			else //2nd cas: la requête ne contient aucun enregistrement
    			{
    				//Enregistrement dans la base//
    				$sql = "INSERT INTO adresse VALUES ('', '".$nom."','".$adress."','".$ville."','".$departement."')";
    					if (mysql_query($sql) == false) 
    					{
    					  die ("Impossible de créer l'enregistrement.</span></h3> Message d'erreur: " . mysql_error());
    					}
    					else 
    					{
    					  echo "Enregistrement effectué avec succès ! 2nd cas";
    					  echo ("</span></h3>");
    					  echo ("<br><br>");
    					}
    			}			
    			mysql_close($lk_plug );
    ça fonctionne pas trop mal, sauf...

    un truc très bizarre...

    je tente un premier enregistrement --> OK
    je tente un second enregistrement identique --> OK (déjà c'est bizarre)
    je tente un troisième enregistrement --> et là il me dit enfin que l'enregistrement existe déjà dans la base...

    je pige pas là

    si je supprime les occurrences (en double) dans la base et là pareil le 2nd enregistrement passe puis au 3ième il me redit enfin qu'il existe.

    voyez vous ou se trouve le pb ?

    j'ai même tenté d'initialiser la variable "trouve" mais rien n'y fait

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    up...

    personne ne voit le pb ???

    mon code serait il correct ??

    j'en doute quand même...

    je suis ne train de me demander si je ne vais pas commencer par filtrer l'adresse avant ma requête sql...

    Qu'en pensez vous ?

  3. #3
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Bonjour,

    Je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_fetch_row($requete_list)!=0
    mysql_fetch_row retourne un tableau qui contient des données en provenance du résultat de la requête et avance le pointeur d'un cran.

    mysql_fetch_array() fait la même chose sauf que le tableau est à la fois indexé et associatif.

    Je vous suggère d'utiliser mysql_num_rows() dans le premier if, cela vous donnera le nombre de lignes, si il est différent de zéro on continue.

    Ceci en partant du postulat que la requête à la base de votre travail sélectionne les enregistrements dont le nom est le même que celui qu'on vous donne, ce qui expliquerait le test sur l'adresse.

    A bientôt

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    Merci papyphp,

    j'avais tellement le nez dessus que je ne voyais pas l'énormité de ma bêtise...

    je ne sais absolument pas pourquoi je suis parti sur mysql_fetch_row.

    Une erreur de copier/coller sans doute.


    Une grand merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/07/2008, 12h04
  2. requête pour trouver les champs sans doublons
    Par kuhnden dans le forum Access
    Réponses: 2
    Dernier message: 28/03/2008, 18h34
  3. Select sans doublon sur un champ
    Par Carnot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/10/2007, 22h36
  4. Réponses: 3
    Dernier message: 13/04/2007, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo