comment gerer le onChange en Perl ? [Perl / JS] - Programmation
Marsh Posté le 07-03-2002 à 13:04:30
tu ne comprends pas bien la différence entre script serveur et script client apparemment. si tu changes une variable sur le client, il faut la transmettre au serveur (script perl) en rechargant la page (ou une frame, ou une iframe).
problème de design à la base donc ...
hihi
Marsh Posté le 07-03-2002 à 13:12:27
Citation : tu ne comprends pas bien la différence entre script serveur et script client apparemment. si tu changes une variable sur le client, il faut la transmettre au serveur (script perl) en rechargant la page (ou une frame, ou une iframe). |
Je sais bien que le JS est execute cote client et le GCI (Perl) est execute cote serveur. Mais alors comment resoudre mon pb ? Je veux envoyer des infos avec mon formulaire mais ces infos ne sont pas contenues dans la liste de mon form (cette liste est juste une representation de ces infos) mais dans un tableau de structures. Il faut bien que je me positionne au bon endroit dans mon tableau pour envoyer les bonnes donnees...
Une autre solution (meilleure) serait de m'expliquer comment passer un tableau de structures d'un script a un autre (je n'y arrive pas avec des hidden fields).
Tu vois ce que je veux faire ou pas ?
hihi
Marsh Posté le 07-03-2002 à 13:17:14
>> Tu vois ce que je veux faire ou pas ?
pas vraiment. pour passer un tableau de structures, il suffit de convertir la bestiole en string côté js et de la décoder côté perl ensuite (avec un seul input hidden).
hihi
Marsh Posté le 07-03-2002 à 13:34:10
Je schematise alors :
<fichier config.conf>
OBJECT
{
"Suppression des SE rezo1"
DEBUT: 15:30
FIN: 16:30
SUP NT rezo1
SUP LINUX rezo1
SUP UNIX rezo1
}
OBJECT
{
"Suppression des Wins sur tous les rezos"
DEBUT: 20:00
FIN: 21:00
SUPP 9x all
SUPP NT all
}
etc ...
chaque contient 1 et 1 seul "champ" description, debut et fin. Chaque objet contient 1 ou plusieurs champ supp.
Ce fichier est parsé est les infos sont placees dans un tableau de struct ->
struct objet =>
{
description => '$',
start => '$',
end => '$',
suppresses => '$',
};
struct Suppress =>
{
application => '$',
rezo => '$',
};
ensuite je crée une liste deroulante ->
15:30 16:30 "Suppression des SE rezo1"
20:00 21:00 "Suppression des Wins sur tous les rezos"
etc ...
le but de cette appli est de modifier le contenu du fichier de conf en passant par une interface graphique (autrement il suffirait d'ouvrir le fichier avec vi). L'utilisateur va choisir "l'enregistrement" du fichier qu'il veut modifier en le selectionnant dans la liste. Une nouvelle fenetre (un nouveau script) s'ouvre contenant les infos de cet enregistrement dans des textboxes et l'utilisateur peut les modifier et sauvegarder les modifs dans le fichier de conf.
C'est plus clair ?
Je ne vais quand meme pas generé mon tableau de structs dans le premier script puis ensuite une nvelle fois dans mon 2eme ? si ? Je peux donc soit passer le tableau de structs en param ou alors passer seulement les infos de l'enregistrement a modifier...
Que faire ?
hihi
Marsh Posté le 07-03-2002 à 14:21:53
tu n'as pas besoin de structures pour ça. tu peux séparer ta page en deux frames : la première pour choisir l'entrée à modifier (ou pour en créer une nouvelle), la seconde qui se charge après avoir choisi l'action à effectuer dans la première. chaque frame est un script (perl ou autre).
pour charger la seconde, tu n'as besoin que d'un id : par ex la position de l'entrée dans le fichier, ou sa description (je choisirais la position). le script choppe l'entrée en question, puis créé le formulaire : <input name='DEBUT' value='15:30'>, <input name='SUP' value='...'> etc., avec un input hidden qui indique la position dans le fichier (ou le nom de la description donc) de l'entrée que tu modifies.
le target du formulaire est un script perl, qui s'occupera d'updater l'entrée du fichier correspondant. c'est tout ! sachant que si plusieurs utilisateurs veulent modifier la même entrée, il faudrait prévoir un mécanisme de lock avec un autre fichier ou dans une db.
c'est tout, je vois pas bien ce qui te bloque.
hihi
Marsh Posté le 07-03-2002 à 14:23:05
et bien sûr, tu peux utiliser le même script pour faire toutes tes actions, vu que ça a l'air assez simple. au lieu de charger page1.pl, page2.pl, page3.pl, tu charges page.pl?cmd=edit1, page.pl?cmd=editform, etc.
hihi
Marsh Posté le 07-03-2002 à 15:44:14
Je ne suis pas sur de bien suivre ton raisonnement...
Comment je crée ma liste d'objets a editer sans les avoir mis dans un tableau auparavant ? Ca ne me parait pas pratique du tout de travailler directement sur le fichier... Mon idée c'etait de travailler sur les infos du tableau et a la fin recopier le contenu du tableau dans mon fichier.
hihi
Marsh Posté le 07-03-2002 à 15:55:36
tu veux charger TOUTES les infos du fichier dans une page ? si tu aimes te compliquer la vie, pourquoi pas ...
pour choisir quel objet éditer, il faut évidemment parser le fichier en entier avant de pouvoir afficher la première frame. puis créer une liste. puis sur le onchange de cette liste, passer le 'selectedIndex' à la seconde frame. qui lit les infos du fichier et créé le formulaire.
ps : c'est le genre d'outil qui devrait faire un backup du fichier avant le réécrire.
hihi
Marsh Posté le 07-03-2002 à 16:03:49
Mouais... je sais pas trop quoi penser. Elle me parait louche ta solution Tu ne saurais pas plutot comment passer un tableau de structs en parametres ?
Citation : ps : c'est le genre d'outil qui devrait faire un backup du fichier avant le réécrire. |
Ca c'est pas un pb : l'appli travaille sur une copie locale du fichier puis ensuite le renvoie sur le serveur.
hihi
[jfdsdjhfuetppo]--Message édité par impulse--[/jfdsdjhfuetppo]
Marsh Posté le 07-03-2002 à 16:08:34
comme dit plus haut, une string.
ça te parait louche ? pas à moi enfin si c'est parmi tes premiers scripts serveur, ça peut sembler bizarre, mais en fait ça ne l'est pas (du tout )
hihi
Marsh Posté le 07-03-2002 à 16:14:41
Ouais enfin quand meme -> copier tout le contenu d'un fichier dans une string ça me parait bien lourd. Enfin bon, je suis newbie alors peut etre que t'as raison...
Je vais voir ce que je peux faire avec ça (meme si j'ai pa l'impression d'avoir bcp avancé ).
MERCI YOUDONTCARE !
hihi
Marsh Posté le 07-03-2002 à 13:01:31
hi.
J'ai une liste deroulante. Je voudais savoir a n'importe quel moment quelle ligne est selectionnée par l'utilisateur. En JS on peut utiliser un evenement onChange pour gerer ça... mais comment faire en Perl (je voudrais que ma variable $index = 1 quand window.document.form.list.selectedIndex = 1) ?
Qqun a une idée ?
hihi