Afficher un message sans echo, ni print

rod
Eléphanteau du PHP | 20 Messages

07 févr. 2005, 16:12

J'ai découvert cette syntaxe sur ASP et donc j'ai essayé de l'appliquer à PHP et ça marche. Alors parfois cela peut faire un peu plus clair lorsque l'on mélange HTML et PHP.

Code : Tout sélectionner

<? $Titre = "Page principale"; ?> <html> <head> <title><?= $Titre ?></title> ...
Ici le égal va remplacer un echo ou un print. Personnellement je trouve que cela rend le code un peu plus lisible.

Eléphant du PHP | 281 Messages

07 févr. 2005, 16:34

C'est vrai et parfois utile seulement ca ne marche pas chez tous les hébergeurs.

rod
Eléphanteau du PHP | 20 Messages

07 févr. 2005, 16:38

Ah oui ?
Il y a quelques choses à activer ou à installer pour profiter de cette option ?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

07 févr. 2005, 17:06


Mammouth du PHP | 1885 Messages

07 févr. 2005, 17:08

C'est hautement déconseillé.

rod
Eléphanteau du PHP | 20 Messages

07 févr. 2005, 17:23

Ok merci !

ViPHP
fab
ViPHP | 2657 Messages

07 févr. 2005, 21:22

En fait c'est tout simplement l'abréviation de <?php echo $var; ?>

Dux
Eléphant du PHP | 127 Messages

09 févr. 2005, 18:06

salut,
le problème est que certains serveurs acceptent plusieurs languages et le <? est commun à plusieurs. C'est pour ca que le <?php echo est plus conseillé

ViPHP
fab
ViPHP | 2657 Messages

09 févr. 2005, 23:25

c'est surtout que certains serveur désactivent les shorts tags car pour la déclaration d'un fichier XML ça pose un ( faux ) problème.

Par contre pour en revenir a ce que tu dis , un serveur web reconnait le language d'un fichier par son extension exemple si tu met du php dans un fichier .txt il ne sera pas éxécuté si tu l'appeles directement

Mammouth du PHP | 1885 Messages

09 févr. 2005, 23:30

Par contre pour en revenir a ce que tu dis , un serveur web reconnait le language d'un fichier par son extension exemple si tu met du php dans un fichier .txt il ne sera pas éxécuté si tu l'appeles directement
Tout dépend de la configuration du serveur puisque j'exécute du PHP pour mes fichiers .css :)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 févr. 2005, 11:15

La vrai question n'est pas de réinventer ECHO, mais de décider quand faut-il afficher des données en HTML (réponse HTTP). La tradition veut que presque la majorité des développeurs adoptent deux méthodes, selon le découpage classique du document (script PHP suivi du code HTML) :

1. Envoi d'un écho porteur de données formatées HTML au cours du traitement (code php)

2. Envoi d'un écho porteur de données au cours du balisage HTML

La deuxième méthode repose sur l'utilisation de variables PHP intémédiaires. En effet le modèle script PHP/HTML permet de renseigner des variables avant de les afficher dans la partie HTML grâce à la fameuse insertion <? echo $variable; ?> qui est un héritage de la méthode de fusion de données (publipostage)

Le publipostage permet de définir une interface d'affichage qui est un modèle de document à publier en protant des données issues d'une base de données externe au document.

Mais il existe une troisième méthode qui n'est pas moins intéréssente et qui n'apparait jamais dans les solutions peut être parce qu'elle repose sur un script côté client pour rediriger les données vers leurs emplacements dans le document.
Eneffet, contrairement aux deux autres méthodes, cette troisième suppose que le document est déjà affiché, que des emplacements nommés (balises) étaient prévus pour afficher les données. Le script PHP dans ce cas peut être exécuter après le code HTML, et le ECHO servira à créer un script-client (javascript ou vbscript) qui envoi les données determinées par PHP dans les balises nommées.
Dans cette méthode l'affichage est délégué au script client. Cette méthode s'avère intéressente quand on souhaite afficher la réponse HTTP en sur-impression selon un lot de réalisation : le script PHP doit envoyer des résultats par lot selon l'état dévancement de son traitement, le client lui, reçoit l'affichage complet dès le premier envoi de l'entête HTTP. Les données elles, s'affichent au fur et à mesure de leurs détermination par le traitemet PHP.

