Récupérer des valeurs dans des input

Résolu
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -  
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je récupère des donnees de ma base de données et je les affiche dans des input par une boucle while .
Sur ces données (nombreuses ? 600) lorsque je clique sur une case donnée, je la fais changer de couleur de fond par un script javascript qu'un programmeur m'a fourni gentiment.
(je suis absolument et totalement novice en JS)
Je souhaite enregistrer les valeurs modifiées de mes cases (couleur, texte).
Processus :
Je modifie mes input (value, color° de toutes les cases souhaitées et j'enregistre l'ensemble.
Comment procéder pour l'enregistrement des modifs effectuées ?????

53 réponses

janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
excuse moi, je ne comprends pas ta demande.

Je crée un input type "hidden" avec name = "couleur<?php echo $donnees['ordre'];?>"
ordre varian de 1 à 675,
Je crée bien des input(s) qui s'appellent couleur1, le suivant couleur2 etc... ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Quand tu testes ton code, la où tu fais tes changements de couleurs et tu valides ton formulaire. Tu fais clique droit --> affichier le code source de la page (suivant le navigateur la phrase n'est pas pareil)
Et tu cherches ton <form> et copie colle les premiers td
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Excuse-moi, je ne t'avais pas compris.
Peut-être serait-il plus facile que je t'envoie l'adresse des 2 fichiers concernés par message privé, tu aurais ainsi tout sur la main ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Pourquoi pas ce peut servir, mais les premiers td du form devrait me suffir normalement !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ok donc voici un tr :
<tr>

<span class="date"><td>2013-04-01</td></span>

<span class="a"><td><input type ="text" name = "nom1" value = "1" id="centre" class="color1" onclick="switchColor(this)" size="25" maxlength="28" /></td></span>

<input type="hidden" name="couleur1" onload="chargerCouleur(this)" value="" />

<span class="b"><td><input type ="text" name = "nom2" value ="2" class="color1" id="centre" onclick="switchColor(this)" size="25" maxlength="28" /></td></span>

<input type="hidden" name="couleur2" onload="chargerCouleur(this)" value="" />

<span class="c"><td><input type ="text" name = "nom3" value ="3" class="color1" id="centre" onclick="switchColor(this)" size="25" maxlength="28" /></td></span>

<input type="hidden" name="couleur3" onload="chargerCouleur(this)" value="" />

</tr>
 

Je l'écris juste à titre indicatif pour moi ;-)
Je fais une fonction js et je la poste quand j'ai fini :)

Jérémy
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Voilà,

Alors il faut que tu mette le input type="hidden" dans le td ! (et plus besoin du chargerCouleur)

Et essaye avec ce code :
<script>
jQuery(function($){
$('tr').each(function(){

$(this).find('td').each(function(){

var c = $(this).find('input type ="text"').attr('class');
$(this).find('input type="hidden"').attr('value', c);

});

});

});
</script>
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
merci, je vais essayer tout ça.
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Ça ne va toujours pas.
J'ai simplifié mon exemple essai10.php pour ne laisser qu'une seule colonne, ce sera plus lisible.
Le nouveau fichier s'appelle essai11.php que tu peux utiliser :

J'ai bien mis l'INPUT dans le td.
J'ai changé le script dans le head.

Le résultat est le même : pas de valeur de couleur.
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
testé en local sur essai11.php et ca marche :

<script>
jQuery(function($){
$('td').each(function(){
var c = $(this).find(':first-child').attr('class');
$(this).find(':nth-child(2)').attr('value', c);
});

});
</script>

Attention : Comme les modif du js se sont après le chargement de la page, regarder le code source ne sert à rien tu ne verras pas les nouvelles valeurs des value des input type="hidden"

Donc essaye ca et dit moi :)
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
moi je ne récupère rien du tout :
couleur1 =
couleur2 =
couleur3 =
Même lorsque j'envoie le formulaire sans changer la couleur, je ne récupère même pas la couleur verte qui est pour tous les Input à l'origine. color1 = green.

J'ai essayé de supprimer dans le hidden l'appel de la fonction onload="chargerCouleur, mais c'est pareil.

Peux-tu regarder le source de essai11. Peut-être trouveras-tu une anomalie ?
Moi, je ne vois rien d'anormal par rapport à ce que tu m'as conseillé.
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Oubli le onload et le chargerCouleur, tu peux carément les enlevé.

