Bonjour,
je travaille sur un mini projet perso qui permet de poster du code dans un textarea (method="post") vers une iframe (name="display") qui va recuperer le contenu du $_POST['code'] et l'écrire dans un fichier ('tmp.php') qui va être intégré dans une autre iframe (name="sample")
Ça y compliqué mais ça marche... à moitié.
Mon problème: ma super fonction de la mort qui tue tout (refreshSample()
submit bien mon form et actualise bien mon iframe... mais pas dans le bon ordre (je crois).
Je dois cliquer 2 fois sur submit pour que mon iframe soit actualisée =(
Les bouts de codes:
Javascript:
html:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function refreshSample() { document.forms['form'].submit(); top.frames['sample'].location.reload(true); }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <form name="form" method="post" action="frame_resultCopie.php" target="display"> <fieldset style="border-color:#000000"> <legend><strong style="font-size:28px;">Input</strong></legend> <textarea name="code" cols="80" rows="10" onkeydown="return interceptTabs(event, this);">enter code here</textarea> <textarea name="css" cols="80" rows="10" onkeydown="return interceptTabs(event, this);">enter 'css' here</textarea><br /> <button onClick="refreshSample();">Submit</button> </fieldset> </form> <fieldset style="border-color:#000000"> <legend><strong style="font-size:28px;">Upload</strong></legend> <form method="post" action="frame_uploadCopie.php" target="upload" enctype="multipart/form-data"> Envoyer une image (disponible dans images/votreImage): <input type="file" name="image" /><br /> <input type="submit" value="Submit" /> <iframe name="upload" width="120" height="25" frameborder="0" src="frame_upload.php" scrolling="no"> </iframe> </form> </fieldset> <fieldset style="border-color:#000000"> <legend><strong style="font-size:28px;">Result</strong></legend> <iframe style="display:none;" name="display" frameborder="1" src="frame_resultCopie.php" scrolling="no"> </iframe> <iframe id="sample" name="sample" width="100%" height="1000" frameborder="0" src="tmp.php" scrolling="yes"> </iframe> </fieldset>
Le php (de la frame display qui écrit dans mon fichier):
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php if (isset($_POST) AND isset($_POST["css"]) AND isset($_POST["code"])) { $filename = "tmp.php"; $filehandle = fopen($filename, "w") or die("cannot access tmp file."); $style = "<style>\n" . $_POST["css"] . "\n</style>\n"; $content = $style . $_POST["code"]; fwrite($filehandle, $content); fclose($filehandle); } ?>
Je sais, les iframes c'est le mal, c'est moche, c'est pas sécurisé, mais c'est un projet perso alors osef =D pis c'est pas le problème...
à priori il se situerais dans ma fct js mais je vois pas comment la frame peut être reload(); avant le submit(); de mon form ='(
Un grand merci à vous =D
ps: pour ceux que ça intéresse, le but est de pouvoir coder en 'live' et d'avoir les résultats direct dans la même page (pratique pour les intégrations).
Vous me direz que je peux utiliser un simple echo dans mon iframe, c'est vrai c'est comme ça que je faisais avant mais avec cette méthode je peux faire des pages complètement en php et/ou templatisées =P
pps: j'aime pas les accents =D
edit: niaaaaaaaa pas moyen d'avoir des balises code ? =O
edit2: merci pour l'edit des balises =)
Partager