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.
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 :
[b]Méthode 1 : ECHO de données HTML dans le code PHP[/b]
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]<?
//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
>?
[/code]
[b]Méthode 2 : ECHO dans le code HTML[/b]
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]<?
//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 -->
[/code]
[b]Méthode 3 : ECHO d'un script-client (affichage différé des données) [/b]
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]
<!-- 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
>?
[/code]
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.