![]() |
Forum SELFHTML: Archives: |
|
|
Le message suivant est de: Stéphan RODRIGUEZ,
stephan.rodriguez@laposte.fr, 27. 07. 2003, 16:58
Bonjour,
Je suis novice en construction de sites et autodidacte, et j'ai du mal à m'y retrouver dans la jungle des informations ...
Voici mon problème : J'ai construit une page-formulaire et je voudrais exploiter les données de ce formulaire dans une nouvelle page. Cette nouvelle page reprenant toutes les informations des utilisateurs mises en forme, devra être imprimable(formulaire d'inscription).
Afin d'exploiter ce formulaire j'ai essayé de suivre le tutoriel suivant:http://www.selfhtml.com.fr/articles/javascript/passationvaleurs-2/, mais sans grand succès. Je ne trouve pas l'erreur que je commets et les données ne passent pas. De plus je ne sais pas comment nommer la page qui sert à faire passer les valeurs ni comment l'appeler depuis la page de destination (j'obtiens undefined à la place des valeurs).
J'espère que vous comprenez ce que j'essaie de dire et que vous trouverez la solution à mon problème.
Merci pour vos réponses.
Stéphan
Le message suivant est de: Patrick Andrieu,
nospam@nospam.fr, 27. 07. 2003, 23:47
http://www.selfhtml.com.fr/equipe/patrick.htm
Salut!
»» Afin d'exploiter ce formulaire j'ai essayé de suivre le tutoriel suivant:
http://www.selfhtml.com.fr/articles/javascript/passationvaleurs-2/index.htm
, mais sans grand succès.
Bon. L'exemple fonctionne. Alors essaie de voir où se trouve le problème avec ta construction. Reprends l'exemple un par un, et modifie au fur et à mesure avec ce que tu as fait... jusqu'à que tu trouves ce qui ne vas pas.
»» Je ne trouve pas l'erreur que je commets et les données ne passent pas.
Ben nous non plus, sans exemple de code, on est pas voyants.
Patrick
Le message suivant est de: Stéphan,
stephan.rodriguez@laposte.fr, 28. 07. 2003, 11:43
Merci pour ta réponse Patrick ...comme toi je constate que l'exemple fonctionne (celui de la démonstration), mais lorsqu'on fait un copier-coller des exemples du tutorial, ça ne marche plus.
Je ne comprends pas la fonction de la page de passation des valeurs (celle avec les frames) et mon problème est de comprendre comment elle doit intervenir dans le processus.
Comment doit-on nommer cette page? Je l'ai appelée passation.htm mais je suis surement dans l'erreur vu que ça ne fonctionne pas.
J'ai bien ma page 1 mais lorsque je remplis les champs et que je valide, je n'ai pas la page d'arrivée (page 2)Impossible d'afficher la page ...
Stéphan.
Le message suivant est de: Patrick Andrieu,
nospam@nospam.fr, 28. 07. 2003, 14:45
http://www.selfhtml.com.fr/equipe/patrick.htm
Salut Stéphan!
»» Merci pour ta réponse Patrick ...comme toi je constate que l'exemple fonctionne (celui de la démonstration), mais lorsqu'on fait un copier-coller des exemples du tutorial, ça ne marche plus.
C'est alors là qu'il faut faire attention. Je ne suis moi-même ni un crack en JavaScript, ni en Perl, ni en HTML (quoique là, c'est pas dur de le devenir, grâce à SELFHTML). Tout ce que je sais au jour d'aujourd'hui, je me le suis appris moi-même. En copiant, reprenant des exemples de SELFHTML ou d'ailleurs, en essayant de déchiffrer le code, en essayant de comprendre, en essayant page par page, modification par modification, etc... Et maintenant, je parviens à peu près à faire ce que je veux. Y a des hauts et des bas, des déceptions, des fois je laisse passer qqs jours avant de m'y remettre. Mais je veux dire par là: tu as un exemple qui fonctionne, et c'est en essayant de l'adapter que ca ne marche pas. Donc, commence plus petit, vois si ce n'est tout simplement pas à cause de noms de variables, de fonctions ou autres qui sont différents dans ta construction par rapport à l'exemple, etc...
Reprends ta construction, compare la avec l'exemple de SELFHTML, essaye de comprendre les erreurs que te donne ton navigateur, au besoin, prends Mozilla (http://www.mozilla.org/, qui a une meilleure définition des erreurs), et donne-nous au moins ces renseignements, sans lesquels personne ici ne pourra t'aider...
Patrick
Le message suivant est de: David,
DavidB863917134@aol.com, 28. 07. 2003, 18:37
Bonjour tout le monde!
Bon je crois cerner ton Probleme Stephan. Tu veux que les internautes remplissent des champs et que cela modifie une page qu'il pourront imprimer, n'est-ce pas?
Alors je te propose la solution suivante (elle est sans frame, comme le tutoriel que tu citais), elle fait appel au langage perl. Ma solution est donc compose de 2 fichiers, l'un est une page html que l'utilisateur remplis et l'autre est un script en Perl qui genere une page html avec les champs de la page precedement remplies:
voici le code pour contact.htm :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>formulaire a remplir</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="formulaire" method="post" action="/cgi-bin/contacteur.pl">
<p>E-mail:
<input type="text" name="mail" size="20" maxlength="40">
</p>
<p>Votre texte:
<textarea name="texte" cols="15" rows="5"></textarea>
</p>
<p>
<input type="Submit" name="envoie" value="Envoyer">
</p>
</form>
</body>
</html>
et maintenant le fichier contacteur.pl a placer dans ton repertoire /cgi-bin/
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
##recupere les donnees dans les champs et les ranges dans des tableaux
##remplace les caracteres speciaux par leurs equivalents ascii
read(STDIN, my $donnees, $ENV{'CONTENT_LENGTH'});
my @champs_formulaire = split(/&/, $donnees);
my ($champ, $nom, $valeur);
my %formulaire;
foreach $champ (@champs_formulaire) {
(my $nom, my $valeur) = split(/=/, $champ);
$valeur =~ tr/+/ /;
$valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$valeur =~ s/&/&/g;
$valeur =~ s/</</g;
$valeur =~ s/>/>/g;
$valeur =~ s/"/"/g;
$formulaire{$nom} = $valeur;
}
##page de sortie affichant les tableaux
print "Content-type: text/html\n\n";
print <<"FIN";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>Retour</title></head>
<body>
<p>Voici les informations que vous nous avez transmis:</p>
<p>Adresse mail: $formulaire{mail}</p>
<p>Votre texte: $formulaire{texte}</p>
</body></html>
FIN
##Fin du programme
J'ai fais une solution tres simple (et qui marche, je l'ai teste sur mon site!) que tu pourras enrichir en lisant les tutoriels de selfhtml sur le language perl.
Inconvenients: ton serveur doit accepter tes propres scripts perl, et pour tester cette solution il te faudra etre connecter à ton serveur.
Voila si tu as encore des zones d'ombres, je reste à l'ecoute.
David.
Le message suivant est de: Stéphan,
stephan.rodriguez@laposte.fr, 28. 07. 2003, 20:21
»» Bon je crois cerner ton Probleme Stephan. Tu veux que les internautes remplissent des champs et que cela modifie une page qu'il pourront imprimer, n'est-ce pas?
Merci beaucoup pour ton aide, David, tu as exactement compris ce que j'essaie de faire et je vais garder ta solution sous le coude au cas où, mais je fais ce site pour mon club de gymnastique et je ne sais pas encore qui en sera l'hébergeur donc j'essaie de trouver une solution sans avoir recours à CGI ou PHP dans le cas où je ne pourrais pas les utiliser.
Merci encore pour ton aide.
Stéphan.
Le message suivant est de: Patrick Andrieu,
nospam@nospam.fr, 29. 07. 2003, 16:22
http://www.selfhtml.com.fr/equipe/patrick.htm
»» Bonjour tout le monde!
Re toi!
»» l'autre est un script en Perl qui genere une page html avec les champs de la page precedement remplies:
----------------->< cut ><--------------------------
»» #!/usr/bin/perl
»» use strict;
»» use CGI::Carp qw(fatalsToBrowser);
------------------>< cut ><--------------------------
use CGI qw(param); # simplifie la chose et évite le parser, dont on n'a alors plus besion:
# »» ##remplace les caracteres speciaux par leurs equivalents ascii
# »» read(STDIN, my $donnees, $ENV{'CONTENT_LENGTH'});
#»» my @champs_formulaire = split(/&/, $donnees);
# »» my ($champ, $nom, $valeur);
# »» my %formulaire;
# »» foreach $champ (@champs_formulaire) {
# »» (my $nom, my $valeur) = split(/=/, $champ);
# »» $valeur =~ tr/+/ /;
# »» $valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# »» $valeur =~ s/&/&/g;
# »» $valeur =~ s/</</g;
# »» $valeur =~ s/>/>/g;
# »» $valeur =~ s/"/"/g;
# »» $formulaire{$nom} = $valeur;
# »» }
# ensuite, on reprend de la sorte:
$nom = ¶m('nom'); # <-- champ de saisie du nom dans le formulaire
$email = ¶m('email'); # <-- champ de saisie de l'eMail dans le formulaire
$etcaetera = ¶m('etcaetera'); # <-- autres champs
----------------------- #### --------------------------
Enfin bref... il est évident qu'une solution CGI sera la plus simple dans le cas de Stéphan. Lui cependant serait plutôt porté à utiliser JavaScript, mais s'il ne nous dit pas où ça coince en nous faisant part de son code où du moins des parties dont il suppose qu'elles causent des erreurs, personne ne pourra l'aider.
C'est même qqe part dans les FAQ de ce forum, si tu veux de l'aide, montre du code. Personne ici n'est voyant, personne n'apportera de solution finie, car elles n'aident en aucun cas le demandeur qui verra peut-être que ca marche mais qui ne verra jamais pourquoi.
C'est à Stéphan de décortiquer son code, et de voir où ça coince. Si alors il ne voit toujours pas, il s'adresse à nous en nous montrant ce qu'il a fait. Mais décrire que qqch ne fonctionne pas sans qu'on puisse voir quoi exactement est faux ou a été mal implémenté, cela ne nous mène à rien et il n'est pas possible de l'aider!
Patrick
Le message suivant est de: David,
DavidB863917134@aol.com, 30. 07. 2003, 11:12
»» »» Bonjour tout le monde!
»» Re toi!
Re Re toi!
»» use CGI qw(param); # simplifie la chose et évite le parser, dont on n'a alors plus besion
C'est vrai j'avais pas penser au parser! (le pov' petit parser!)
bon sinon c'est vrai donner votre code, gentils demandeurs d'aides, ca simplifiera la vie de ceux qui vous répondent (faut pas les décourager!).
Allez bonen journée @ tous!
David.
Le message suivant est de: CirTap,
cirtap@webmechanic.biz, 04. 08. 2003, 22:11
Salût Stéphan,
je vais l'essaier en français, mais c'est pas ma languer maternelle :-)
»» mais lorsqu'on fait un copier-coller des exemples du tutorial, ça ne marche plus.
ça marche tres bien :)
»» Comment doit-on nommer cette page? Je l'ai appelée passation.htm mais je suis surement dans l'erreur vu que ça ne fonctionne pas.
le nom de fichier avec le jeu de frames n'interesse pas du tout, appelle le "index.htm" si tu veux, ou bien "passation.htm"
»» Je ne comprends pas la fonction de la page de passation des valeurs (celle avec les frames) et mon problème est de comprendre comment elle doit intervenir dans le processus.
c'est le 'cléf' !
comme "passation.htm" (le jeu de frames) est le "parent" de page1.htm et egal.htm, la fonction passation() qui ce trouve dans (l'enfant) page1.htm peut sauvegarder les valeurs de son formulaire dans l'object qui représente son parent: parent :-)
parent.valeur1 = document.formulaire.champ1.value
^^^^ ^^^^^
\-- passation.htm \----- page1.htm
parent est un objet 'globale', comme window, document, self etc.
alors, les valeur de çe formulaire çe retrouve en copie *dans* l'objet parent, et comme le parent se ne change pas mème aprés
window.location.href = "page2.htm";
page2.htm peut faire:
document.write(parent.valeur1 + " " + parent.valeur2)
c'est tout la magie.
un(e?) forme normative de la fonction:
function passation()
{
self.parent.valeur1 = self.document.forms['formulaire'].elements['champ1'].value;
self.parent.valeur2 = self.document.forms['formulaire'].elements['champ2'].value;
self.location.href = "page2.htm";
return true;
}
Malheureusement, la propriété 'parent' se ne trouve pas dans la liste de
http://selfhtml.selfhtml.com.fr/javascript/objets/window.htm
ou de http://selfhtml.selfhtml.com.fr/javascript/objets/frames.htm
Il s'agit de la fenêtre qui englobe celle dans laquelle on se trouve (si il y en a une..)
et personne t'as dit, comme d'établier des propriété "en passant" sur n'importe quelle objet:
parent.myCash = "cash: ";
window.total = 10 * 5 - 50;
alert(parent.myCash + window.total);
c'est trés important de comprendre l'hiérarchie des objets Javascript (et DOM).
écrire une message dans egal.html:
self.parent.frames['frame2']^.document.write("I love objects!");
/ \
page1.htm egal.htm
Le fichier dans le "Exemple - page 1" s'appelle "page1.htm", comme c'est noter dans le premier balise <frame>:
<frame name="frame1" src="page1.htm"> <----- valeur de src
pour le 2. <frame name="frame2" src="egal.htm"> il y manque un nouveaux fichier. bon, voilà: egal.htm
<html>
<head>
<title>je suis egal</title>
</head>
<body>total egal</body>
</html>
alors, ça te donne trois fichier dans ton dosier "test" ;-)
- index.htm le jeu de frames, et le parent de page1.htm, egal.htm ET page1.htm
- page1.htm le formulaire, frame1
- egal.htm la page vide, frame1
»» je n'ai pas la page d'arrivée (page 2)Impossible d'afficher la page ...
le nom de la page suivant ce trouve ici:
window.location.href = "page2.htm"; <---
si tu change le nom du fichier, il faut le change ici
donc, le fichier no. quttre c'est page2.htm
mon resumée: SelfHTML est bien pour apprendre HTML, main *pas du tout* pour apprendre JavaScript. Il manque trop des details necessaire et c'est la galère de trouver des information: it sucks! partiellement, les example son "trop" façile - on ne les comprend pas :-)
c'est dommage, qui'il n'existe pas une version CHM, comme pour la version allemand ("full text search" ?).
voilà quelques lien pour t'aider
[fr] http://www.commentcamarche.net/javascript/jsintro.php3
[fr] http://www.allhtml.com/javascript/index.php
[fr] http://www.toutjavascript.com/savoir/savoir.php3
[en] http://www.w3schools.com/js/default.asp
ciao
CirTap
Le message suivant est de: encore moi..,
bla@blubb.fr, 04. 08. 2003, 22:18
error:
- index.htm le jeu de frames, et le parent de page1.htm, egal.htm ET page1.htm
c'est:
... est le parent de page1.htm, egal.htm ET page2.htm
^^^^^
Le message suivant est de: bancoturf2000/,
jacques.christian@pandora.be, 10. 11. 2003, 01:09
http://www.chez.com/bancoturf2000/
»» Merci pour ta réponse Patrick ...comme toi je constate que l'exemple fonctionne (celui de la démonstration), mais lorsqu'on fait un copier-coller des exemples du tutorial, ça ne marche plus.
»» Je ne comprends pas la fonction de la page de passation des valeurs (celle avec les frames) et mon problème est de comprendre comment elle doit intervenir dans le processus.
»» Comment doit-on nommer cette page? Je l'ai appelée passation.htm mais je suis surement dans l'erreur vu que ça ne fonctionne pas.
»» J'ai bien ma page 1 mais lorsque je remplis les champs et que je valide, je n'ai pas la page d'arrivée (page 2)Impossible d'afficher la page ...
»» Stéphan.
Bonjour....
Pour cela vous devez creer un nouveau fichier sous le nom de jeu_de cadre.htm(frameset.htm)
Suprimer les deux commandes <body> et </body>, puis inserer les commandes suivantes entre <head> et </head>
<frameset rows="%,*">
<frame src=" fichier1.htm" name="haut">(page de saisie)
<frame src=" fichier2.htm" name="bas"> (page de verification)
</frameset>
Enregistrer sous (frameset.htm
Ensuite creer une page de saisie (formulaire) enregistrer sous le non de fichier1.htm.
Une page de verification (champs saisie par l'utilisateur.)
PAGE DE SAISIE.
<head>
Code à inserer dans le code source ficchier1.htm
<script language="JavaScript" type="text/javascript">
<!--
function passation()
{
parent.valeur1 = document.formulaire.champ1.value;
parent.valeur2 = document.formulaire.champ2.value;
location.href = "page2.htm";
return true;
}
//-->
</script>
</head>
<body>
<form action="fichier2.htm" method="GET">/ou post
</body<
PAGE DE VERIFICATION
A inserer dans le code source fichier2.htm
<body>
<p>
Vous vous appelez: <script>document.write(parent.valeur1 + " " + parent.valeur2)</script>
</p>
</body>
jachy.
Le message suivant est de: bancoturf2000,
jacques.christian@pandora.be, 10. 11. 2003, 03:57
»» »» Merci pour ta réponse Patrick ...comme toi je constate que l'exemple fonctionne (celui de la démonstration), mais lorsqu'on fait un copier-coller des exemples du tutorial, ça ne marche plus.
»» »» Je ne comprends pas la fonction de la page de passation des valeurs (celle avec les frames) et mon problème est de comprendre comment elle doit intervenir dans le processus.
»» »» Comment doit-on nommer cette page? Je l'ai appelée passation.htm mais je suis surement dans l'erreur vu que ça ne fonctionne pas.
»» »» J'ai bien ma page 1 mais lorsque je remplis les champs et que je valide, je n'ai pas la page d'arrivée (page 2)Impossible d'afficher la page ...
»» »» Stéphan.
»» Bonjour....
»» Pour cela vous devez creer un nouveau fichier sous le nom de jeu_de cadre.htm(frameset.htm)
»» Suprimer les deux commandes <body> et </body>, puis inserer les commandes suivantes entre...
<head> (fichier frameset.htm)
<title>frameset </title>
<script language="JavaScript" type="text/javascript">
var valeur1;
</script>
</head>
»» <frameset rows="%,*">
»» <frame src=" fichier1.htm" name="haut">
»» <frame src=" fichier2.htm" name="bas">
»» </frameset>
A enregistrer sous (frameset.htm
Ensuite: fichier1.htm (destination haut)
<head>
<title>frame 1</title>
<script>
function f() {
parent.valeur1 = document.form.valeur1.value;
location.href = "valid.htm";
}
</script>
</head> ( A enregistrer sous fichier1.htm.)
Un fichier2.htm (destination bas)
<head>
<title>frame 2</title>
</head>
<body>
<script>
document.write("la valeur: " + parent.valeur1);
</script>
</body> (A enregistrer sous fichier2.htm)
Et enfin un fichier validation.htm
<head>
<title>validation</title>
</head>
<body>
<script>
document.write("la valeur: " + parent.valeur1);
</script>
</body>
Maintenant vous pouvez modifier et adapter ce jeu de cadre à votre exemple.
Jachy.
» jachy.
© 1998-2004
selfhtml@fr.selfhtml.org