OVH Cloud OVH Cloud

Windows PopUp et Formulaire

4 réponses
Avatar
eric
Je dispose d'une fenêtre de saisie complète avec de nombreux formulaires.

Dans cette fenêtre, l'une des colonnes doit contenir des descriptions de
personne. Or je n'ai pas assez de place pour tout afficher à l'écran.

Mon idée serait donc d'afficher uniquement le minimum et de permettre
l'affichage complet via un bouton dans une fenêtre popup.

Pour l'affichage aucun souci, une requête sur ma Base de Données me
permettra de passer en paramètre les données à afficher.

Par contre pour la saisie, il faut que je transmette les informations
recueillies dans ma fenêtre POPUP à ma fenêtre mère.
-> 1er problème
que je pourrais résoudre en renvoyant une requête sur la fenêtre mère
mais 2nd problème :
la fenêtre mère peut possèder des informations que je n'ai pas encore
pris en compte (aucune activation du submit final) et que je ne veux pas
perdre (données saisies dans les formulaires).

3ème problème : comment réafficher les données transmises par la fenêtre
popup sans pour autant perdre les données saisies dans la fenêtre mère ?

J'espère avoir été clair ...

Pour ceux qui connaissent, j'aimerai réaliser l'équivalent du bouton ...
que l'on trouve dans de nombreux logiciels.

Par avance Merci

Eric

4 réponses

Avatar
ASM
Je dispose d'une fenêtre de saisie complète avec de nombreux formulaires.


Aïye ! ça doit faire mal.

Dans cette fenêtre, l'une des colonnes doit contenir des descriptions de
personne. Or je n'ai pas assez de place pour tout afficher à l'écran.


Un écran qu'a perdu ses ascenseurs ?

Mon idée serait donc d'afficher uniquement le minimum et de permettre
l'affichage complet via un bouton dans une fenêtre popup.


complet de *la* description de "la" personne

Pour l'affichage aucun souci, une requête sur ma Base de Données me
permettra de passer en paramètre les données à afficher.

Par contre pour la saisie, il faut que je transmette les informations
recueillies dans ma fenêtre POPUP à ma fenêtre mère.


et ? où est le pb ?

dans l'popup on a qque chose du genre :

<input name="gros_nez"
onchange="opener.document.monform.gros_nez=this.value">

-> 1er problème
que je pourrais résoudre en renvoyant une requête sur la fenêtre mère


ben non ... pas une requête, tu remplis le form à distance voilà tout.

mais 2nd problème :
la fenêtre mère peut possèder des informations que je n'ai pas encore
pris en compte (aucune activation du submit final) et que je ne veux pas
perdre (données saisies dans les formulaires).


et pourquoi veux-tu que ça se perde ?
(elle est toujours là, ouverte en arrière plan)

3ème problème : comment réafficher les données transmises par la fenêtre
popup sans pour autant perdre les données saisies dans la fenêtre mère ?


Pas ni rien compris quoi toi dire.

à quoi sert le popup si ce n'est *justement* à aider à remplir le form ?

J'espère avoir été clair ...


C'est plutôt la méthode telle que tu sembles l'envisager qui n'est pas
claire.

Pour ceux qui connaissent, j'aimerai réaliser l'équivalent du bouton ...
que l'on trouve dans de nombreux logiciels.


Ha oui ! le bouton : Démarrer --> Eteindre l'ordinateur ?

Avatar
eric
ASM wrote:
Je dispose d'une fenêtre de saisie complète avec de nombreux formulaires.


Aïye ! ça doit faire mal.

Dans cette fenêtre, l'une des colonnes doit contenir des descriptions
de personne. Or je n'ai pas assez de place pour tout afficher à l'écran.


Un écran qu'a perdu ses ascenseurs ?

Mon idée serait donc d'afficher uniquement le minimum et de permettre
l'affichage complet via un bouton dans une fenêtre popup.


complet de *la* description de "la" personne

Pour l'affichage aucun souci, une requête sur ma Base de Données me
permettra de passer en paramètre les données à afficher.

Par contre pour la saisie, il faut que je transmette les informations
recueillies dans ma fenêtre POPUP à ma fenêtre mère.


et ? où est le pb ?

