Bonjour à tous,
Dans le cadre du développement de mon logiciel de front office, je voudrais ajouter une fonction à mes scripts.
Tous mes champs ont un nom et pour chacun d'entre eux, la valeur qu'ils contiennent, est stockée dans une variable session portant le même nom.
Ce que j'aimerais faire est que lorsque le champ input ou le select perd la focal par un tab ou que l'utilisateur click sur le champ suivant, une fonction ajax mette automatiquement à jour la variable session du champ ou du select précédent.
Merci par avance.
utilise jQuery , ça sera plus pratique.

En supposant que tous tes champs soient de la forme

<input class="autoupdate" rel="nomvariable" />

mets un script js :

$('.autoupdate').blur(function()
{
 var nomvariable = $(this).attr('rel');
 var valeur = $(this).attr('value');
 $.ajax({
   type: "POST",
   url: "saveVariable.php",
   data: {'nom':nomvariable,'valeur':valeur},
   success: function(msg){
    // mets ce ici l'action que tu veux en cas de succès
if(msg=='ok')
     alert( "Variable enregistrée" );
else
     alert( msg );

   }
 });
});


et crée ensuite le fichier
saveVariable.php :

<?php
session_start();

// code pour vérifier que les valeurs existent
if(!isset($_POST['nom']) || !isset($_POST['valeur']) )
die('pas assez de variables');

// mets éventuellement ici un code pour vérifier que les valeurs sont correctes

$_SESSION[$_POST['nom']]=$_POST['valeur'];

?>


voula Smiley smile
je regarde ça et je te redis.
toutefois j'ai une petite question :
tu fais appel à : class="autoupdate"
cela va-t-il poser un probleme si dans input j'ai un autre class du style : class="styledemonchamp" ?
Bonne soirée
Modifié par kiliwilly (22 May 2010 - 20:47)
Non... j'ai mis "autoupdate", j'aurais pu mettre "garry", ou "salut", ça aurrait été la même...
Cette classe css n'est là uniquement pour pouvoir utiliser

$('.autoupdate')


Qui sélectionne tous les éléments de la page ayant la classe "autoupdate".

Donc tu peux changer le code et mettre class="styledemonchamp".
Mais n'oublie pas alors de mettre aussi $('.styledemonchamp') dans le js.

Ceci dit, tu peux spécifier plusieurs classes css pour un élément en les séparant d'un espace. Ex :
<input class="autoupdate styledemonchamp" rel="nomvariable" /> 
désolé je me suis mal exprimé. il fallait dire "de style" à la place de "du style" ou style fait référence à une feuille css.
en bref :

<input class="autoupdate" rel="nomvariable" class="mafeuilledestyleinput"/>

je peux pas avoir deux class dans cet input ?!

de plus, je me demandais si l'utilisation de onblur n'aurait pas été plus efficace en faisant appel à une fonction javascript ?
kiliwilly a écrit :

<input class="autoupdate" rel="nomvariable" class="mafeuilledestyleinput"/>

je peux pas avoir deux class dans cet input ?!


Si... on s'est bien compris. Tu peux, mais avec la syntaxe suivante :
<input class="autoupdate mafeuilledestyleinput" rel="nomvariable" />


Quand à
kiliwilly a écrit :

de plus, je me demandais si l'utilisation de onblur n'aurait pas été plus efficace en faisant appel à une fonction javascript ?


Je n'ai pas tout à fait compris... tu veux dire en ne faisant appel qu'à du javascript, sans appel via ajax à un fichier php ?
Si, tu peux... en utilisant des cookies par exemple !
Mais dans ce cas, le serveur ne saura jamais que la variable a été enregistrée Smiley ohwell

Ca dépend de ce que tu veux faire, quoi !

Edit : je me suis mal exprimé : Le serveur ne sera pas "notifié" du changement. Mais il pourra bien sur lire la variable dans le cookie.
Bref.
Regarde du côté des cookies, quoi Smiley cligne
Modifié par icareo (24 May 2010 - 15:46)