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] Tableau en paramètre


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [AJAX] Tableau en paramètre
    Bonjour à toutes et à tous !

    Je fais encore appel à vous car j'ai de nouveau besoin de vos lumières/connaissances.

    J'ai mis un screen de mon formulaire en pièce jointe.
    Ci-dessous je vous mets les parties concernées par ce formulaire.

    Fonction de création :
    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
    function Creer(quoi)
    {
    	switch (quoi)
    	{
    		case "Equi" :
    			divf='<form method="post"><input id="ideq" type="hidden" readonly="readonly" name="ideq" value=""/>';
    			divf+='<label for="nomeq">Nom <span class="etoile">*</span>: </label><input id="noeq" type="text" name="nequ" value=""/><br/><br/>';
    			divf+='<label for="nomdi">Directeur <span class="etoile">*</span>: </label>';
    			divf+='<SELECT id="sdir" name="ndir[]" onchange="this.options[this.selectedIndex].value">';
    				ListerPers('Dir',0);
    			divf+='</select><br/><br/>';
    			divf+='<div id="dispo">';
    			divf+='<span class="titre">Personne(s) disponible(s)</span>';
    			divf+='<SELECT id="sdisp" name="persdisp[]" size="10" ondblclick="Transferer(\'A\', this)">';
    				ListerPers('Disp',0);
    			divf+='</select></div>';
    			divf+='<div id="pres">';
    			divf+='<span class="titre">Personne(s) dans l\'équipe</span>';
    			divf+='<SELECT id="spres" name="perspres[]" size="10" ondblclick="Transferer(\'E\', this)">';
    				ListerPers('Pres',0);
    			divf+='</select></div>';
    			divf+='<div class="expliq">Double cliquez dans la liste correspondante pour ajouter/enlever une personne dans l\'équipe</div>';
    			divf+='</form><br/><br/>';
    			divf+='<label><span class="txtetoile">* Champs obligatoire</span></label>'
    			div='<input type="Button" value="Valider" onclick="Valider(\'C\', \'Equi\')">';
    			break;
    La fontion qui me permet de récupérer la liste des personnes selon le cas d'appel :
    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
    67
    68
    function ListerPers(qui, nb)
    {
    	//alert ('qui : '+qui + ' nb : '+nb);
    	var a_listpers=getxhr();
    	a_listpers.open("POST","php/lister_pers.php",true);
    	a_listpers.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	a_listpers.onreadystatechange = function()
    	{
    		if(a_listpers.readyState == 4)
    		{
    			if(a_listpers.status == 200)
    			{
    				if (a_listpers.responseText!="-1")
    				{
    					result=a_listpers.responseText.split('*');
     
    					if (nb==0 && qui=="Dir")
    					{
    						getid('sdir').innerHTML='<OPTION value="0" SELECTED>Sélectionner un directeur';
    					}
     
    					for(i=0;i<result.length-1;i++)
    					{
    						enreg=result[i].split(';');
     
    						if (nb==enreg[0] && qui=='Dir')
    						{
    							getid('sdir').innerHTML+='<OPTION value="'+enreg[0]+'" SELECTED>'+enreg[1]+' '+enreg[2];
    						}
    						else
    						{
    							switch (qui)
    							{
    								case "Dir" :
    									getid('sdir').innerHTML+='<OPTION value="'+enreg[0]+'">'+enreg[1]+' '+enreg[2];
    									break;
    								case "Disp" :
    									getid('sdisp').innerHTML+='<OPTION value="'+enreg[0]+'">'+enreg[1]+' '+enreg[2];
    									break;
    								case "Pres" :
    									getid('spres').innerHTML+='<OPTION value="'+enreg[0]+'">'+enreg[1]+' '+enreg[2];
    									break;
    							}
    						}
    					}
    				}
    				else
    				{
    					switch (qui)
    					{
    						case "Dir" :
    							getid('sdir').innerHTML='<OPTION value="0" SELECTED>Aucune personne dans la base';
    							break;
    						case "Disp" :
    							getid('sdisp').innerHTML='<OPTION value="0" SELECTED>Il n\'y a personne de disponible';
    							break;
    						case "Pres" :
    							//getid('spres').innerHTML='<OPTION value="0" SELECTED>Il n\'y a personne dans l\'équipe';
    							break;
    					}
    				}
    			}
    			else
    				alert("Error code " + a_listpers.status);
    		}
    	};
    	a_listpers.send("qui="+qui);
    }
    La fonction qui me permet de faire passer les personnes d'une liste à l'autre :
    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
    function Transferer(sens, liste)
    {
    	var existe=0;
     
    	if (sens=='A')
    	{
    		for (i=1;i<getid("spres").length;i++)
    		{
    			if (getid("spres").options[i].text==liste.options[liste.selectedIndex].text)
    			{
    				existe=1;
    			}
    			else
    			{
    				if (existe==1)
    				{
    					existe=1;
    				}
    				else
    				{
    					existe=0;
    				}
    			}
    		}
     
    		if (existe==0)
    		{
    			var option= new Option(liste.options[liste.selectedIndex].text, liste.options[liste.selectedIndex].value);
    			var lg=getid('spres').length;
    			//alert ('lg pres : '+lg);
    			getid('spres').options[lg]=option;
    			liste.options[liste.selectedIndex]=null;
    		}
    		else
    		{
    			alert ('Cette personne est déjà sélectionnée.');
    		}
    	}
    	else
    	{
    		var option= new Option(liste.options[liste.selectedIndex].text, liste.options[liste.selectedIndex].value);
    		//alert ('lg dispo : '+getid('sdisp').length);
    		getid('sdisp').options[(getid('sdisp').length)]=option;
    		liste.options[liste.selectedIndex]=null;
    	}
    }
    La fonction de validation :
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    function Valider(traitement, quoi)
    {
     
    	param="trait="+traitement+"&obj="+quoi;
     
    	switch (quoi)
    	{
    		case "Equi" :
    			param+="&ideq="+getid('ideq').value+"&nomeq="+getid('noeq').value;
    			//Récupération du directeur choisi
    			dir=getid('sdir').options[getid('sdir').selectedIndex].value;
    			break;
    		case "Cate" :
    			param+="&idca="+getid("idca").value+"&nomca="+getid("noca").value;
    			break;
    		case "Conse" :
    			param+="&idco="+getid("idco").value+"&nomco="+getid("noco").value;
    			break;
    		case "Pays" :
    			param+="&idp="+getid("idp").value+"&sigle="+getid("sigp").value+"&nomp="+getid("nomp").value;
    			break;
    		case "Pers" :
    			//Récupération de la profession et de la ville sélectionnées
    			profselec = getid('spro').options[getid('spro').selectedIndex].value;
    			if (getid('novi').options[getid('novi').selectedIndex].value==0)
    			{
    				vilselec=Math.floor((Math.random()*36000)+1);
    			}
    			else
    			{
    				vilselec=getid('novi').options[getid('novi').selectedIndex].value;
    			}
     
    			//Vérification âge de la personne
    			var annee= new Date();
    			var dtenais=getid('ddnpe').value;
    			var annais=dtenais.substring(6,10);
     
    			if((annee.getFullYear()-annais) < 20)
    			{
    				getid("msg").innerHTML="Impossible de créer cette personne : elle a moins de 20 ans.";
    				getid("msg").style.color="#FF0000";
    				getid("msg").style.visibility='visible';
    				Creer(quoi);
    				break;
    			}
     
    			param+="&idpe="+getid("idpe").value+"&nompe="+getid("nope").value+"&pnompe="+getid("pnope").value+"&ddn="+dtenais+"&tel="+getid("telpe").value+"&adr="+getid("adrpe").value;
    			param+="&email="+getid("emape").value+"&idv="+vilselec+"&idprof="+profselec;
    			break;
    		case "Prof" :
    			param+="&idpr="+getid("idpr").value+"&nompr="+getid("nopr").value;
    			break;		
    	}
     
    	var a_val=getxhr();
    	a_val.open("POST","php/valider.php",true);
    	a_val.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	a_val.onreadystatechange = function()
    	    { 
    	        if(a_val.readyState  == 4)
    	        {
    	            if(a_val.status  == 200)	
    				{
    					if (a_val.responseText=='msg1')
    					{
    						getid("msg").innerHTML="Vous devez saisir les champs obligatoires.";
    						getid("msg").style.color="#FF0000";
    						getid("msg").style.visibility='visible';
    						Creer(quoi);
    					}
    					else
    					{
    						Gerer(quoi);
    					}
    	            }
    				else 
    	                alert("Error code " + a_val.status);
    	        }
    	    };
    	a_val.send(param);	
    }
    Mon soucis principal est que je souhaiterai passer tous les noms des personnes qui sont dans l'équipe en paramètre du bouton valider. J'ai vu/lu qu'en Ajax ce n'était pas possible qu'il fallait faire du Json mais je n'y comprends pas grand chose et du coup je ne vois pas comment l'implanter dans mon code. Est-ce qu'il faut que je crée une fonction de validation pour CE formulaire ou est-ce que je peux adapter ma fonction Valider ? Si oui, comment ?

    Mon second problème que j'ai résolu en abandonnant l'idée (mais sait-on jamais si quelqu'un sait ... ^^) est que je voulais quand on sélectionne un directeur que son nom apparaisse dans la liste des personnes dans l'équipe et du coup qu'il disparaisse des personnes disponibles.

    Voilà, merci de m'avoir lue et de vos réponses.
    Images attachées Images attachées  

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

Discussions similaires

  1. Transmettre un tableau en paramètre (Ajax/Jquery)
    Par maxwel56 dans le forum jQuery
    Réponses: 30
    Dernier message: 24/06/2015, 13h08
  2. [AJAX] Tableau en paramètre pour méthode AJAX
    Par Florian_mbf dans le forum AJAX
    Réponses: 3
    Dernier message: 21/05/2013, 11h42
  3. [AJAX] Passer en paramètre ajax un tableau javascript
    Par nicolas2603 dans le forum AJAX
    Réponses: 5
    Dernier message: 13/01/2012, 14h09
  4. Passage de tableau en paramètre...
    Par Doomi dans le forum C
    Réponses: 14
    Dernier message: 20/10/2005, 14h08
  5. Réponses: 3
    Dernier message: 24/09/2005, 09h34

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