dans l'popup on a qque chose du genre :

<input name="gros_nez"
onchange="opener.document.monform.gros_nez=this.value">

-> 1er problème
que je pourrais résoudre en renvoyant une requête sur la fenêtre mère


ben non ... pas une requête, tu remplis le form à distance voilà tout.

mais 2nd problème :
la fenêtre mère peut possèder des informations que je n'ai pas encore
pris en compte (aucune activation du submit final) et que je ne veux
pas perdre (données saisies dans les formulaires).


et pourquoi veux-tu que ça se perde ?
(elle est toujours là, ouverte en arrière plan)

3ème problème : comment réafficher les données transmises par la
fenêtre popup sans pour autant perdre les données saisies dans la
fenêtre mère ?


Pas ni rien compris quoi toi dire.

à quoi sert le popup si ce n'est *justement* à aider à remplir le form ?

J'espère avoir été clair ...


C'est plutôt la méthode telle que tu sembles l'envisager qui n'est pas
claire.

Pour ceux qui connaissent, j'aimerai réaliser l'équivalent du bouton
... que l'on trouve dans de nombreux logiciels.


Ha oui ! le bouton : Démarrer --> Eteindre l'ordinateur ?


En effet, ne connaissant pas le JavaScript, je me suis dit que je ne
pourrait faire ce que je faisais en VC++. Que neni, merci des précisions
qui me permettent de lever mon doute sur la faisabilité.

Eric


Avatar
ASM

En effet, ne connaissant pas le JavaScript, je me suis dit que je ne
pourrait faire ce que je faisais en VC++. Que neni, merci des précisions
qui me permettent de lever mon doute sur la faisabilité.


Je ne sais ce que fait le VC++

Mais, à ce que j'ai compris de ce que tu veux faire :

