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 :

Contrôle d'un champ de formulaire


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut Contrôle d'un champ de formulaire
    Bonjour

    apres avoir chercher un bon moment je me decide a posté un message ici.

    mon problème est que j'aimerai controler certain champ entrez dans un formulaire.
    en faite je voudrai simplement vérifié qu'un champ entrez n'existe pas deja dans ma base de donné.
    je laisse un bout de code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    mysql_select_db($database_Consultation, $Consultation);
    $query_Recordsettest = sprintf("SELECT NumContrat FROM Contrats WHERE NumContrat=%s", $_POST['NumContrat']);
    $Recordsettest = mysql_query($query_Recordsettest, $Consultation) or die(mysql_error());
    $row_Recordsettest = mysql_fetch_assoc($Recordsettest);
    $totalRows_Recordsettest = mysql_num_rows($Recordsettest);
     
    // comme cela je sai si le numero entrer par l'utilisateur est unique.
     
    if (<?php echo $row_Recordsettest['NumContrat']; ?> == document.form1.NumContrat.value )  {
    	      alert("ce numero de contrat a deja etai entre");
    	      return false;}
    else {return true;}

    mon problème est qu'il ne me retourne pas de message d'erreur alor que lorsque je regarde le code source, il fait bien le test avec un nombre.
    en revanche si je renvoi deux fois de suite le formulaire sans changer le numéro du contrat, j'aurai mon message d'erreur.

    j'ai l'impression qu'on ne peu pas mettre dans la condition une variable qui prend sa valeur qu'apres avoir cliquer sur le bouton.

    je sais pas si j'ai etait tré clair!!

    si vous avais une autre methode me permettant de vérifié que ce champ est unique.
    sans passer par les regle de la table.

    j'utilise mysql et php.

    merci!

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    mon problème est qu'il ne me retourne pas de message d'erreur alor que lorsque je regarde le code source, il fait bien le test avec un nombre.
    en revanche si je renvoi deux fois de suite le formulaire sans changer le numéro du contrat, j'aurai mon message d'erreur.
    C'est pas ce que tu veux ? verifier l unicité ? donc le premier coups le formulaire existe pas donc pas de message d'erreur , la sconde il existe donc message d erreur ?!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    personne peut m'aidé????



    je veu juste savoir comment faire pour controler qu'un champ n'existe pas deja dans ma base avant de l'envoyer dans celle ci.
    Comme sa l'utilisateur peu être mis au courant et refaire sont formulaire.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    non c'est pas sa car en faite lorsque je fait mon test j'entre une valeur qui est deja dans ma basse de donné donc il devrai me prevenir dès le premier coup!!
    de plus si je change de chiffre a chaque coup je n'aurai jamais de message d'erreur.
    mais seulement si j'insiste, c'est a dire deux fois de suite avec le meme numéro de contrat.

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    si tu fais un echo $query_Recordsettest ; tu as une requete valide ? tu l as testé sous phpmyadmin ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    non je n'est pas testé car je n'est pas php my admin.

    mais si je regarde le source j'ai bien une valeur corect lors de l'execution du formulaire.
    il compare donc bien mon champs contrat avec la valeur de mon $row_Recordsettest.

    je n'est peu etre pas préciser que c'est une fonction de controle qui fait cela.

    mais peu etre que ma technique n'est pas bonne, je débute donc si tu me conseille une toute autre methode je sui preneur.

    voici un morceau de ma source apres éxecution du formulaire.

    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
     
    function Controle2() {
     
        	if (document.	form1.SelectEntreprise.value == '0' || document.form1.NumContrat.value == 0 || 2 == document.form1.NumContrat.value || document.form1.DateVigueur.value != 0 )  {
     
    	    if (2 == document.form1.NumContrat.value )  {
    	      alert("ce numero de contrat a deja etai entre");
    	      return false;}
    	    else {
    		if (document.form1.SelectEntreprise.value == '0' || document.form1.NumContrat.value == 0){ 
    	          alert("Les champs 'Entreprises', 'Site' et 'Num. Contrat' doivent ?re renseign?.");
    	          return false;}
    		    }
    		    } 
    else {return true;}
     
    }

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Ok mais a vrai dire je vois pas l'utilité de la double verification php / javascript !

    Moi je ferais simplemet ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mysql_select_db($database_Consultation, $Consultation);
    $query_Recordsettest = sprintf("SELECT NumContrat FROM Contrats WHERE NumContrat=%s", $_POST['NumContrat']);
    $Recordsettest = mysql_query($query_Recordsettest, $Consultation) or die(mysql_error());
    $row_Recordsettest = mysql_fetch_assoc($Recordsettest);
    $totalRows_Recordsettest = mysql_num_rows($Recordsettest);
     
    if ($totalRows_Recordsettest != 0 )
               echo 'Votre numéro de contrat existe déjà' !
    en partant de ton code de depart !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    sa me parait bien, j'aurai voulus faire qu'elle que chose comme sa mais je doit le mettre quan dans mon code pour que l'utilisateur n'est qu'a cliquer sur ok et re remplir sont champ.?

    car je veu que sa soit controler au moment ou il appuie sur enregistrer et que sa ne mette pas dans la base de donné si ce numéro n'est pas unique.


    la fesant comme tu me dit il ne se passe rien je n'est meme pas le message me disant que ce numéro n'est pas unique.

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    hum donc la plus dure !

    le phph s'exxecute cote serveur donc tu devras executer le script pour que le code marche !

    Autre solution (celle que tu as l air de vouloir appliquer) -> Ajax !

    Apres c'est a toi de voir !

    Sinon en partant de ton modele tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql_select_db($database_Consultation, $Consultation);
    $query_Recordsettest = sprintf("SELECT NumContrat FROM Contrats WHERE NumContrat=%s", $_POST['NumContrat']);
    $Recordsettest = mysql_query($query_Recordsettest, $Consultation) or die(mysql_error());
    $row_Recordsettest = mysql_fetch_assoc($Recordsettest);
    $totalRows_Recordsettest = mysql_num_rows($Recordsettest);
     
    if ($totalRows_Recordsettest != 0 )
               echo 'Votre numéro de contrat existe déjà' !
    else
    {
    $requete = "INSERT into Contrats (NumContrat) VALUES ('$_POST[NumContrat]')";
    mysql_query($requete, $Consultation) or die(mysql_error());
    }
    en gros tu verifie si il existe , si oui , tu le dis a l'utilisateur , sinon tu l entre en base (bon y a mieux c est un premier jet)

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    je débute c'est pour sa que je fait surment des ereurs bete.

    mais maitenant je comprend mieu pourquoi sa marcher pas le php s'execute coté serveur.

    mais alor comment faire pour executer le script?
    car si j'ai bien compris la solution que tu me donne utilise php donc je doit faire executer le script?

  11. #11
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    et bien tu tdois avoir un formulaire , donc tu le fais pointer sur un fichier php par exemple verif.php dans lequel tu insere le code que je t'ai donné !

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    je sais je sui pas douée mais désolé je voulais etre sur, pour rediriger vers un autre fichier c'est bien avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form method="post" name="form1" action="<?php echo $editFormAction; ?>" onsubmit="return contratverif.php">

  13. #13
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" name="form1" action="contratverif.php">

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup je vais essayer de faire du mieu!
    donc dans se fichier contratverif je ferai aussi mais INSERT? ou je peut refaire appel a mon premier fichier qui les fera?

    dailleur comment je fait pour revenir sur mon fichier de base?

  15. #15
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Citation Envoyé par parko
    donc dans se fichier contratverif je ferai aussi mais INSERT?
    oui c est compris dans le code !

    Citation Envoyé par parko
    dailleur comment je fait pour revenir sur mon fichier de base?
    tu affiche un lien sur la premiere page !

    Je pense que tu devrais faire un saut dans la rubrique Cours et reviser un peu le HTML et le php !

Discussions similaires

  1. [AC-2010] Liste formulaire contrôlée par autres champs
    Par scrouet dans le forum IHM
    Réponses: 1
    Dernier message: 15/03/2013, 18h02
  2. contrôle de champs de formulaire
    Par Spir29 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/06/2012, 15h04
  3. Réponses: 7
    Dernier message: 29/02/2012, 09h15
  4. contrôle bouton radio champ formulaire
    Par bambino13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2009, 22h34
  5. contrôle sur un champ dans un formulaire
    Par yoline dans le forum Access
    Réponses: 6
    Dernier message: 01/10/2005, 19h23

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