8791 sujets

Développement web côté serveur, CMS

Bonjour,
Je suis actuellement occupé à coder une base d'application en PHP en respectant le concept de Modèle-Vue-Controleur.
Tout se passe bien pour le moment de ce coté la, par contre, je désirerais pouvoir insérer les modules dans des divs selon leur ID mais coté serveur !
En effet je trouve énormément de solution avec Javascript, Ajax, mais j'ai du mal à trouver un début de réponse en php...

Ce que j'aimerais réaliser :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

  <head>
    <title>MVC-TYPE</title>
  </head>

  <body>
    <div id="test_id">Test ID non convaincant</div>
    <div id="content"></div>
    <div id="header"></div>
    <div id="center"></div>
    <div id="footer"></div>
  </body>

</html>


J'ai mon armature HTML que j'inclus dans mon fichier php

<?php
include ('armature_html.php');
function ajout_texte(){
#que faire ? pour ajouter du contenu ici qui sera insérer dans la div "test_id"
}
ajout_texte();
?>


Je pense que je vais devoir utiliser DOM ou SIMPLEXML.
Est ce possible ?

Merci d'avance.
Modifié par vallsymachinant (29 Mar 2011 - 14:56)
Bonjour,
Comme toujours ton armature n'as pas d'éléments dynamiques
par exemple si tu lui mets tout bétement

<div id="test_id"><?php echo $xx ?></div> 


Et donc dans le php
$xx="tout ce que tu veux, html texte style javascypte";
include ('armature_html.php');

Modifié par Christele (29 Mar 2011 - 15:22)
Christele a écrit :
Bonjour,
Comme toujours ton armature n'as pas d'éléments dynamiques
par exemple si tu lui mets tout bétement

&lt;div id=&quot;test_id&quot;&gt;&lt;?php echo $xx ?&gt;&lt;/div&gt; 


Et donc dans le php
$xx=&quot;tout ce que tu veux, html texte style javascypte&quot;;
include ('armature_html.php');


Donc la solution serais de créer des echos de variable dans chaque div et d'ensuite d'attribuer la valeur voulue ... pourquoi pas, j'ai peu être cherché midi à quatorze heure Smiley sweatdrop

