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

AJAX Discussion :

[AJAX] vérification champs dispo bdd (requete multicritére)


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut [AJAX] vérification champs dispo bdd (requete multicritére)
    Bonjour,

    J'ai créé un formulaire avec un champ que je vérifie en Ajax (connexion a la bdd et vérification de la disponibilité du champ).

    Au départ ma requete etait simple mais au vue des rectifications apportées au formulaire elle devient plus compliquée j'ai tenté de modifier ma requete mais apparament sa ne marche pas.

    voici une partie du formulaire :

    form.php

    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
    <tr>
    				<td><b>- Statut du corpus </b></td>
    				<td><select name="Statut_corpus">
    					<option value="">---Sélectionnez---</option>
    					<option value="Transcrit">Transcrit</option>
     
     
    					<option value="Verifie_Non Anonymise">Verifié - Non Anonymisé</option>
     
     
    					<option value="Verifie_Anonymise">Vérifié - Anonymisé</option>
     
    				</select></td>
    			</tr>
     
    			<tr>
    				<td>Nom du dossier contenant le corpus informatisé (identifiant) :</td>
    				<td><input type="text" size="50" name="NomFichierSource"
    					onblur="req_NomFichierSource(this.value);"> <span
    					id="NomFichierSource_check"></span></td>
    			</tr>
    mon champs NomFichierSource est vérifié et cela fonctionne
    cependant je voudrai prendre en compte le premier champs Statut_corpus.

    en sql cela se traduirai de cette facon :

    mysql_query("select * from header_tei where NomFichierSource='".$NomFichierSource."' and Statut_corpus='".$Statut_corpus."'");


    mon code ajax est :

    verifDispo.js

    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
    47
    48
    49
    // ce code va vérifier la disponibilité du Nom de fichier SOURCE
     
    var bNomFichierSource = false;
    function req_NomFichierSource(NomFichierSource) {
     
    	//XMLHttpRequest est supporté par Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, Netscape 7
    	if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
    	else var XhrObj = new XMLHttpRequest(); //Mozilla
     
    	content = document.getElementById("NomFichierSource_check"); 	//zone d'affichage
     
    	XhrObj.open("POST", "../verification/verif_NomFichierSource.php");
    	//XhrObj.open("POST", "verif_NomFichierSource.php", false);
    	//Ok pour la page cible
    	XhrObj.onreadystatechange = function()
    	{
    		if (XhrObj.readyState == 4 && XhrObj.status == 200) {
    			if (XhrObj.responseText == 'OK') {
    				content.innerHTML='<img src="../images/accepter.png" alt=""/>OK';
    				bNomFichierSource = true; // ok nouveau pseudo
    			} else {
    				content.innerHTML='<img src="../images/refuser.png" alt=""/>Existe';
    				bNomFichierSource = false; // erreur pseudo déjà existant
    			}
    		}
    	}
     
    	XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	XhrObj.send('p='+NomFichierSource);
     
    }
     
    function testChamps(f) {
    //	bNomFichierSource = false;  on va revalider le champ
    //	req_NomFichierSource(f.NomFichierSource.value);
    	if (!bNomFichierSource) {
    	 alert('Erreur Nom Fichier Source');
    	 return false;
    	}
     
    	return true;
     
     
     
     
     
     
     
    	}
    verif_NomFichierSource.js

    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
    <?php
     
    include("../bdd/connection.php");
     
    $NomFichierSource = htmlentities(addslashes($_POST['p']));
     
    if (!empty($NomFichierSource)) {
      $res = mysql_query("select * from header_tei where NomFichierSource='".$NomFichierSource."'");
      echo (($row = mysql_fetch_array($res)) ? 'FAIL' : 'OK');
      
      
      
      
    }
    ?>
    ce que j'ai actuellement : si NomFichierSource existe dans la bdd il me le signale

    ce que je voudrai : si NomFichierSource existe avec le même statutCorpus alors je veux une alerte ajax; par conséquent il peut y avoir deux fichiers avec le meme nom mais le statut sera différent.

    comme je disai jai tenté de modifier la requete dans le fichier verif_NomFichierSource.js mais je pense qu'il faut apporter d'autre modif au code.

    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Si tu dois exécuter ta requête comme tu la présentes, tu dois passer un second paramètre dans ton appel AJAX:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XhrObj.send('p='+NomFichierSource + "&s="+encodeURIComponent(Statut_corpus));
    avec Statut_corpus la valeur sélectionnée dans ta liste SELECT.

    A toi alors de changer ta requête SQL. En bref cela fonctionne comme précédemment mais avec 2 paramètres.

    Ou alors je n'ai pas tout compris

    ERE

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut,

    Si tu dois exécuter ta requête comme tu la présentes, tu dois passer un second paramètre dans ton appel AJAX:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XhrObj.send('p='+NomFichierSource + "&s="+encodeURIComponent(Statut_corpus));
    avec Statut_corpus la valeur sélectionnée dans ta liste SELECT.

    A toi alors de changer ta requête SQL. En bref cela fonctionne comme précédemment mais avec 2 paramètres.

    Ou alors je n'ai pas tout compris

    ERE
    merci emmanuel tu as très bien compris.

    j'ai fais la modifications suivantes :
    - j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XhrObj.send('p='+NomFichierSource);
    par la ligne que tu m'as envoyé pour avoir 2 paramètres.
    - j'ai mis a jour la requete comme je l'ai indiqué dans mon premier post

    or cela ne fonctionne pas il ne se passe plus rien.

    je voudrai savoir s'il faut mettre à jour cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NomFichierSource = htmlentities(addslashes($_POST['p']));
    en effet a tout hasard j'ai ajouté cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Statut_corpus = htmlentities(addslashes($_POST['s']));
    mais sa ne fonctionne pas également.

    c'est surement tout bete comme oubli mais bon je ne trouve pas

    merci

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par knebhi Voir le message
    - j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XhrObj.send('p='+NomFichierSource);
    par la ligne que tu m'as envoyé pour avoir 2 paramètres.
    La ligne qu'emmanuel t'as proposé n'est qu'un exemple, je vois mal comment JavaScript pourrait deviner tout seul ce que doit contenir Statut_corpus
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    Citation Envoyé par Bovino Voir le message
    La ligne qu'emmanuel t'as proposé n'est qu'un exemple, je vois mal comment JavaScript pourrait deviner tout seul ce que doit contenir Statut_corpus
    j'ai bien compris voilà pourquoi j'ai effectué cette modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Statut_corpus = htmlentities(addslashes($_POST['s']));
    merci de votre aide

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    J'ai modifié quelques lignes de codes:

    verif_NomFichierSource.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    include("../bdd/connection.php");
     
    $NomFichierSource = $_POST['p'];
    $StatutCorpus =  $_POST['s'];
     
    if (!empty($NomFichierSource) && !empty($StatutCorpus)) {
      $res = mysql_query("select * from header_tei where NomFichierSource='".mysql_real_escape_string($NomFichierSource)."' and Statut_corpus='".mysql_real_escape_string($StatutCorpus)."'");
      echo (($row = mysql_fetch_array($res)) ? 'FAIL' : 'OK');
     
    }
    else { echo 'FAIL'; }
    ?>
    Ton HTML:
    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
    <tr>
    				<td><b>- Statut du corpus </b></td>
    				<td><select name="Statut_corpus" id="StatutCorpus">
    					<option value="">---Sélectionnez---</option>
    					<option value="Transcrit">Transcrit</option>
     
    					<option value="Verifie_Non Anonymise">Verifié - Non Anonymisé</option>
     
    					<option value="Verifie_Anonymise">Vérifié - Anonymisé</option>
     
    				</select></td>
    			</tr>
    			
    			<tr>
    				<td>Nom du dossier contenant le corpus informatisé (identifiant) :</td>
    				<td><input type="text" size="50" name="NomFichierSource" id="NomFichierSource"
    					onblur="req_NomFichierSource();"> <span id="NomFichierSource_check"></span></td>
    			</tr>
    Ton appel AJAX:
    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
    function req_NomFichierSource() {
     
    	//XMLHttpRequest est supporté par Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, Netscape 7
    	if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
    	else var XhrObj = new XMLHttpRequest(); //Mozilla
     
    	var content = document.getElementById("NomFichierSource_check"); 	//zone d'affichage
    	var srcFile = document.getElementById("NomFichierSource");
    	var statut = document.getElementById("StatutCorpus");
     
     
    	XhrObj.open("POST", "../verification/verif_NomFichierSource.php");
    	//XhrObj.open("POST", "verif_NomFichierSource.php", false);
    	//Ok pour la page cible
    	XhrObj.onreadystatechange = function()
    	{
    		if (XhrObj.readyState == 4 && XhrObj.status == 200) {
    			if (XhrObj.responseText == 'OK') {
    				content.innerHTML='<img src="../images/accepter.png" alt=""/>OK';
    				bNomFichierSource = true; // ok nouveau pseudo
    			} else {
    				content.innerHTML='<img src="../images/refuser.png" alt=""/>Existe';
    				bNomFichierSource = false; // erreur pseudo déjà existant
    			}
    		}
    	}
     
    	XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	XhrObj.send('p='+encodeURIComponent(srcFile.value)+'&s='+encodeURIComponent(statut.value);
     
    }
    Je ne dis pas qu'il n'y a pas une erreur de code dans cette piste, mais je ne peux pas tester de mon côté.

    ERE

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    ça marche impec vraiment merci de ton aide j'apprend beaucoup sur ce forum

    un petit oubli de parenthèse juste ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    XhrObj.send('p='+encodeURIComponent(srcFile.value)+'&s='+encodeURIComponent(statut.value));
    bonne journée

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    @emmanuel.remy :
    Juste une petite remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
    else var XhrObj = new XMLHttpRequest(); //Mozilla
    Est-il vraiment nécessaire de passer par un ActiveX pour les versions de IE (7 et 8) qui implémentent l'objet XMLHttpRequest ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par Bovino Voir le message
    @emmanuel.remy :
    Juste une petite remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
    else var XhrObj = new XMLHttpRequest(); //Mozilla
    Est-il vraiment nécessaire de passer par un ActiveX pour les versions de IE (7 et 8) qui implémentent l'objet XMLHttpRequest ?
    Ce n'est pas mon code, c'est celui de knebhi. C'est hors périmètre pour ce post J'ai modifié le code qui posait souci et qui se rapportait au post.

    ERE

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/05/2009, 12h18
  2. [AJAX] Vérification champ obligatoire
    Par nickoeuh dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2009, 03h40
  3. [MySQL] Vérification champ bdd
    Par tonedeff dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 20/03/2008, 11h08
  4. [AJAX] Vérification de champs de formulaire
    Par hash95 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/01/2008, 09h13
  5. [AJAX] Vérification de champs
    Par boubourse92 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/12/2007, 10h41

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