8731 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Petit nouveau ici, et de surcroit débutant dans le monde du développement web; j'ai un petit souci de mise en oeuvre sur un site que je développe à mes heures perdues Smiley smile

Je vous accorde que le mélange des 3 langages (HTML, JS et PHP) me perturbe légèrement, surtout les principes d'éxecution Client, Serveur ... (mais ca commence à bien rentrer Smiley smile )

Allez j'arrête de tourner autour du pôt et je vous remercie par avance si vous lisez jusqu'au bout la description de ma problématique.

Voici comment est conçu mon site (en PHP) :

1. Une fenetre dans laquelle est restituée un tableau (4 colonnes, 10 lignes) à l'aide d'une requête SQL, les données étant en base.
2. L'utilisateur doit pouvoir modifier ces données et les sauvegarder en base.
3. J'ai donc crée un bouton permettant d'ouvrir une popup modale (c'est un choix murement réfléchi) qui affiche le même tableau mais avec des input type "TEXT"
Les infos sont passées de la fenêtre mère à la fenêtre fille par une mise en session du tableau
4. Mon problème est que je ne sais pas trop comment renvoyer à la fenêtre mère les données (je ne me pose pas la question de savoir si les données ont été modifiées)
J'ai quelques pistes (window.returnValue, champs hidden, ....) mais je suis sur qu'il doit y avoir plus simple, plus propre et surtout plus astucieux.

Voici donc concretement comment j'ai fait.

Fenetre mère
1. requete SQL -> j'enrichis ma variable php $tab[..][..]
2. j'affiche mes 40 valeurs de $tab
3. je stocke $tab en session --> $_SESSION['tab'] = $tab; dans l'idée de récupérer les données côté popup
4. mon bouton ouvre la popup modale, et je lance une requete en session --> $tab = $_SESSION['tab'];
5. et là je bloque ! comment renvoyer les valeurs (modifiée ou non, peu importe) à la fenêtre mère ? tout en fermant la fenêtre fille ?

quelques idées :

mettre sur la fenêtre mère, 40 champs hidden (4 col x 10 lig) dans un form, et à l'aide du bout de code JS suivant appliqué sur mon bouton validé de la popup je peux récupérer le tout :

une boucle i,j (col/ligne)
tab[ i][j] = window.document.getElementById(i+'_'+j).value;
window.returnvalue = tab

window.close();

et ensuite dans ma fenetre mère je lance une requête POST pour récupérer les données et écraser le tableau $tab

Mais ca me parait un peu lourd et un peu tiré par les cheveux non ?

Donc voilà, que me conseilleriez-vous ? une méthode toute adaptée ?

Merci d'avance pour vos réponses
Modifié par Ultraviolet (26 Jan 2011 - 23:43)
j'ai bien une solution mais c'est aussi un peu tiré par les cheveux !

je me sers de 3 pages : la fenetre mere(mere.php) - la pop up(pop.php) - et une page qui recupère les données(toto.php)

sur la pop up, un formulaire normal avec la méthode post, qui lorsqu'on on valide les données, les envoient sur toto.php

<form name="f" method="post" enctype="multipart/form-data" action="toto.php" >
	<input type="text" name="t" />
        <!-- etc.... -->
	<input type="submit" value="go" />
</form>




sur toto.php, on récupère les données post, que l'on met ensuite en session
puis onferme la pop up et on redirige vers la page mere avec du javascript


session_start();
$t=$_POST['t'];
$_SESSION['t']=$t;

window.close();
window.location.replace('mere.php');


Smiley ohwell
Merci youbab !

Ta solution me paraît parfaitement applicable.
Mais effectivement elle me semble aussi un peu tirée par les cheveux Smiley lol

d'autres propositions ? Smiley biggrin
Je viens d y jeter un coup d'œil et je vois vraiment pas une autre solution que celle proposée par youbaba Smiley sweatdrop .
Mais je suis aussi a peu prés certains que l'on peut se passer de la 3eme fenêtre!
Je vais regarder de plus prés et je reviens te donner une réponse
bonjour,

en combinant des appels ajax et le plugin impromptu de jquery que tu peux trouver facilement via google, c'est faisable.