Balises HTML

Bonjour,
Je me lance dans le web…dans mes pages html créées sur Dreamweaver mes balises du type
<!--4DTEXT vDateWeb--> ou encore
<!--#4DLOOP [Articulation]-->
<!--#4DTEXT [Articulation]Articulation--><br>
<!--#4DENDLOOP-->
ne fonctionnent pas ??? même pas de message??

Ma méthode sur connexion web est:

C_TEXTE($1)
Au cas ou 
 :($1="/")
  vDateWeb:=Date du jour
  TOUT SELECTIONNER([Articulation])
  WEB ENVOYER FICHIER("index.html")
Fin de cas 

Seul 4DSCRIPT fonctionne et uniquement si j’utilise une page “index.shtml”
Help!!!
Merci

bonjour,

La méthode “sur connection web” n’est appelée que si la page n’existe pas dans votre dossier web, elle ne sera donc pas appelée lorsqu’on demande votre fichier index.html directement ou indirectement (en saisissant juste votre hostname dans le navigateur).
Pour que votre méthode soit appelée, vous pouvez par exemple déplacer votre fichier index.html en dehors du dossier web.

A noter que je viens d’éditer votre post pour échapper avec des ` vos exemples de balises html. Sans cela elles sont interprétées comme des commentaires html et n’étaient donc pas visibles.

L.E.

1 Like

Bonsoir,
Merci pour votre réponse. Malheureusement je ne comprends pas bien, (en sortant ma page index.html du dossier web), comment appeler ma page pour tester le serveur web. Après avoir l’avoir sorti je démarre le serveur web puis J’écris sur le Browser: http://127.0.0.1:8080/index.html (après avoir indiqué dans les propriétés web le nouveau chemin sinon j’ai 404 not found) et voila le résultat: (qui est le même que quand je laisse index.html dans le dossier web)

<p>Nous sommes le <!--#4DSCRIPT/date_jour-->. Il est <!--#4DSCRIPT/heure_jour--></p> marche très bien avec comme réponse:
Nous sommes le 20/04/2020. Il est 03:35:57
Mais:
<p>Nous sommes le<!--4DTEXT vDateWeb--></p)
<!--#4DLOOP [Articulation]-->
<!--#4DTEXT [Articulation]Articulation--><br>
<!--#4DENDLOOP-->
ne marche pas et cela donne:
Nous sommes le <!–#4DTEXT vDateWeb–> : Indéfinie (pourtant la variable est bien définie dans la méthode sur connexion web)
et aucune réponse concernant la boucle. Même pas un message d’erreur.
Manifestement je n’ai manifestement pas bien saisi votre réponse mais autant j’utilise 4D depuis longtemps je n’ai pas utilisé le serveur web depuis la version 4D2004.
J’ai bien analysé le tutoriel “Autoformation 4D v13 : Serveur Web” sur Youtube mais chez moi cela ne marche pas. A noter que je n’arrive même pas à obtenir le mode Trace sur la méthode “sur connexion web” ?
Merci

<p>Nous sommes le <!--#4DSCRIPT/date_jour-->. Il est <!--#4DSCRIPT/heure_jour--></p>
marche très bien avec comme réponse: Nous sommes le 20/04/2020. Il est 03:35:57 
Mais: `
<p>Nous sommes le <!--#4DTEXT vDateWeb-->, Il est <!--#4DTEXT vHeureWeb--></p>
	<br><br>
<!--#4DLOOP [Articulation]-->
<!--#4DTEXT [Articulation]Articulation--><br>
<!--#4DENDLOOP-->
ne marche pas
Manifestement je suis pas doué pour éditer les post

Si vous n’arrivez pas à obtenir le mode Trace sur la méthode “sur connexion web” c’est qu’elle n’est pas appelée. Et elle n’est pas appelée car index.html a été trouvée dans le dossier web.
Comme elle n’est pas appelée, vous n’avez pas d’enregistrement sélectionné dans votre table et votre variable process vDateWeb n’est pas définie.

