Récupérer des valeurs dans des input

Résolu/Fermé
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 - 17 mai 2013 à 17:50
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 - 29 mai 2013 à 09:35
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
Modifié par janmar le 23/05/2013 à 16:47
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 16:47
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
23 mai 2013 à 17:08
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 17:12
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
Modifié par jeremy.s le 23/05/2013 à 17:27
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 17:39
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
23 mai 2013 à 17:43
merci, je vais essayer tout ça.
0
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
23 mai 2013 à 18:05
Ç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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 20:50
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
23 mai 2013 à 21:20
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 21:38
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
Modifié par janmar le 23/05/2013 à 22:20
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 22:52
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
23 mai 2013 à 23:34
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
23 mai 2013 à 23:46
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
24 mai 2013 à 18:55
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
24 mai 2013 à 20:11
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
25 mai 2013 à 11:11
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
25 mai 2013 à 21:43
Voir plutôt le message suivant
0
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
25 mai 2013 à 15:41
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
Modifié par janmar le 26/05/2013 à 20:44
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