8792 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Mon problème doit être assez simple, mais je ne suis pas vraiment habitué aux templates.
Donc voilà, j'ai une page XHTML dans laquelle j'aimerais inclure un fichier (je le mets en inclusion car il pourra être modifier par l'utilisateur, qui n'est pas moi).
Le problème, c'est que le PHP est séparé du code, car est en teplate (vous l'aviez compris ^^ ).
Alors, mon problème, c'est la définition de la zone, en effet, le fichier inclus apparait bien sur la page, mais au dessus de la page, et non dans la zone "contenue".

Mon code vtemplate :


<?php  session_start(); //ouverture de session
include("include/config.inc.php");
include("class/vtemplate.class.php");
include("class/maclass.inc.php");
include("lib/malibrairie.php");
include("lib/administration.php");
$vtp = new VTemplate;
$page = $vtp->Open("caisses.htm");
//$vtp->setVar($page,"login",$l=login());
$vtp->setVar($page,"administration",$a=administration());
$ban = new basededonnees("10.0.5.190",USER,PASS,BASE);
$ban->requete("SELECT * FROM produits INNER JOIN type ON produits.id_type = type.id_type INNER JOIN marque ON produits.id_marque = marque.id_marque WHERE nom_type='encaissement' ORDER BY ordre_prod");
    $i=0;
        while($i<$ban->combien)
          {
        $d=$ban->suivant();
          $vtp->AddSession($page,"ligne");
                $vtp->setVar($page,"ligne.marque",$d-> nom_marque);
                $vtp->setVar($page,"ligne.nom",$d-> nom_prod);
                $vtp->setVar($page,"ligne.url",$d-> url_prod);
                $vtp->setVar($page,"ligne.photo",$d-> photo_prod);
                $vtp->setVar($page,"ligne.description",$d-> description_prod);
                $vtp->setVar($page,"ligne.logo",$d-> logo_marque);
        $vtp->CloseSession($page,"ligne");
        $i++;
        }

//************l'objet du problème ************************

$ban->requete("SELECT * FROM caisse");
      $d2=$ban->suivant();
          $vtp->AddSession($page,"zone");
                include ("caisse/".$d2->page_nom."" );
          $vtp->CloseSession($page,"zone");

//************l'objet du problème ************************

$vtp->Display($page);
?>


Et donc, dans mon code XHTML, mes zones sont maquées par :


            <!--VTP_zone-->
                
            <!--/VTP_zone-->

            <!--VTP_ligne-->

            <div class="globalprod">
             <div class="titreprod">{#marque} {#nom}</div>
             <div class="photoprod"><a href="{#url}" target='_blank'><img src="photos/{#photo}" height="80" width="80" alt="Photo" border="0"/></a></div>
             <div class="descriprod">{#description}</div>
             <div class="logoprod"><img src="photos/{#logo}" height="80" width="80" alt="Logo Fournisseur" border="0" /></div>
            </div>
            <!--/VTP_ligne-->


Sachant que la zone "ligne" fonctionne parfaitement...

Merci.
Modifié par TheReverendEVIL (22 May 2006 - 11:20)
Bon, on ne peut pas faire d'includes avec des templates (dans un sens, c'est assez logique, non ?), mais j'ai trouvé la solution pour vtemplate.
Je l'a met au cas où.

Le PHP

<?php  session_start(); //ouverture de session
include("include/config.inc.php");
include("class/vtemplate.class.php");
include("class/maclass.inc.php");
include("lib/malibrairie.php");
include("lib/administration.php");
$vtp = new VTemplate;
$page = $vtp->Open("caisses.htm");
//$vtp->setVar($page,"login",$l=login());
$vtp->setVar($page,"administration",$a=administration());
$ban = new basededonnees("10.0.5.190",USER,PASS,BASE);
$ban->requete("SELECT * FROM produits INNER JOIN type ON produits.id_type = type.id_type INNER JOIN marque ON produits.id_marque = marque.id_marque WHERE nom_type='encaissement' ORDER BY ordre_prod");
    $i=0;
        while($i<$ban->combien)
          {
        $d=$ban->suivant();
          $vtp->AddSession($page,"ligne");
                $vtp->setVar($page,"ligne.marque",$d-> nom_marque);
                $vtp->setVar($page,"ligne.nom",$d-> nom_prod);
                $vtp->setVar($page,"ligne.url",$d-> url_prod);
                $vtp->setVar($page,"ligne.photo",$d-> photo_prod);
                $vtp->setVar($page,"ligne.description",$d-> description_prod);
                $vtp->setVar($page,"ligne.logo",$d-> logo_marque);
        $vtp->CloseSession($page,"ligne");
        $i++;
        }

$ban->requete("SELECT * FROM caisse");
      $d2=$ban->suivant();
	$caisse='caisse/'.$d2->page_nom.'';
          $vtp->AddSession($page,"zone");
                $vtp->setVarF($page,"zone.caisse", $caisse );
          $vtp->CloseSession($page,"zone"); 

$vtp->Display($page);
?> 


Vous remarquerez la simplicité de la chose, passer de setVar à setVarF. Smiley rolleyes

Et donc, le HTML, tout simple.


                <!--VTP_zone-->
		    {#caisse}		
            	<!--/VTP_zone-->



            <!--VTP_ligne-->

            <div class="globalprod">
             <div class="titreprod">{#marque} {#nom}</div>
             <div class="photoprod"><a href="{#url}" target='_blank'><img src="photos/{#photo}" height="80" width="80" alt="Photo" border="0"/></a></div>
             <div class="descriprod">{#description}</div>
             <div class="logoprod"><img src="photos/{#logo}" height="80" width="80" alt="Logo Fournisseur" border="0" /></div>
            </div>
            <!--/VTP_ligne-->


Merci à ceux qui se sont creusés les meninges, s'il y en a.
Modifié par TheReverendEVIL (22 May 2006 - 11:16)