- une fenêtre mère du navigateur avec page de formulaire
(pas compris qu'il faille plusieurs form, mais bon ...)
-
-
- des champs à remplir
-
- un sélecteur avec une liste de personnes
- je choisis une personne
- hop ! un popup avec la fiche de la personne
nom, adresse, emploi du temps
- J'y sélectionne une plage horaire
j'envoie ce mini formulaire
hop : nom et réf de la personne + plage horaire
vont aller tous seuls remplir le form général de la fenêtre
mère restée ouverte dessous et déjà complété par ailleurs
hop ! on attend confirm du serveur ou
le popup se ferme ou
passe derrière la grde fenêtre en attendant de resservir
- nom de la personne (fait)
- ref de la personne (fait)
- plage horaire (fait)
-
- autres champs à compléter
-
envoi de la totale

Oui ça peut se faire en Javascript pour le va et vient fenêtre principle
et ses popups, mais penser à consolider en faisant des envois vers le php.


Donc page mamam.php dans fenêtre mère

# une fonction JavaScript de popup :

truc = false;

function pop(requete_fille) {
if(!truc || truc.closed)
truc=window.open('','petite','widthE0,heightU0,resizab;e=1');
truc.location = requete_fille;
truc.focus();
}


# un sélecteur
<select name="choix">
<option>durant</option>
<option>duppont</option>
...
</select>

# un bouton de validation
<input type=button value="choisir cette personne"
onclick="quest = 'requette=personnels&choix='+choix.value;
pop('question.php?'+quest);">

qui ouvre le popup qui attend la page :
question.php?requette=personnels&choix=eric
Le php fait sa requette à la BdD pour bâtir cette page-formulaire
qui va donc s'afficher dans le popup fille

la page fille :

possede un formulaire *à l'indentique* de la page maman,
sauf que tous ces champs (de même noms que ceux de maman)
sont cachés, à l'exception de ceux pré-remplis correspondants
à la fiche d'eric

possede un javascript (une fonction) pour copier tous les champs de
maman dans fille

function get() {
var M = opener.document; // la page de maman
var Fm = M.monForm; // formulaire maman
var F = document; // la page de fille
var Ff = F.monForm; // formulaire fille
for(var i=0; i<Fm.length; i++)
if(Fm[i].type == 'text') Ff[i].value = Fm[i].value:
}

cette fonction ne copie que les champs texte, mais c'est pour voir.

fille :
<body onload="get();">

le visiteur finit de remplir le form visible de la fille et valide.
A la validation on a une fonction set() qui renvoie tous les champs de
fille dans ceux de la maman.
A la validation, le form de la fille a bien sûr en action un php pour
enregistrer tous ces choix (dont et y compris ceux de la maman)

<form action="sauve.php" onsubmit="return set();" ...>

Voili, voilà les bases d'un fonctionnement par popup interposé.

Le php ne validera vraiment que lorsqu'il aura reçu le feu vert de la
maman. Les enregistrements effectués pouvant resservir si y a une
défaillance afin de pouvoir renvoyer le form de la maman pre-rempli.
(ne pas se retaper tout l'St frusquin quand IE plante)

Avatar
eric
ASM wrote:

En effet, ne connaissant pas le JavaScript, je me suis dit que je ne
pourrait faire ce que je faisais en VC++. Que neni, merci des
précisions qui me permettent de lever mon doute sur la faisabilité.


Je ne sais ce que fait le VC++

Mais, à ce que j'ai compris de ce que tu veux faire :

- une fenêtre mère du navigateur avec page de formulaire
(pas compris qu'il faille plusieurs form, mais bon ...)
-
-
- des champs à remplir
-
- un sélecteur avec une liste de personnes
- je choisis une personne
- hop ! un popup avec la fiche de la personne
nom, adresse, emploi du temps
- J'y sélectionne une plage horaire
j'envoie ce mini formulaire
hop : nom et réf de la personne + plage horaire
vont aller tous seuls remplir le form général de la fenêtre
mère restée ouverte dessous et déjà complété par ailleurs
hop ! on attend confirm du serveur ou
le popup se ferme ou
passe derrière la grde fenêtre en attendant de resservir
- nom de la personne (fait)
- ref de la personne (fait)
- plage horaire (fait)
-
- autres champs à compléter
-
envoi de la totale

Oui ça peut se faire en Javascript pour le va et vient fenêtre principle
et ses popups, mais penser à consolider en faisant des envois vers le php.


Donc page mamam.php dans fenêtre mère

# une fonction JavaScript de popup :

truc = false;

function pop(requete_fille) {
if(!truc || truc.closed)
truc=window.open('','petite','widthE0,heightU0,resizab;e=1');
truc.location = requete_fille;
truc.focus();
}


# un sélecteur
<select name="choix">
<option>durant</option>
<option>duppont</option>
...
</select>

# un bouton de validation
<input type=button value="choisir cette personne"
onclick="quest = 'requette=personnels&choix='+choix.value;
pop('question.php?'+quest);">

qui ouvre le popup qui attend la page :
question.php?requette=personnels&choix=eric
Le php fait sa requette à la BdD pour bâtir cette page-formulaire
qui va donc s'afficher dans le popup fille

la page fille :

possede un formulaire *à l'indentique* de la page maman,
sauf que tous ces champs (de même noms que ceux de maman)
sont cachés, à l'exception de ceux pré-remplis correspondants
à la fiche d'eric

possede un javascript (une fonction) pour copier tous les champs de
maman dans fille

function get() {
var M = opener.document; // la page de maman
var Fm = M.monForm; // formulaire maman
var F = document; // la page de fille
var Ff = F.monForm; // formulaire fille
for(var i=0; i<Fm.length; i++)
if(Fm[i].type == 'text') Ff[i].value = Fm[i].value:
}

cette fonction ne copie que les champs texte, mais c'est pour voir.

fille :
<body onload="get();">

le visiteur finit de remplir le form visible de la fille et valide.
A la validation on a une fonction set() qui renvoie tous les champs de
fille dans ceux de la maman.
A la validation, le form de la fille a bien sûr en action un php pour
enregistrer tous ces choix (dont et y compris ceux de la maman)

<form action="sauve.php" onsubmit="return set();" ...>

Voili, voilà les bases d'un fonctionnement par popup interposé.

Le php ne validera vraiment que lorsqu'il aura reçu le feu vert de la
maman. Les enregistrements effectués pouvant resservir si y a une
défaillance afin de pouvoir renvoyer le form de la maman pre-rempli.
(ne pas se retaper tout l'St frusquin quand IE plante)

Merci bien.