Preview d'un formulaire (PHP+javascript)

Fermé
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008 - 28 déc. 2004 à 20:34
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 4 janv. 2005 à 22:06
Bonjour,

Je ne sais pas si je suis dans le bon forum, parce que j'utilise PHP et javascript et je ne sais pas ou est vraiment le problème... je m'explique, j'aimerais faire un préview d'un formulaire, j'utilise le javascript pour récupéré mais après je dois transformé à l'aide de fonction php car il y avait du bbcode et je veux donc voir ce que ca donne, l'ennui c'est que comme la javascript c'est coté client, mes fonctions php ne peuvent rien modifier dessus et ca affiche donc tel quel ce qui était dans le formulaire.... voila mon code

$date = '<script language="javascript">document.write(window.opener.document.post.form_date.value);</script>';
$news = '<script language="javascript">document.write(window.opener.document.post.form_news.value);</script>';

echo '<span class="texte"><strong>'.$date.' :</strong> '.Filtre_afficher($news).'</span>';


la fonction Filtre_afficher de PHP n'a aucun impact alors qu'elle fonctionne pourtant très bien si je mets du texte directement dans la variable $news, j'ai fait l'essai pour vérifier ma fonction ! Donc ce n'est pas ma fonction qui déconne...

Si quelqu'un peut m'aider...
Merci
A+
A voir également:

8 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 déc. 2004 à 02:31
Salut,

Je suis pas certain d'avoir bien compris ton truc.
Admettons que j'ai compris :-)

Lorsque la page sera appelée, le php agira comme ça:
$date = '<script language="javascript">document.write(window.opener.document.post.form_date.value);</script>';
$news = '<script language="javascript">document.write(window.opener.document.post.form_news.value);</script>';


$news et $date prendront ça comme des chaines telles qu'elles : document.write...etc, et pour cause: l'affectation de $news et $date se passe côté serveur, donc ce Javascript n'a pas encore été interpété par un navigateur, ce n'est rien d'autre qu'une chaîne de caractère.

La suite logique des choses :
echo '<span class="texte"><strong>'.$date.' :</strong> '.Filtre_afficher($news).'</span>';


$date retournera :
$date = '<script language="javascript">document.write(window.opener.document.post.form_date.value);</script>';
// Et non pas le Javascript interprété

..et c'est le même genre de truc pour $news. Ensuite, ce que va filtrer Filtre_afficher($news) n'est rien d'autre que du Javascript non interprété, car si tu as bien suivi, c'est l'équivalent de :
Filtre_afficher('<script language="javascript">document.write(window.opener.document.post.form_news.value);</script>'

Et evidemment ya pas de BBcode là dedans, donc rien ne sera filtré.

Au final, voici ce que va te retourner cette portion de code Php:
<span class="texte"><strong><script language="javascript">document.write(window.opener.document.post.form_date.value);</script>
:</strong> <script language="javascript">document.write(window.opener.document.post.form_news.value);</script>
</span>


Si tu regardes la source de ta page sur ton navigateur, tu verras sûrement ça...si j'ai bien compris ton truc. Si c'est le cas j'espère que tu vois aussi...


Sm95ZXVzZXMgZup0ZXMgOi0p
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 déc. 2004 à 02:54
Donc le truc : soit tu fais ton filtre en Javascript.

Soit tu envoies ton formulaire vers un autre page (ou la même) et tu récupères les données de ton formulaire avec le tableau $_GET (ou $_POST, selon la methode que tu as utilisée).
Là tu filtres ces variables en php puis tu mets tout ça en forme dans une variable
$preview puis "echo $preview".


Sm95ZXVzZXMgZup0ZXMgOi0p
0
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008 4
29 déc. 2004 à 09:23
oui tu as bien compris kilian ! lol
Je sais c'est un peu compliqué, et je savais pas trop comment expliquer mais apparement je m'en suis pas mal sortis vu que t'as compris...

Ben pour faire le filtre en javascript, j'y arriverais pas, je connais pas assez...
ma fonction en PHP, c'est des truc du style :
function Filtre_afficher($chaine)
{
$chaine = @stripslashes(@nl2br($chaine));
$chaine = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/img\]#sie", "'<img src=\\1' . str_replace(' ', '%20', '\\3') . '>'", $chaine);
$chaine = preg_replace("#\[url\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/url\]#sie", "'<a href=\"\\1' . str_replace(' ', '%20', '\\3') . '\" target=_blank>\\1\\3</a>'", $chaine);
$chaine = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/", "<a href=\"$1\" target=\"_blank\">$2</a>", $chaine);
$motif = array('#\[mail\]([^[]*)\[/mail\]#i', '#\[mail=([^[]*)\]([^[]*)\[/mail\]#i');
$rplc = array('<a href="mailto:$1">$1</a>', '<a href="mailto:$1">$2</a>');
$chaine = preg_replace($motif, $rplc, $chaine);
$chaine = preg_replace("/\[b\](.+?)\[\/b\]/", "<b>$1</b>", $chaine);
......
}