Placez votre page index.html dans le dossier Resources de votre base par exemple.
Puis adaptez votre code ainsi:

C_TEXTE($1)
Au cas ou 
	: ($1="/") | ($1="/index.html")
		vDateWeb:=Date du jour
		TOUT SELECTIONNER([Articulation])
		WEB ENVOYER FICHIER(Dossier 4D(Dossier Resources courant)+"index.html")
Fin de cas 
C_TEXTE($1)
Au cas ou 
: ($1="/") | ($1="/index.html")
vDateWeb:=Date du jour
vHeureWeb:=Heure courante
TOUT SELECTIONNER([Articulation])
WEB ENVOYER FICHIER(Dossier 4D(Dossier Resources courant)+"index.html")
Fin de cas 

voila ma méthode connexion web mais je ne dois pas savoir paramètres les propriétés de la base car quand je teste le server web en appelant la page http://127.0.0.1:8080 j’ai toujours la même page qui s’ouvre. (c’est à dire uniquement les bonnes réponses pour 4DSCRIPT.). La méthode connexion web n’est donc toujours pas appelée ? J’ai bien mis la page index.html dans le dossier ressources
Si dans les propriétés web de la base je ne mets pas de chemin et la page d’accueil j’ai comme réponse “404 not found”.
Désolé d’être si obtus et pourtant j’utilise 4D depuis la version 4 !!! cela ne date pas d’hier et toute ma vie professionnelle libérale (et loisirs) s’est faite avec des bases 4D mais je ne me suis jamais aventuré vers le web que je découvre.
Merci encore

Bonjour.
Je me lance pour essayer de vous aider.

Comme le dit mon collègue, la méthode “Sur Connexion Web” n’est pas toujours appelée.
Dans votre cas, sans changer grand chose sur votre code initial, vous devriez pouvoir le faire fonctionner en le déplaçant dans la méthode “Sur Authentification Web”, qui, elle, est toujours appelée.

D’autre part, je pense que la ligne “Web envoyer fichier(“index.html”)” est superflue.