1 exemple pour les 3 méthodes :

Méthode 1 : ECHO de données HTML dans le code PHP
Toutes les données sont envoyées en direct par ECHO vers HTML
Attention : Cette méthode affiche le résultat lot par lot selon l'avancement du traitement (affichage séquentiel)

Code : Tout sélectionner

<? //Début du code PHP (HTML inclus) //Déterminer les données et les afficher en HTML ECHO "<baliseHTML> $données "; ECHO "<baliseHTML> $données "; ECHO "<baliseHTML> $données "; ... //Fin de traitement PHP >?
Méthode 2 : ECHO dans le code HTML
Cette méthode détermine le lot de données avant de tout afficher par le code HTML. Ici l'affichage n'est pas séquentiel, mais ne sera effectué que si le traitement est terminé.

Code : Tout sélectionner

<? //Début du code PHP ... $données = //déterminer les données à afficher ... //Fin de traitement PHP >? <!-- Code HTML --> ... <baliseHTML><? echo $données; ?> ou <baliseHTML><? =$données; ?> ... <!-- Fin de l'affichage HTML -->
Méthode 3 : ECHO d'un script-client (affichage différé des données)
Ici, l'affichage du corps du document se fait en premier par HTML, seules les données déterminées par le traitement sont affichée par PHP.
Le traitement délégue l'opération d'affichage à la machine virtuelle du client qui oriente les données vers des balises nommées (préparées par HTML)

Code : Tout sélectionner

<!-- Code HTML --> Contenu statique du document <baliseNommée id=nom> Contenu statique du document <baliseNommée id=nom> .... <!-- Fin de l'affichage HTML --> <? //Début du code PHP $données = //determiner les données à afficher //Afficher un lot de données déterminées dans des champs INPUT prévus ECHO "<SCRIPT> champNommé.value = $données; </SCRIPT>"; $données = //determiner d'autres données à afficher //Afficher un autre lot de données déterminées dans des balises HTML ECHO "<SCRIPT> baliseNommée.innerTexte = $données; </SCRIPT>"; .... //Fin de traitement PHP >?
Dans cette dernière méthode l'utilisateur attend des données et non un document puisque le document est chargé en entier sans l'intervention du code PHP.

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

15 févr. 2005, 12:27

ça pose un ( faux ) problème.
200 % d'accord

de toute facon c'est mieux de desactiver les short open tags uniquement pour le répertoire (ou mieux : le script) qui pose probleme ...

C'est vrai que c'est déconseillé d'utiliser les short open tags, mais d'un autre coté, je connais peut de serveurs qui les désactivent et d'un autre coté je connais ENORMEMENT de progammeurs qui font du quick and dirrrty en short open tags (et j'en suis :twisted: )

Dux
Eléphant du PHP | 127 Messages

02 mars 2005, 23:25

a propos de l'interprétation du type de fichier:

faites un essai, enregistrez un code PHP dans un document.txt et appellez le avec un mozilla 4/5 qui va le prendre en texte brut puis essayez avec certains geckos, entre autre safari, le code sera traduit par PHP.
Et je ne parle pas d'un local Web.

ViPHP
fab
ViPHP | 2657 Messages

03 mars 2005, 03:12

mozilla est basé sur gecko il me semble

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

03 mars 2005, 14:25

De plus l'interprétation d'un fichier en TXT ou PHP ne dépend pas du client, ça se passe côté serveur :roll:

Pour en revenir aux short-open-tags, il est effectivement officiellement déconseillé de le faire, mais officieusement je ne vois pas qui pourrait se permettre de la désactiver:
- le problème du xml est effectivement un faux problème (soit le fichier n'est pas parsé et le problème ne se pose pas, soit il l'est et ça se règle avec 1 echo sur la première ligne, quel drame).
- la syntaxe <?=$variable?> qui permet d'alléger la syntaxe et de rendre le script cent fois plus lisible, une fois qu'on la connait on l'adopte ;)