Pour le GET, je ne pense pas que ce soit approprié parce que je crois que ca a une taille limite nan ?
Par le POST, oui peut-être, mais l'ennui c'est que dans mon formulaire, j'ai déja un onsubmit lorsque je l'envoie pour vérifier les champs !
Ca donne à peu près ca en simplifier... :
<form action=index.php?page=news method=post enctype=multipart/form-data name=post onsubmit="return FormVerif(this)">
<textarea name="form_news" cols="77" rows="8"></textarea>
<input class=class1 type=button name=Submit2 value=Prévisualisation onClick="window.open('inc/preview.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=1, copyhistory=0, menuBar=0, width=500, height=300');return(false)">
<input class=class1 type=submit name=Submit value=Envoyer>

Ma fonction javascript pour vérifier les champs c'est celle la :
function FormVerif(formulaire) {
if (formulaire.form_date.value.length == 0) { alert("Merci d\'entrer une date !"); return false; }
else if (formulaire.form_txt.value.length == 0) { alert("Merci d\'entrer une news !"); return false; }
formulaire.Submit.value='Patientez...';
formulaire.Submit.disabled='disabled';
return true; }

Enfin, si quelqu'un a une idée, peut-être quelque chose du genre dans cette fonction indiquer de quel bouton on vient, et donc si c'est le bouton de prévisualisation, on emmene tout dans la page preview.php

Enfin je ne sais pas...
Si quelqu'un a une idée...

Merci
A+
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 janv. 2005 à 20:43
Là c'est toi qui voit. J'y connais presque rien en Javascript.
Par contre je ne savais pas que la methode Get était limitée pour la quantité des données...Tu en es sûr?

Sm95ZXVzZXMgZup0ZXMgOi0p
0

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

Posez votre question
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008 4
3 janv. 2005 à 15:23
Slt,

Oui il me semble que GET est limité, on ne pourrai y passer un texte par exemple...
Ben je dois dire que je ne m'y conais pas vraiment non plus en javascript...
Si quelqu'un s'y connait et pourrait m'aider... Merci d'avance

@+
0
grdscarabee Messages postés 134 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 7 août 2005 74
3 janv. 2005 à 23:23
Salut,

Je ne connais pas grand chose au javascript, par contre ce que je sais c'est que GET et POST sont tous les deux limités au niveau des données (ce qui est logique puisque ce ne sont que des entêtes http). Je crois que GET est limité à 255 caractères et POST un peu plus

Personnellement, je n'ai pas trop suivi ton truc, mais je pense qu'avant de valider le formulaire, le bouton pourrait remplir un champ caché du formulaire qui permettrait de déterminer si on fait une visualisation ou non...le script d'analyse du formulaire pourrait alors rediriger le tout ? mais je n'ai peut être rien compris

GrdScarabe

Learn with the best, teach the others
0
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008 4
4 janv. 2005 à 17:38
euh oui mais il faut deux boutons, un pour prévisualiser, et l'autre pour envoyer le formulaire... mais seulement je n'y arrive pas...
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
4 janv. 2005 à 22:06
Ou est le problème plus exactement? Récupére le formulaire sur une autre page qui fera la prévisualisation et demande à l'auteur de confirmer. Ca fait deux boutons d'envoi mais sur deux pages différentes... (c'est comme ça que marche l'envoi d'un message sur ce forum d'ailleurs :-)

Ca marche aussi si tu envoies les données sur la même page.

Sm95ZXVzZXMgZup0ZXMgOi0p
0