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

Langage PHP Discussion :

[PHP-JS] Vérification de présence


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut [PHP-JS] Vérification de présence
    Bonjour,

    Je en savais pas si il fallait mettre mon sujet ici ou dans la partie Javascript (parce que je ne sais pas comment régler mon problème).

    J'ai mis en place un formulaire avec checkbox et un champs texte. Dans ce champ, l'utilisateur va entrer un nom qui doit être unique.
    Je voudrais faire en sorte que si l'utilisateur rentre un nom déjà présent dans la BDD un message d'erreur apparaisse. Comment faire pour faire cela?

  2. #2
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    A mon avis, mais je n'en suis pas sûr à 100%, tu ne pourras pas le faire. Tu peux faire la vérification qu'apres la validation du formulaire. J'ai voulu faire la meme chose.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    C'est à dire?

    Si l'utilisateur clique sur le bouton "submit" et que le nom présent dans le champ existe déjà, y'a pas moyen d'afficher un message d'erreur? Même avec une fonction javascript?

  4. #4
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Si tu as essayé de faire la même chose, comment as tu résolu ton problème?

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par grumly22
    C'est à dire?

    Si l'utilisateur clique sur le bouton "submit" et que le nom présent dans le champ existe déjà, y'a pas moyen d'afficher un message d'erreur? Même avec une fonction javascript?
    C'est peut-être possible, mais personnellement je ne connais pas les technos qui permettent à javascript de se connecter à un SGBD. Et de toute manière il est probable que les connexions distantes ne soient pas acceptées. D'autre part, si JS est désactivé chez le client, la vérification ne se fera pas et tu auras éventuellement des erreurs lors de ta requête d'inclusion. (C'est pour ça que le JS doit être seulement une aide à la navigation, il ne faut jamais compter dessus pour vérifier la cohérence des informations soumises)
    La solution "simple et sûre" consiste à le faire en php, après soumission du formulaire, en réaffichant le formulaire avec un message d'erreur.

  6. #6
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    J'y ai pensé, mais je ne voit pas comment faire ...

  7. #7
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Il n'a pas dit qu'il voulait absolument ça en javascript

    Grumly : quand l'utilisateur soumet le formulaire, tu fais un
    'SELECT id FROM personne WHERE LOWER(nom) = "'.$_POST['nom'].'"' ;

    Si ça te retourne un résultat c'est que le nom existe déjà en bd.

  8. #8
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    ok, mais pour faire en sorte qu'il me raffiche mon formulaire sans prendre en compte la requête d'enregistrement dans la base de données, comment je fais?
    Mon code :
    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
     
    print '
    	<form action="../op/op.TagMgr.php" method="post" enctype="multipart/form-data" name="form0_3" onsubmit="return checkForm1(this.elements[\'version[]\']);">
    	<input type="Hidden" name="action" value="linktotag">
    	<table width=200%>
    		<tr>
    			<td class="inputDescription" valign="top">Tag name:
    			<input name="name"></td>';
    	print "";
    	print "<div class=\"standardText\"><ul>";
    	printFolder(getFolder($folderid));
    	print "</ul></div>";
    	print '</td></tr>
    		<tr>
    				<td colspan="2"><br><input type="Submit"></td>
    		</tr>
    	</table>
    	</form>';
    Ce code renvoit donc à la page op/op.TagMgr.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    else if ($action == "linktotag")
    {
    	printStartBox(getMLText("set_tag"));
    	print "<div class=\"standardText\">";
    	printMLText("document_linked");
    	$newTag = addTag($name);
    	$tag = mysql_insert_id();
    	$dc= addLink($tag, $documentid, $version);
    	printMLText("op_finished");
    	printGoto(array(array(getMLText("tag"), "../out/out.TagMgr.php")));
    }
    qui renvoit donc aux fonction:
    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
     
    function addTag($name)
    {
    	GLOBAl $db;
     
    	$queryStr = "INSERT INTO tblTags (name, comment, date) VALUES ('".$name."', 'no comment', NOW())";
    	$res = $db->getResult($queryStr);
    	if (!$res)
    		return false;
     
    	return getTag($db->getInsertID());
    }
     
     
     
    function addLink($tag, $document, $version)
    {
    	GLOBAl $db;
    	GLOBAL $version;
     
    	/*$tg=getSelectedTag();
    	$tag=$tg->getID();*/
     
    	foreach ($version as $vers){
    		$v=getVersionID($vers);
    		$ver=$v->getVersion();
     
    		$d=getVersionID($vers);
    		$doc=$d->getDocumentID();
     
    		$queryStr = "INSERT INTO tblLinkTagDocument (tag, document, version) VALUES ('".$tag."', '".$doc."', '".$ver."')";
    		$res = $db->getResult($queryStr);
    	}
    	if (!$res)
    		return false;
     
    	return getLink($db->getInsertID());
    }

    Note : J'ai l'impression que j'ai des problèmes de connexions, il se peux que je ne puisse avoir accès à internet d'ici peu (c'est donc pas que je ne veux plus vous parler) ...

    Merci de m'aider.

  9. #9
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    ok, mais pour faire en sorte qu'il me raffiche mon formulaire sans prendre en compte la requête d'enregistrement dans la base de données, comment je fais?
    J'ai la flemme de tout lire et j'ai l'impression que tu as la flemme pour réflechir donc on va y aller au feeling :
    Tu mets une condition sur l'enregistrement dans la base de données, et si la condition n'est pas remplie, tu réaffiches le formulaire, je ne vois pas ce qui bloque...

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    ben y'a la méthode AJAX qui peut te le dire en instantané quasiment.

    Sinon suffit de poster ton formulaire sur une page qui fera la requette pour savoir si le pseudo est déjà présent en bdd.

    s'il l'ai déjà, alors tu créer un message d'erreur et tu ne l'insert pas en bdd,
    sinon tu l'insert et voilà.

    après pour ce qui est du code c'est vraiment ultra simple de faire çà, c'est quand même les bases du php

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    Je veux pas polluer son topic non plus, mais je voulais juste ajouter que faire un maximum de test en javascript et une super méthode, maintenant le faire et en javascript et en PHP et ce qu'il y à de mieux.

    Perso je fait souvent les 2 tant que possible, mais faut au moins le faire sur le serveur

  12. #12
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par maximenet
    ben y'a la méthode AJAX qui peut te le dire en instantané quasiment.
    Oui, mais... voir ma réflexion plus haut sur la sécurité et l'activation de JS chez le client.

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    oui pour çà jviens d'ajouter une autre réponse

  14. #14
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Donc moi aussi j'ai voulu faire ca et on m'as dit que c'était possible juste avec l'ajax. J'ai laissé tomber cette solution. En fait je fais validé ce formulaire, ensuite j'appele une autre page php dans laquelle je vérifie si la valeur saisie est présent dans la base. Si c'est le cas, j'affiche un message d'erreur avec un lien pour rediriger vers le formulaire sinon j'ajoute la valeur à la BDD. C'est tout et comme dit Sylvain, y'a rien de compliqué là dedans, c'est du php tout bête.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  15. #15
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    J'arrive parfaitement à verifier si oui ou non le tuple existe déjà ... le truc que je n'arrive pas à faire, c'est récharger le formulaire automatiquement avec le message d'erreur ...

    Pour l'instant, après avoir valider mon formulaire, je passe par une page intermédiaire qui va vérifier si le tuple existe. Si il n'existe pas, il va l'enregistrer dans la base (ça, ça fonctionne), et dans le cas contraire, je voudrai qu'il me recharge le formulaire avec un message d'erreur (pour l'instant, j'ai une page blanche). C'est ça que je n'arrive pas à faire.

  16. #16
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par grumly22
    je voudrai qu'il me recharge le formulaire avec un message d'erreur (pour l'instant, j'ai une page blanche). C'est ça que je n'arrive pas à faire.
    Eh bien à la fin de ton script, tu envoies un header de redirection vers ton formulaire, avec un ou plusieurs paramètres GET qui disent qu'il faut afficher tel ou tel message d'erreur pour telle ou telle valeur.

  17. #17
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ou autre solution, tu utilses un if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ($valeur est dans la base) {
    // afficher le formulaire plus le message d'erreur
    } else {
    //insérer $valeur dans la base
    }
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  18. #18
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    C'est bon, je me suis arrangé avec ce que j'avais.

    Merci pour l'aide donnée, c'est cool.

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

Discussions similaires

  1. [PHP-JS] vérification bouton de radio
    Par Marcus15 dans le forum Langage
    Réponses: 4
    Dernier message: 02/07/2007, 16h17
  2. Réponses: 25
    Dernier message: 12/04/2007, 11h32
  3. [PHP-JS] Vérification des champs
    Par hartecel dans le forum Langage
    Réponses: 7
    Dernier message: 02/03/2007, 12h54
  4. [PHP-JS] Vérification en javascript d'un tableau en PHP
    Par johnson95 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/12/2006, 13h24
  5. [PHP-JS] Vérification de champs
    Par marsya dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2006, 03h26

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