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] requete ajax dans formulaire d'édition


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] requete ajax dans formulaire d'édition
    Bonjour,

    je vais tenter d'être clair et d'exposé mes besoins le plus clairement possible.

    ce que j'ai actuellement :

    J'ai réalisé un formulaire d'insertion et un formulaire d'édition qui me renvoi les valeurs de la bdd.
    deux champs permettent d'identifier ce que j'appel la fiche :
    - l'identifiant général (ex: Pierre_1)
    - le statut de la fiche (3 états possibles : Transcrit, Vérifié, Vérifié_Anonymisé)
    j'ai également une possibilité d'uploader des fichiers annexes.

    mécanisme du formulaire d'insertion :
    j'ai mis en place un code ajax qui permet de lancer une requete sur les identifiant pour ne pas avoir de doublon.
    cependant, je peux tres bien avoir plusieurs fois le meme identifiant mais à des statut diférents.
    (ex: Pierre_1 Transcrit , Pierre_1 Vérifié , etc.)

    ce que je voudrai réaliser

    dans mon formulaire d'édition j'ai l'identifiant général qui s'affiche et je ne peux pas le modifier.
    je peux modifier les infos que je veux mais aussi le statut.
    en effet ce mode édition permettra sois de corriger certaines valeurs ou dans le cas d'un changement de statut de recréer une nouvelle entrée sans effacer l'ancienne.

    en fait, si ma requete ajax vois que le statut de la fiche existe :
    - je pourrai faire un update de mes infos
    - et l'upload ne sera pas obligatoire donc pas de vérification sur l'upload

    si ma requete ajax m'indique que le statut de la fiche n'existe pas :
    - je vais créer une nouvelle entrée avec les infos
    - l'upload devra etre obligatoire

    au final, je pourrai gérer mon systeme d'édition des fiches et pouvoir l'utiliser pour faciliter la saisie en reprenant des informations antérieures et en passant a une version plus élaborée de la fiche.

    voila pour le gros du mecanismes.
    jespere avoir été clair.

    j'aimerai donc des conseils méthodologiques pour savoir quelle étape j'ai a franchir pour réaliser cela


    merci de 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,

    Je trouve que tu as très bien décrit ton contexte et il n'y a pas grand chose à ajouter... Tu n'as qu'à coder comme tu décris les choses. Tu disposes déjà de ta requête AJAX, donc ce n'est qu'une question de javascript pour modifier le statut de la fiche et le contexte qui fera que tu imposeras ou pas un upload de fichiers.
    Le seul point qui m'interpelle, c'est que si ton utilisateur change le statut de la fiche pour un statut existant déjà en base, ne faut il pas alors charger les informations associées (car a priori ce ne sont pas les mêmes que celles affichées sur le poste client étant donné qu'elles ne sont pas issues du même statut) ?

    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,

    Je trouve que tu as très bien décrit ton contexte et il n'y a pas grand chose à ajouter... Tu n'as qu'à coder comme tu décris les choses. Tu disposes déjà de ta requête AJAX, donc ce n'est qu'une question de javascript pour modifier le statut de la fiche et le contexte qui fera que tu imposeras ou pas un upload de fichiers.
    Le seul point qui m'interpelle, c'est que si ton utilisateur change le statut de la fiche pour un statut existant déjà en base, ne faut il pas alors charger les informations associées (car a priori ce ne sont pas les mêmes que celles affichées sur le poste client étant donné qu'elles ne sont pas issues du même statut) ?

    ERE
    merci ça me rassure si j'énonce clairement la chose c'est que je suis proche du but

    en fait l'utilisateur aura une vue sur les fiches saisies.
    il pourra cliquer cette une fiche , a partir de là les données de la fiche relative au statut seront affichées et modifiable.
    le but est de pouvoir reprendre des infos existante et de pouvoir compléter certains champs qui à un statut X ne seront pas connu. en passant au statut Y elles seront connues et donc la saisie permettra d'éviter de retaper des informations.
    si le statut varie une nouvelle entrée dans la bdd est insérer avec ses upload.
    sinon il s'agit juste d'une update.

    voila tout.
    je vais tenter de pondre un bout de code et de profiter de vos conseils.
    je ne suis pas encore expérimenté.

    merci

  4. #4
    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
    voici un début de code qui ne fonctionne pas encore mais je vais aller par étape. je voudrai déja pouvoir afficher dans la case du champs NomFichierSource un message qui indiquera :
    -upload obligatoire
    - ou upload facultative
    ensuite je mettrai en place tout cela

    mon formulaire d'édition :
    dans ce code je fais une requete pour récupérer les enregistrement correspondant a la bonne fiche. ensuite pour chaque champs j'affiche la valeur. (à noter que la valeur du champs NomFichierSource ne peut etre modifier, j'affiche juste la valeur dans un input hidden)


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <?php
    //récupération de la variable d'URL,
    //qui va nous permettre de savoir quel enregistrement modifier
    $id  = $_GET["id_fiche"] ;
     
    //requête SQL:
    $sql = "SELECT *
                FROM `header_tei`, `locuteurs`
            WHERE `header_tei`.`id_fiche` = ".$id." AND `locuteurs`.`id_fiche`  = ".$id ;
     
    //exécution de la requête:
    $requete = mysql_query( $sql) ;
     
    //affichage des données:
    if( $result = mysql_fetch_object($requete) )
    {
    	?>
     
    <table align="center" width=100% height=55%>
     
    	<tr>
    		<td>
    <form name="insertion" action="modification3.php" method="POST"
    			enctype="multipart/form-data">
    <input type="hidden" name="id_fiche"
    			value="<?php echo($id) ;?>">
     
    		<table bgcolor=white width="100%" border="1" cellspacing="8"
    			cellpadding="2" bordercolor="#CCCC33">
    			<tr>
    				<td align="center"><b><i>Informations générales sur le corpus</i></b></td>
    				<td bgcolor="#006699"></td>
    			</tr>
     
     
    			<tr>
    				<td><b>- Statut du corpus </b></td>
    				<td><?
    				$Statut_corpus = isset($result->Statut_corpus) ? $result->Statut_corpus : '';
    				?> <select name="Statut_corpus" id="StatutCorpus">
    					<option value=""
    					<?php if($Statut_corpus == "") { echo ' selected'; } ?>>---Modifier---</option>
    					<option value="Transcrit"
    					<?php if($Statut_corpus == "Transcrit") { echo ' selected'; } ?>>Transcrit</option>
    					<option value="Verifie_Non_Anonymise"
    					<?php if($Statut_corpus == "Verifie_Non_Anonymise") { echo ' selected'; } ?>>Verifié
    					- Non Anonymisé</option>
    					<option value="Verifie_Anonymise"
    					<?php if($Statut_corpus == "Verifie_Anonymise") { echo ' selected'; } ?>>Vérifié
    					- Anonymisé</option>
    				</select></td>
    			</tr>
     
     
    			<tr>
    				<td><b>- Nom du dossier contenant le corpus informatisé
    				(identifiant)</b></td>
    				<td><b><?php echo($result->NomFichierSource) ;?></b><input
    					type="hidden" name="NomFichierSource"
    					value="<?php echo($result->NomFichierSource) ;?>" onblur="req_NomFichierSource();"> <span
    					id="NomFichierSource_check"></span></td>
    			</tr>
    </form>
    </table>
    </table>


    verifDispoSC.js

    ce code permet de lancer la requete sur les deux champs NomFichierSource et StatutCorpus. il doit afficher en principe un message correspondant au résultat de la requete
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    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
    	var content = document.getElementById("NomFichierSource_check"); 	//zone d'affichage
    	var srcFile = document.getElementById("NomFichierSource");
    	var statut = document.getElementById("StatutCorpus");
     
     
     
     
    	XhrObj.open("POST", "../verif_modif_js/verif_StatutCorpus.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=""/>Upload obligatoire';
    				bNomFichierSource = true; // ok nouveau pseudo
    			} else {
    				content.innerHTML='<img src="../images/refuser.png" alt=""/>Upload facultatif';
    				bNomFichierSource = false; // erreur pseudo déjà existant
    			}
    		}
    	}
     
    	XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	//XhrObj.send('p='+encodeURIComponent(NomFichierSource));
    	XhrObj.send('p='+encodeURIComponent(srcFile.value)+'&s='+encodeURIComponent(statut.value));
     
     
     
     
    }
     
    function testChamps(f) {
    //	bNomFichierSource = false;  on va revalider le champ
    //	req_NomFichierSource(f.NomFichierSource.value);
    	if (!bNomFichierSource) {
    	 alert('L\'identifiant du corpus n\'est pas correct');
    	 return false;
    	}
     
    	return true;
     
     
     
     
     
     
     
    	}

    verif_StatutCorpus.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
    22
    23
    <?php
     
    include("../bdd/connection.php");
     
    //$NomFichierSource = htmlentities(addslashes($_POST['p']));
    //$Statut_corpus = htmlentities(addslashes($_POST['s']));
     
    $NomFichierSource = $_POST['p'];
    $StatutCorpus =  $_POST['s'];
     
     
    if (!empty($NomFichierSource)) {
            //$res = mysql_query("select * from header_tei where NomFichierSource='".$NomFichierSource."'");
      
            $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');
      
      
      
      
    }
    ?>
    pour le moment ça ne marche pas. le problème est que je veux récupérer les valeurs des champs et lancer la requete sur la base.
    en affichant ces champs il est clair que les valeurs existe déja dans la bdd mais imaginons que je change la valeur du statut dans ce cas il faudrai que la requete signale le contraire.

    merci de votre aide

  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
    j'ai corrigé quelques éléments et j'arrive a obtenir le début du comportement que je souhaitais.

    si le fichier existe (nom fichier et statut) alors j'ai un message qui me précise que l'upload est facultative
    sinon l'upload est obligatoire.

    le code ajax et la requete etait correct dans le post précédent.

    il fallait juste corriger deux choses :
    - le champs hidden doit etre text sinon la valeur n'est pas reconnu
    - un id doit etre inséré dans le champ input du NomFichierSource

    merci

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

Discussions similaires

  1. [AJAX] Requete Ajax : accents
    Par Romalafrite dans le forum AJAX
    Réponses: 2
    Dernier message: 11/05/2009, 11h35
  2. [AJAX] requete php dans JavaScript
    Par juliens9 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/11/2007, 13h28
  3. [AJAX] requete sql dans Ajax
    Par nadalator666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/04/2007, 18h02
  4. [VBA] Requete paramétrée dans formulaire
    Par Docsmea dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 12h52

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