De plus, je me permets de vous donner un conseil : Plutôt que de mettre du code dans “Sur Authentification Web” (ou dans “Sur connexion Web”, à votre place, je créerais une méthode “web_init_pageIndex” qui contiendrait tout le code nécessaire à préparer les choses pour ma page. Et côté HTML, je mettrai, tout en haut de la page, la ligne suivante:
<!--#4DSCRIPT/web_init_pageIndex-->

Attention toutefois, pour que les balises 4D soient bien interprétées, il faut que vos fichier HTML portent l’extension “.shtml” et pas “.html”.

Personnellement, j’utilise les méthodes "Sur Connexions Web " et “Sur Authentification Web” pratiquement que pour y mettre le code qui est utile pour toutes les pages de mon site.

Un grand merci+++ après des heures de galère…
En effet cela ne fonctionne qu’en créant une méthode type web_init initialisée ensuite dans la page HTML par 4DSCRIPT. Pas évident à deviner malgré la doc et les autos.

Heureux d’avoir pu vous débloquer.
N’hésitez pas à poser d’autres questions.
Bonne continuation !

Bonjour.
Tout marchait très bien et maintenant 4DSCRIPT entraîne sur la page html un message “vous n’avez pas l’autorisation d’acces” ???
Pas de problème avec 4DTEXT
MERCI

Voir le § " Accès aux méthodes 4D via le Web" ici :
« L’exécution d’une méthode 4D avec 4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT, 4DIF, 4DELSEIF ou 4DLOOP depuis une requête Web est soumise à la valeur de l’attribut “Disponible via les balises et URLs 4D (4DACTION…)” défini dans les propriétés de la méthode. »
La méthode appelée par le 4dscript n’a probablement pas la propriété requise.

Non j’ai bien coché la case “disponible via les balises…” dans les propriétés de la méthode mais ce qui est curieux c’est que cela marchait bien jusqu’à hier. Dans cette même méthode il y a également plusieurs 4DTEXT qui fonctionnent ??

L’exécution de 4DSCRIPT passe par la méthode “Sur Web Authentification”. À première vue, je me demande s’il n’y aurait pas un soucis dans cette méthode. Peut-être pouvez-vous poster le code de votre méthode “Sur Authentification Web” ?

Voila mon code de la méthode “sur authentification Web”

C_TEXTE($1;$2;$3;$4;$5;$6)
C_BOOLEEN($0)

A noter que la page HTML s’ouvre quand même avec la liste des noms demandés donc la méthode appelée par 4DSCRIPT exécute bien le 4DLOOP mais j’ai ce message en haut de page HTML
<!–#4DSCRIPT/init_web–> : Vous n’avez pas l’autorisation d’accès. <!–#4DSCRIPT/date_jour–> : Vous n’avez pas l’autorisation d’accès.

Merci

Cette erreur apparaît généralement lorsque la méthode Sur Authentification Web retourne Faux.
Vu votre code, le problème n’est pas situé dans Sur Authentification Web.
Par contre, peut-être faut-il regarder dans le code de la méthode Sur Connexion Web.
Si vous le souhaitez, vous pouvez m’envoyer votre application via un message privé pour que j’y regarde de plus près.

Si la méthode se cantonne à ces seules lignes :

C_TEXTE($1;$2;$3;$4;$5;$6)
C_BOOLEEN($0)

elle retourne faux, il faudrait au moins ajouter :

$0:=Vrai 

J’ai ajouté $0:= Vrai. Cela ne change rien
J’ai en plus le message suivant
“Not enough stack space for the current method”
Problème de pile ???
mais la page HTML s’ouvre et j’ai bien le listing demandé par 4DLOOP mais toujours en haut de la page HTML les même messages concernant 4DSCRIPT: <!–#4DSCRIPT/Web_init–> : Vous n’avez pas l’autorisation d’accès. <!–#4DSCRIPT/date_jour–> : Vous n’avez pas l’autorisation d’accès.

En fait cette base 4D n’a pas cessé d’évoluer depuis xxx années puisque je l’ai commencé avec la V4 de 4D.

Compte tenu du confinement j’ai pensé me plonger dans le server Web par curiosité ne pensant pas être face à de si nombreux écueils malgré la Doc. Pour l’instant c’est un tout début Il n’y qu’une page HTML appelée par une méthode “Web_init”:

C_TEXTE($0;$1)
vDateWeb:=Date du jour
vHeureWeb:=Heure courante
TOUT SELECTIONNER([Articulation])
WEB ENVOYER FICHIER(“index.shtml”)

Voilà vous avez la totalité de conserver web balbutiant.
Le paradoxe c’est qu’au début je n’avais aucun problème avec 4DSCRIPT et en revanche je n’avais 4DTEXT ne marchait pas. En suivant les conseils de Mickael tout a parfaitement marché et maintenant c’est 4DSCRIPT qui ne fonctionne plus mais 4DTEXT fonctionne très bien ???.. et j’ai en plus ce message concernant la mémoire (pile ?). Et pourtant je n’ai rien modifié.
Mystère ?
Merci pour votre aide

J’ai testé et, si on n’écrit pas explicitement $0:=Faux, la méthode “Sur Authentification Web” accepte la requête. :wink:

1 Like

Je pense que j’ai compris.
Vous devez supprimer la ligne WEB ENVOYER FICHIER(“index.shtml”)

En effet, avec cette ligne, lorsque 4D affiche la page index.shtml, il appelle votre méthode Web_init qui, elle, va renvoyer index.shtml et donc rappeler Web_init… On se trouve donc dans une boucle infinie. D’où le problème de pile.

Je vous laisse essayer et me donner votre retour.

Je suis désolé que vous rencontriez des soucis. Je pense que quand vous aurez acquis le principe de fonctionnement, vous verrez que c’est pas si compliqué qu’il ne semble.

1 Like