Si quelqu'un à un début de réponse en DOM ou SIMPLEXML je suis preneur mais je vais faire quelques test avec ton idée Christele Smiley lol
Je te signales que tu peux avec ta variable y mettre (c'est courant) un nom de page
alors on fait ainsi
même architecture, mais
$xx="nous joindre";

au debut de ton html/php

un query qui recherche la page $xx

tu vois c'est une mêthode banale et courante Smiley smile
Christele a écrit :
Je te signales que tu peux avec ta variable y mettre (c'est courant) un nom de page
alors on fait ainsi
même architecture, mais
$xx=&quot;nous joindre&quot;;

au debut de ton html/php

un query qui recherche la page $xx

tu vois c'est une mêthode banale et courante Smiley smile


En fait mon application fonctionne comme ceci :

Index.php qui fait appel en fonction des parametres de l'url à des modules par exemple le module news.mod.php qui lui traite les données, lorsque toutes les données sont misent en places il fait appel à news.view.php qui lui affiche les données.

index.php=> news.mod.php=>news.view.php

J'aurais aimer faire appel à amrmature_html.php au début de l'index quand j'importe mes librairies et puis j'aurais aimer dans la vue (news.view.php) faire appel à la div avec getElementById et lui ajouter le contenu désiré.

Avec ton système qui fonctionne (mais qu'il faudrait tester en terme de ressources?) j'ai procédé comme suit :

J'inclus le fichier armature_html.php à la fin de mon fichier index.html (puisque la variable est vide au début !)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

  <head>
    <title>MVC-TYPE</title>
  </head>

  <body>
    <div id="content">
        <div id="news"><?php echo($news_div_id);?></div>
    </div>
    <div id="header"></div>
    <div id="center"></div>
    <div id="footer"></div>
  </body>

</html>


Puis dans mon news.view.php

$news_div_id.='<table>';
	$news_div_id.='<tr>';
	$news_div_id.='<th>';
	$news_div_id.='<a href="?section=news&mode=liste&param=titre">Titre</a>';
	$news_div_id.='</th>';
	$news_div_id.='<th>';
	$news_div_id.='<a href="?section=news&mode=liste&param=date_pub">Date de publication</a>';
	$news_div_id.='</th>';
	$news_div_id.='<th>';
	$news_div_id.='<a href="?section=news&mode=liste&param=date_val">Date de validitÈ</a>';
	$news_div_id.='</th>';
	$news_div_id.='</tr>';
		foreach($items as $item){
			$news_div_id.='<tr>';
			$news_div_id.='<td>';
			$news_div_id.='<a href="?section=news&mode=lecture&id_news='.$item['id'].'">'.$item['titre'].'</a>';
			$news_div_id.='</td>';
			$news_div_id.='<td>';
			$news_div_id.=$item['date_pub'];
			$news_div_id.='</td>';
			$news_div_id.='<td>';
			$news_div_id.=$item['date_val'];
			$news_div_id.='</td>';
			$news_div_id.='<td>';
			$news_div_id.='<a href="?section=news&mode=modification&status=on&id_news='.$item['id'].'">modification</a>';
			$news_div_id.='</td>';
			$news_div_id.='</tr>';
			}
	$news_div_id.='</table>';


Cela fonctionne bien mais j'ai parfois l'impression que ca rame et je suis en local, le fait d'incrémenter la variable ralenti peut être le tout ? en tout cas je dois rendre le code plus propre en rassemblant ce qui peut être rassembler pour éviter les répétitions mais voila, cela fonctionne !

Une autre idée ? merci en tout cas Christelle, je n'y avais même pas pensé lol
Modifié par vallsymachinant (29 Mar 2011 - 17:42)
Tu peux concaténer a fond

$news_div_id.='<table><tr><th><a href="?section=news&mode=liste&param=titre">Titre</a>';
$news_div_id.='</th><th><a href="?section=news&mode=liste&param=date_pub">Date de publication</a>';
$news_div_id.='</th><th><a href="?section=news&mode=liste&param=date_val">Date de validitÈ</a>';
$news_div_id.='</th></tr>';
foreach($items as $item){
   $news_div_id.='<tr><td><a href="?section=news&mode=lecture&id_news='.$item['id'].'">'.$item['titre'].'</a>';
   $news_div_id.='</td><td>'.$item['date_pub'].'</td><td>';
   $news_div_id.=$item['date_val'].'</td><td>';
   $news_div_id.='<a href="?section=news&mode=modification&status=on&id_news='.$item['id'].'">modification</a>';
   $news_div_id.='</td></tr>'; 
  }
$news_div_id.='</table>';




Je vais concaténer à donf oui Smiley lol

Je fait quelques tests pour essayer de rendre tout ca dynamique :

          <?php		if(isset($_GET['section']) && in_array($_GET['section'], $sections))
		{
		# $temp_section contient le nom de la section passé en url afin d'obtenir le contenu de celle-ci.
                $temp_section='$'.$_GET['section'].'_div_id';
		echo($temp_section);
		}
		else {
                include("views/index.inc.php");
		}
                ?>


En fonction de la section passé en url, je récupère ce paramètre et je lui ajoute "_div_id" par contre lorsque j'en fait un echo la variable $temp_section est considéré comme STRING, comment puis je forcer la main ? je viens de lire les variables dynamique mais je ne pense pas que cela va régler mon problème ^^

Sinon j'aurais vraiment voulu avoir mon armature (genre ID : colone1, colone2, Header, Footer) et pouvoir y ajouter du contenu (un peu comme fait wordpress, je pense).

Ta solution me plait mais je vais faire quelques tests avant d'adapter tout mes modules !
Merci pour le temps que tu me consacre !
Pour finir, je fait simplement un include du module désiré dans l'armature HTML et j'ajouterais une couche de javascript plus tard.

J'ai du séparé par exemple un module en deux, utilisateur (inscription, profil affichage, profil modification) et session (connexion et déconnexion) qui étaient dans un seul script auparavant.

Merci pour ton aide en tout cas Smiley smile