OVH Cloud OVH Cloud

php pur ou melanger php et html

5 réponses
Avatar
Bonjour,

Je me pose une question qu'est ce que le mieux.

Melanger du php avec du html ou ecrire que du php ?

Interet inconvenient

merci

5 réponses

Avatar
Denis Beauregard
Le 01 Sep 2005 13:11:05 GMT, écrivait
dans fr.comp.lang.php:

Bonjour,

Je me pose une question qu'est ce que le mieux.

Melanger du php avec du html ou ecrire que du php ?

Interet inconvenient


Cela dépend beaucoup de l'application.

Par exemple, si on n'utilise le PHP que de façon minimale, par
exemple pour afficher la date sur une page, pour afficher des
bannières rotatives, pour avoir toujours la même entête (ou un
menu), on peut faire la page en HTML et ajouter une ligne quand
on a terminé.

Mais si c'est quelque chose de plus sophistiqué, comme afficher le
résultat d'une recherche dans une base de données, on a intérêt
à avoir le <?php au tout début du fichier.


Denis

Avatar
loufoque
a dit le 01/09/2005 à 15:11:

Melanger du php avec du html ou ecrire que du php ?


À part si tu utilises des templates en php, l'intérêt de mélanger php et
html est limité.

Avatar
dmetzler
La réelle question est à mon avis, faut-il mélanger la présentation
et la logique ? La réponse est bien sûr non.

Si tu utilise du php pour la mise en forme, pas de problème tu peux
mélanger. PHP est un langage de templates et il est donc fait pour
ça.

Un construction du type :

<table>
<tr><th>Titre</th><th>Auteur</th></tr>
<?php
foreach($arrLivres as $objLivre) {
echo "<tr>" ;
echo "<td>".$objLivre->Titre."</td><td>".$objLivre->Auteur."</td>";
echo "</tr>";
}
?>
</table>

N'est absolument pas choquante.


Ce qui serait embêtant c'est d'inclure des fonctions faisant des
traitements logiques dans ce bout de présentation des données,

Ce que je recommande souvent pour les personnes commençant en PHP,
c'est de séparer leur code en 2 (pas forcément 2 fichiers):
* la récupération des données
* la présentation des données

Le code ci dessous :
<body>

<?php

$db = mysql_connect("localhost","root","unajsnwn");
mysql_select_db("suivideploy");

$result = mysql_query('SELECT mag_num,mag_name FROM MAG');

echo "<table><tr><th>N°</th><th>Nom</th></tr>";
while($row = mysql_fetch_row($result)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
echo "</table>";

?>
</body>
</html>


$db = mysql_connect("localhost","root","unajsnwn");
mysql_select_db("suivideploy");

$result = mysql_query('SELECT mag_num,mag_name FROM MAG');

$arrMags = array();
while($row = mysql_fetch_row($result)) {
$arrMags[] = array( "num" => $row[0],
"name" => $row[1]);
}


?>
<html>
<body>
<table>
<tr><th>N°</th><th>Nom</th></tr>
<?php
foreach($arrMags as $Mag) {
echo "<tr><td>".$Mag["num"]."</td><td>".$Mag["name"]."</td></tr>";
}
?>
</table>
</body>
</html>

pas la présentation de la logique
Avatar
Jean-Marc Molina
a écrit/wrote :
La réelle question est à mon avis, faut-il mélanger la présentation
et la logique ? La réponse est bien sûr non.


En effet c'est sous cette forme qu'il faut poser la question. Il ne faut pas
oublier que par définition et nature, PHP est un langage embarqué à HTML.

Si tu utilise du php pour la mise en forme, pas de problème tu peux
mélanger. PHP est un langage de templates et il est donc fait pour
ça.

Un construction du type :

<table>
<tr><th>Titre</th><th>Auteur</th></tr>
<?php
foreach($arrLivres as $objLivre) {
echo "<tr>" ;
echo
"<td>".$objLivre->Titre."</td><td>".$objLivre->Auteur."</td>";
echo "</tr>"; }

</table>


N'est absolument pas choquante.


Comme l'objectif est de séparer les couches de l'application il aurait été
aussi plus judicieux d'utiliser la balise <?= ?>, plutôt que la fonction
"echo", pour ne pas embarquer inutilement du HTML à PHP :

<table>
<tr><th>Titre</th><th>Auteur</th></tr>
<?php foreach($arrLivres as $objLivre) { ?>
<tr>
<td><?= $objLivre->Titre ?></td><td><?= $objLivre->Auteur ?></td>
</tr>
<?php } ?>
</table>

Les avantages sont multiples :
- Le HTML est généré tel qu'on l'écrit, on a pas besoin d'ajouter des n et
autres t pour mettre en page son code HTML
- Pas besoin de traiter les caractères spéciaux comme les guillemets, on
peut écrire : <td id="mon_id">, par exemple alors qu'avec "echo" on aurait
du écrire : echo "<td id="mon_id">";
- Optimisation, pourquoi demander à PHP de traiter du HTML brut ?
- ...

Ce qui serait embêtant c'est d'inclure des fonctions faisant des
traitements logiques dans ce bout de présentation des données,

Ce que je recommande souvent pour les personnes commençant en PHP,
c'est de séparer leur code en 2 (pas forcément 2 fichiers):
* la récupération des données
* la présentation des données


Tout à fait, l'un de mes articles favori sur le sujet demeure "Beyond The
Template Engine" de Brian Lozier :
http://www.sitepoint.com/article/beyond-template-engine. Il explique
pourquoi Smarty et d'autres moteurs de "template" sont des coquilles vides.

--
Jean-Marc.


Avatar
Jean-Marc Molina
a écrit/wrote :
Je me pose une question qu'est ce que le mieux.

Melanger du php avec du html ou ecrire que du php ?

Interet inconvenient


Juste pour info ce sujet a déjà été abordé dans les discussions
news://42de19a5$0$25035$ et
news://42e773e7$0$2967$

--
Jean-Marc.