Quand je vais sur essai10 ou 11 il n'y a aucun chagement c'est normal ?
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Non, je ne comprends pas pourquoi tu ne trouves pas de changements.
Par contre je fais mes essais exclusivement sur le essai11 qui est plus lisible. Lorsque vela marchera, je transformerai le essai10 en conséquence.
J'ai bien ton dernier script dans le head de essai11.
<script>
jQuery(function($){
$('tr').each(function(){

$(this).find('td').each(function(){

var c = $(this).find('input type ="text"').attr('class');
$(this).find('input type="hidden"').attr('value', c);

});

});

});
</script>

J'ai enlevé aussi le onload et le chargercouleur
J'ai même fermé complètement Firefox, puis remis en route après avoir vidé le cache.
Dans le source de essai11, j'ai bien la fonction JQuery ci-dessus.
Peux-tu regarder à nouveau le source essai11 ?

le code de traitement2 est toujours :
$nb = 1; 
while ($nb <= 675)
{
 $nomvariable = 'nom'.$nb;
 $color = 'couleur'.$nb;
 echo $nomvariable.','.'valeur = '.$_POST[$nomvariable].','.$color.' = '.$_POST[$color];?><br><?php
 $nb = $nb +1;
}
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
C'est ca mon dernier script :

<script>
jQuery(function($){
$('td').each(function(){
var c = $(this).find(':first-child').attr('class');
$(this).find(':nth-child(2)').attr('value', c);
});
});
</script>


Tu as encore l'ancien qui est :

<script>
jQuery(function($){
$('tr').each(function(){
$(this).find('td').each(function(){
var c = $(this).find('input type ="text"').attr('class');
$(this).find('input type="hidden"').attr('value', c);
});
});
});
</script>

0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Excuse moi de mon inattention. Je suis désolé de gaspiller ton temps comme ça.
Aorès modif, je reçois pour tous les input la valeur
couleur1 = color1
couleur2 = color1
couleur3 = color1
couleur4 = color1 etc....
color1 est la valeur d'origine de l'input ---> .color1 { background:green; }

On dirait qu'il ne change pas la valeur de la couleur avec le onclick malgré que visuellement on voit la couleur changer ?...
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Oui alors j'ai anticipé ca !
Il faut que tu mettes mon script dans une fonction, et tu l'appel dans ta fonction switch color ;-)

0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
oui, mais voilà, je ne sais absolument pas faire ça !....
J'avoue ma complète ignorance en JS. La fonction switch dont je me sers m'a été fournie sur un forum.

Encore un petit coup de main s'il te plaît ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Pas de problème ;-)

<script>
jQuery(function($){

majInput();

function majInput(){
$('td').each(function(){
var c = $(this).find(':first-child').attr('class');
$(this).find(':nth-child(2)').attr('value', c);
});
}
});

</script>


<script type="text/javascript">
function switchColor(e) {
e.className = "color" + ((e.className.substring(5)%3)+1)
majInput();
}
</script>

0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour,
Je ne comprends pas bien l'appel du script dans la fonction switchColor ?... et pourquoi les fonctions majInput et switchColor sont indépendantes dans le head puisque chacune est entourée de <script> et </script>.

J'ai mis ton script dans le head.
Dans l'input j'ai essayé d'écrire successivement :
onclick="switchColor(this)" ou
onclick="MajInput(this)"

Ça ne va toujours pas, tous les retours font color1.
Tu peux essayer dans essai11.

Je viens de m'apercevoir que color1 étant à l'origine la couleur de tous les input car dans l'input j'ai mis class="color1", la valeur que l'on reçoit est color1, ce qui indique qu'après un onclick l'affichage de la couleur change bien sur l'écran, mais la valeur transmise dans le hidden n'est pas changée.
Si j'enlève le class="color1", les cases sont blanches à l'origine. je fais le click, la couleur change mais la valeur transmise est RIEN.
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Voir plutôt le message suivant
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Bon, je commence à y voir un peu plus clair dans l'appel de la fonction. Effectivement, dans le onclick=switchColor, on appelle bien la fonction switchColor qui elle-même appelle majInput.

Ne serait-ce pas par hasard la dénomination de la variable que j'attends qui serait erronnée ? J'attends des variables qui s'appellent couleur1... couleur2... couleur 3 etc..
Or, je ne comprends pas dans la fonction majInput comment est nommée la variable ?
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
En fouinant dans la console d'erreurs de firefox, je trouve une erreur JS lorsque j'exécute essai11 .
En cliquant dans une case j'ai l'erreur :
[20:04:18,358] ReferenceError: majInput is not defined

N'est-ce pas là la cause du problème ?
0