Bonjour,
je suis débutant dans le développement web et je cherche une solution comment séparer le code HTML du code PHP, est que vous pouvez m'aider SVP ?
Merci.
Bonjour,
je suis débutant dans le développement web et je cherche une solution comment séparer le code HTML du code PHP, est que vous pouvez m'aider SVP ?
Merci.
Bonjour,
qu'entend tu pars la ? as tu un exemple à donner ?
bonjour,
je vous donnes un exemple d'un tableau en php et html les variables var1et var.. je le récupère depuis une base de données.
ce que je demande c'est si possible de ne pas écrire echo"<table>"....dans le fichier php et de l'ecrire dans un fichier html séparer et d'appeler le résultat du fichier php dans le tableau du fichier html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 echo"<table>"; echo"<tr>"; echo"<td>".$var1."</td>"; echo"<td>".$var12."</td>"; echo"<td>".$var2."</td>"; echo"<td>".$var2."</td>"; echo"</tr>"; echo"</table>";
Merci une autre fois.
Ce n'est pas possible de séparer complètement le PHP du HTML vu que le PHP assure en partie l'affichage, mais c'est possible (même recommandé à mon avis) de séparer le code en différentes parties, comme c'est notamment le cas en MVC.
De manière simplifiée et pour reprendre ton exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php // Logique de la page, PHP uniquement $viewData = array( 'tdVars' => array($var1, $var2, $var3...), 'otherVar' => 'Hello', ... ); ?> <!-- Code HTML, et PHP uniquement utilisé pour l'affichage --> <table> <tr> <?php foreach($viewData['tdVars'] as $var): ?> <td><?php echo $var ?></td> <?php endforeach; ?> </tr> </table>
Eeeeh si, c'est possible. C'est d'ailleurs ce qui à fait le lit des moteurs de templates comme Smarty ou les squelletes de SPIP.Ce n'est pas possible de séparer complètement le PHP du HTML vu que le PHP assure en partie l'affichage, mais c'est possible (même recommandé à mon avis) de séparer le code en différentes parties, comme c'est notamment le cas en MVC.
Tout repose sur un seul concept: la bufferisation de contenu (bonjour l'anglicisme).
Voici concrêtement de quoi il s'agit. Nous avons un application pilotée par un ensemble de scripts PHP que nous appelleront les contrôleurs. Pour afficher les données que ces contrôleurs manipulent, nous utilisons des vues HTML (utiliser un autre format est tout à fait possible par ailleurs).
Voici notre vue:
fichier ma_page.html
Ce code HTML ne devra jamais être appellé par le navigateur du client, et pour cause, il manque les données. Afin de pouvoir insérer ces dernières, nous avons placé un certain nombre de pseudo tags pour identifier l'endroit ou les mettre. Il faut donc mettre ce fichier de vue dans une partie inaccessible au navigateur du client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Insert title here</title> </head> <body> <h1>Ma Page</h1> <p>Bonjour je m'appelle %nom% %prenom% et j'ai %age% ans.</p> </body> </html>
Maintenant, nous allons créer le contrôleur, c'est lui qui sera effectivement chargé de tout le travail:
Et voilà, nous venons de séparer totalement le traitement (le PHP) de l'affichage (le HTML). Cet exemple se veut volontairement simpliste, il n'est destiné qu'a comprendre la logique de la bufferisation de contenus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 // initialisons les variables $nom = "Delespierre"; $prenom = "Benjamin"; $age = 24; // On va charger le contenu de la vue, plusieurs méthode sont possibles: // - réccupérer le contenu avec file_get_contents // - bufferiser le contenu avec ob_start / ob_end // - on peut même utiliser une URL, du XML ou tout ce qui te passe par la tête // nous allons utiliser la seconde alternative // on commence à "bufferiser" // ce qui signifie qu'au lieu d'afficher // les donnés sur le navigateur, // PHP va les stocker dans un buffer ob_start(); // on inclut la vue à charger include "ma_page.html"; // on réccupère ce qu'on vient d'écrire $html = ob_get_contents(); // on arrête de bufferiser ob_end_clean(); // Maitenant on fait les remplacements: $remplacement = array( '%nom%' => $nom, '%prenom%' => $prenom, '%age%' => $age ); $html = str_replace(array_keys($remplacement), array_value($remplacement), $html); // Finalement on affiche ce qu'on a produit echo $html;
Bien d'autres techniques existent pour séparer proprement le traitement de la mise en forme. Si tu souhaite en apprendre plus, je te recommande d'apprendre le paradigme MVC, c'est de loin ce qui est le plus utilisé dans ce cas à l'heure actuelle pour la réalisation d'IHM.
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Moi perso, j'utilise un process perso qui consiste à créer par page un HTML avec des tags et un php qui valorise une variable par tag. A la fin du traitement PHP, tu remplaces les tags par le contenu des variables et tu affiches ce HTML généré.
J'imagine qu'il existe des frameworks qui le permettent....
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.
Linus Torvalds
Personnellement j'utilise désrmais la syntaxe alternative, c'est à la fois ce qu'il existe de plus puissant de plus performant pour créer des vues.
Mes vues sont donc en nom.format.php et appelées depuis une classe de chargement qui injecte dans leur scope les variables reçues des différents contrôleurs invoqués durant le flot de traitement de la requête.
Je ne comprends pas du tout cet engouement actuel pour les moteur de templates... PHP est à la base un moteur de templates en lui même. Il faut juste l'utiliser correctement de ne pas faire n'importe quoi comme mettre des executions de requêtes SQL dans des vues par exemple - ce qu'on voit malheureusement trop souvent
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Bonjour, dans le cadre de votre exemple comment sont gérées les boucles exemple si l'on récupère des données de la bdd, avec unBien à vous,
Code : Sélectionner tout - Visualiser dans une fenêtre à part while($data=mysql_fetch_assoc($result))
S. P.
Un moteur de template qui sait utiliser les boucles est une perte de temps, il vaut mieux utiliser la syntaxe alternative, c'est plus rapide et surtout plus naturel.
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
oui je comprends,
mais ce que je voudrais c'est que vraiment il n'y ait plus de code php dans le html c'est une contrainte que j'ai.
par avance merci.
Contrainte imbécile mais bon. On peut à l'extrême limite le comprendre quand des intégrateurs qui ne connaissent vraiment rien à PHP doivent intervenir sur la couche présentation... A la rigueur.
Smarty ou Twig savent faire ce genre de choses.
Dans tous les cas, essayer de faire le tien relève du non sens. Comme l'a fait remarquer Rasmus à maintes reprises, PHP n'a pas besoin de moteur de template: PHP est un moteur de template !
Je m'y suis moi même essayé, à plusieurs reprises (je suis maso ) et à chaque fois, je me suis aperçu que pour couvrir tous les besoin, il fallait énormément de temps afin de créer quelque chose de suffisamment générique.
Template Engine ? YAGNI !
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Je me trompe, ou le pauvre aymen8219 s'est complètement perdu en route ?
Tout ce qu'il voulait savoir, c'est remplacer :
Par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php echo"<table>"; echo"<tr>"; echo"<td>".$var1."</td>"; echo"<td>".$var12."</td>"; echo"<td>".$var2."</td>"; echo"<td>".$var2."</td>"; echo"</tr>"; echo"</table>"; ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php // ici, du code PHP ?> <!-- ici, du code HTML, avec par endroit des insertions de code PHP --> <table> <tr> <td><?php echo $var1; ?></td> <td><?php echo $var12; ?></td> <td><?php echo $var2; ?></td> <td><?php echo $var2; ?></td> </tr> </table> <?php // ici, encore du code PHP ?> <!-- ici, encore du code HTML,... -->
J'ajouterai qu'il s'agit d'un thread qui à un an, c'est normal qu'il soit plus là
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
oui je suis désolé, pour ma part je codais je codais tout un temps sans que cela pose de problème et tout à coup on m'a dit plus de traitement dans l'affichage et c'est la que je suis tombé sur ce poste,
par conséquent la technique de bufferisation me plaisait bien même si en toute honnêteté j'ai testé la quasi totalité des moteurs de template même si PHP est un moteur de template, je ne peux même pas avoir de synthaxe alternative, car on m'a dit plus de traitement ou de php dans l'affichage...
Du coup je pense m'orienter vers rainTPL sans en être sur, je pèse encore le pour et le contre.
Désolé d'avoir sorti ce topic du placard.
ça c'est encore un type qui doit souvent mettre les mains dans le cambouis et qui du haut de son expérience prend une décision de m..de pour je ne sais quelle raison à la mode.
Que tu ne fasses aucun traitement lourd dans tes vue, c'est plutôt une très bonne chose mais de là à interdire une boucle ?!???!
Allez je te conseille de passer par XML/XSLT tu obtiendras ton HTML sans aucun code PHP dedans et tu lui cloueras le bec.
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Mais pire encore quand on m'a dit pas une boucle j'étais très surpris...
Je veux bien croire qu'un designer n'y connaisse rien mais de la...
Je m’attendais à tout sauf à ça, je suis vraiment tombé des nues!
Ah ça s'explique : décision prise par un designer.
Le truc c'est que de ton côté tu logeais peut-être bien trop de traitements dans tes vues et à bout il est parti en sucette en tapant l'extrême opposé.
Essaye de négocier un juste milieu : plus aucun traitement sauf une boucle de temps en temps et un if par ci par là, rien de plus.
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
j'ai pas le dernier mot c'est le fils du bosse. En gros c'est ou j'écrase et j'éxécute ou je prend la porte...
Quoi qu'il en soit je suis pas un âne qu'on fait avancer à la carotte, tôt ou tard je vais partir.
plutôt même tôt que tard.
Aouch, c'est quand même du super lourd ce que tu lui propose là ! Super puissant mais surtout super compliqué à mettre en place, c'est pas adapté à tous les cas de figure...Allez je te conseille de passer par XML/XSLT tu obtiendras ton HTML sans aucun code PHP dedans et tu lui cloueras le bec.
Comme je disait:
Mon conseil: utilise Twig.Contrainte imbécile mais bon. On peut à l'extrême limite le comprendre quand des intégrateurs qui ne connaissent vraiment rien à PHP doivent intervenir sur la couche présentation... A la rigueur.
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager