Forum de discussion
Forum « Programmation Javascript » (archives)
Re: recuperation et envoi de données
Envoyé: 13 février 2004, 8h21 par Oznog
1. Hum, il fonctionne très bien ton code1
Exemple (j'ai seulement enlevé ce qui ne sert à rien!)
<SCRIPT type=text/javascript>
function test(l,c){
var t = document.getElementById("l"+l+"_c"+c);
window.status=t.value;
}
</SCRIPT>
<table>
<tr><td id=l1_c1 onMouseDown="test(1,1);" value="11">Test 11</td></tr>
<tr><td id=l1_c2 onMouseDown="test(1,2);" value="12">Test 12</td></tr>
<tr><td id=l1_c3 onMouseDown="test(1,3);" value="13">Test 13</td></tr>
<tr><td id=l1_c4 onMouseDown="test(1,4);" value="14">Test 14</td></tr>
</table>
Maintenant, tu peux optimiser ce code (le rendre portable) mais avant il faudrait savoir ce que tu veux réellement faire!
Sinon, pour passer ces valeurs à un serveur tu n'as pas 36 solutions, une seule UN FORMULAIRE, et deux méthodes, GET ou POST. (D'ailleurs, rien dans ton message n'inque pourquoi utiliser tableau au lieu de "checkbox" ou "radio button" QUI ENVERRAIS automatiquement les valeurs!)
Enfin, si tu veux absolument tes valeurs dans une cellule de tableau (table) tu dois passer la valeur dans un élément de formulaire afin qu'elle parte en même temps que le formulaire (après avoir cliqué "soumettre")
Tu peux le faire en "visible"
<input type="text" name="monChampVisible" >
Et dans ta fonction Javascript
Exemple :
document.monFormulaire.monChampVisible.value=t.value;
Normalement on utilise une "champ caché" ou "hidden".
<input type="hidden" name="monChampCache" >
Et lui passer des valeur ainsi :
document.monFormulaire.monChampCache.value=t.value;
Tout ça si ton formulaire s'appelle bien "monFormulaire"!
<form name="monFormulaire">
=============
2. Pour un tableau (array). Ce n'est pas possible. Les valeurs d'un formulaire, exactement comme une page HTML, l'en-tête HTTP, tant en méthode GET (jumelé avec le URL) qu'avec la méthode POST (parallèle à l'en-tête HTTP). NE SONT QU'UNE SIMPLE CHAÎNE DE CARACTÈRES.
Cette chaine est ensuite décodé, par le navigateur, par un moteur serveur, un telephone sans fil ou tout autre chose qui récupère une chaine HTTP!
Voir MéthodeHTTP
La récupération dépend donc du moteur qui récupère la chaîne étant TOUJOURS LA MÊME. Certains font la job, comme le ASP avec request.querystring("monChampCache") ou request.form("monChampCache") ou simplement en PHP $monChampCache mais d'autre ne font absolument rien et tu dois le faire manuellement comem le Javascript "Récupérer un formulaire en Javascript" (http://www.trucsweb.com/Javascript/trucs.asp?no=303&type=5).
Alors comment passer un ARRAY (et bien comme un bon CSV, il suffit d'utiliser un séparateur entre chaque valeur et de décoder le tout à la réception.
monTableau=val1|val2|val3|val4|
Un tableau à deux dimensions? un deuxième séparateur :
monDoubleTableau=vala1|vala2|vala3~valb1|valb2|valb3
Bon, pour récupérer ça, il suffit de faire un "split" sur le séparateur "|" de la chaîne monDoubleTableau puis un autre "split" sur le séparateur "~" avec chaque résultat.
MAIS MAIS MAIS, avant d'avoir toute la communauté PHP sur le dos, le PHP a intégré une fonctuionnalité pour faire ce "split" automatiquement en autant que tu ajoute le "$" devant le nom de champ (hidden ou text). MAIS CONTRAIREMENT À CE QUE BEAUCOUP PENSE, ce n'est pas un tableau (array) qui est passé, mais une chaîne avec des séparateurs que PHP "split" de façon transparente! D'ailleurs il ne peut pas le faire sur un tableau à double dimension, ce que manuellement on peut faire et même à dimensions illimitées en principe!
Ciao
Oznog
Réponses
|