Ajouter ligne ds un tableau a partir d1 popup

Résolu/Fermé
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 - 8 janv. 2008 à 17:03
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 - 10 janv. 2008 à 16:15
Bonjour vous tous qui viendez voir mon topic :) ,

bon j'ai une grosse galère, je test plein de chose depuis une semaine et j'arrive à rien, j'ai les yeux qui piquent, le cerveau qui marche au ralenti ... en gros j'ai grand besoin de votre aide !!!

Désolé pour ce titre (qui est vraiment "mochement" écrit) mais je voulais qu'il soit complet et explicite ...

Donc je vous expose mon problème :
J'ai créé un formulaire en plusieurs étapes. Arrivé à l'une d'elle, l'user pourra découvrir un tableau avec des champs de saisie sur 2 lignes (titres puis champs de saisies en dessous). Un bouton permet l'ouverture d'une fenetre popup où l'user pourra choisir dans une sélection de choix (logique s'il choisit) ... un choix !!! Jusque la tout va bien. Je souhaite que lorsque l'user a fait son choix (par bouton radio) il clique sur le bouton "Valider" et que :
- la fenetre popup se ferme (ca c'est bon ca marche).
- une nouvelle ligne de champs de saisie s'affiche avec le nom de son choix (dans la fenêtre popup) dans la première colonne. J'arrive à ajouter une ligne à l'aide d'un bouton directement sur la page mère mais pas a partir du bouton "Valider" de la page fille (popup).

J'espère que vous m'avez compris.

Voici un bout de mon code :

Page mère :

- Dans le <head>
<script type="text/javascript">
function AddRow(){
    var newRow = document.getElementById('table').insertRow(-1);
    var newCell = newRow.insertCell(0);
    newCell.innerHTML = '<input type="text" name="choix_fenetre_popup" size=3>';
    newCell = newRow.insertCell(1);
    newCell.innerHTML = '<input type="text" name="cellule_autre" size=3>';


- Dans le <body>
<form action="test_verif.php">
<table id="table" border=1>
	<tr>
		<th>choix_fenetre_popup</th>
		<th>cellule_autre</th>
        </tr>
        <tr>
		<td><input type="text" name="choix_fenetre_popup" size=3></td>
		<td><input type="text" name="cellule_autre" size=3></td>
        </tr>
</table>
<input type="button" value="Ajouter une ligne" onClick="AddRow()" >
<br>
<a href="http://localhost/choix.php" onclick="window.open(this.href,'popup','height=500 , width=500 , location=no');return false;"><input type="button" value="Choix"></a>
</form>



Page fille :

<form method="post" action="test.php">
      <input type="radio" name="choix_a_faire" value="choix1">Choix n°1<br>
      <input type="radio" name="choix_a_faire" value="choix2">Choix n°2<br>
      <input type="radio" name="choix_a_faire" value="choix3">Choix n°3

   <input type="button" value="Valider" onclick="window.opener.location.reload();window.close();">
   <a href="javascript:self.close()" onClick="window.opener.location.href='http://localhost/test.php'; window.close(); return(true);"><input type="button" value="Retour"></a>

</form>


Voila je crois que j'ai rien oublié.

Merci beaucoup pour votre attention.

Moogly
A voir également:

11 réponses

Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
8 janv. 2008 à 18:59
Bah, il suffit d'appeller window.opener.AddRow() non?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 janv. 2008 à 19:01
salut,

pour une autre question j'ai fait une démo d'interaction entre document et popup.
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
9 janv. 2008 à 09:18
Re,

je vous remercie pour vos réponses.

J'ai testé avec l'exemple que tu m'as donné Dalida et ca marche merci beaucoup. Mais à vrai dire ca répond qu'à moitié à mon problème.
Dans ma fenêtre popup j'ai 3 choix fais à l'aide de bouton radio et quand le résultat s'affiche dans la fenêtre mère, celui-ci est toujours le 1er choix ...
Maintenant je souhaiterais créer une ligne de champ dans mon tableau. Est ce possible, quand on clique sur "Valider" dans la fenêtre popup, de dire à la fenêtre mère d'effectuer une requête javascript (ajout ligne) tout en rechargeant la page mère avec l'information sélectionnée dans la fenêtre popup en début de ligne de mon tableau, comme dans ton exemple Dalida (je sais ca en fait des choses ...).

Merci beaucoup.
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
10 janv. 2008 à 10:35
Personne n'a une petite idée ?
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
10 janv. 2008 à 12:43
salut,

pardon je n'avais pas vu passer ta réponse.

il suffit de modifier le JS d'actualisation et d'ajouter ta ligne via le DOM, du moins je suppose !

peux-tu nous montrer ton code, stp ?
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
10 janv. 2008 à 14:32
oula ... bon tout d'abord merci pour ta réponse et pas de soucis si tu ne l'a pas vu plus tôt !!

ensuite euh ... je t'avouerai que j'ai pas tout saisi. Ne connaissant pas trop (voire pas du tout a vrai dire) ce qu'est le DOM j'ai fait quelques petites recherches sur mon ami google et ... ba ca m'a pas beaucoup avancé. d'apres ce que j'ai compris c'est le "script" qui lie les pages entre elles c'est ca ?

donc mon code ... en fait c'est le même que celui de mon premier post :)

alors j'ai essayer de mettre le code JS qui est dans la fenêtre mère (sachant que l'ajout de ligne marche bien dans cette page), dans la fenêtre fille mais il ne charge pas lorsque je valide (à partir de la fenêtre fille) dans la fenêtre mère.

Encore merci pour ton aide.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
10 janv. 2008 à 14:49
j'ai fait quelques petites recherches sur mon ami google
Google, c'est dépassé ! faut utiliser CCM !!!
-:oD
DOM (Document Object Model, traduisez modèle objet de document) est une spécification du W3C (World Wide Web Consortium) définissant la structure d'un document sous forme d'une hiérarchie d'objets, afin de simplifier l'accès aux éléments constitutifs du document.

Plus exactement DOM est un langage normalisé d'interface (API, Application Programming Interface), indépendant de toute plateforme et de tout langage, permettant à une application de parcourir la structure du document et d'agir dynamiquement sur celui-ci. Ainsi Javascript et ECMAScript utilisent DOM pour naviguer au sein du document HTML, ce qui leur permet par exemple de pouvoir récupérer le contenu d'un formulaire, le modifier, ...

DOM se divise en deux spécifications :

    * La spécification DOM level 1 (DOM niveau 1) se séparant en deux catégories
          o Core DOM level 1: La spécification pour les documents en général (dont XML)
          o HTML DOM level 1: La spécification retenant uniquement les méthodes applicables à HTML 
    * La spécificaion DOM level 2 ajoutant de nouvelles fonctionnalités comme la prise en compte des feuilles de style CSS dans la hiérarchie d'objets. 

Javascript utilise le DOM, entre autres pour accéder aux balises de ton document HTML :
document.getElementById('table')


essaie de mettre ça dans le document enfant :
function refreshParent()
{
    var newRow = window.opener.document.getElementById('table').insertRow(-1);
    var newCell = newRow.insertCell(0);
    newCell.innerHTML = '<input type="text" name="choix_fenetre_popup" size=3>';
    newCell = newRow.insertCell(1);
    newCell.innerHTML = '<input type="text" name="cellule_autre" size=3>';
}

il faudra sans doute l'adapter pour qu'il passe sur tous les navigateurs.
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
10 janv. 2008 à 15:17
ouah merci je crois bien que j'ai un nouvel ami maintenant :D

merci beaucoup je vais tester ca de suite !!

je te tiens au jus
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
10 janv. 2008 à 15:32
super comme ca, ca marche sous IE mais pas sous FF. En fait sous FF ca "marche" mais ca dure un quart de seconde puis ca disparait :)

en tout cas merci beaucoup pour ton aide je commencais vraiment a galérer !!!

Pitetre a bientot !!

Bye
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
10 janv. 2008 à 15:56
as-tu installé FireBug ?
j'aurais dû y penser avant, c'est le meilleur moyen pour comprendre ce qu'est le DOM.
0
moogly_praha Messages postés 73 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 13 septembre 2010 5
10 janv. 2008 à 16:15
ah non mais ca va être fais dans l'instant ;)

merci du tuyau (ca m'a l'air pas mal du tout !!)

Pour info pour que la ligne s'affiche dans FF, au lieu de mettre le onunload="refreshParent()" dans le body , il faut le mettre dans le bouton :

<input type="button" value="Valider" onclick="refreshParent();window.close();">
0