Fork me on GitHub




(1) 2 »


Problèmedetemplate smarty
Aspirant
Inscrit: 24/09/2003 10:18
Messages: 28
Bonjour,

Ma configuration :
Easyphp 1.8;
Dernière version de Xoops 2.0.17

J'ai un problème relativement simple. Je tente d'afficher des données dans un template sous forme de tableau.

Mon code pour transférer les données vers le template est le suivant :





<?

$announce=array();
// SQL request for insert
$sqlfetch="SELECT * FROM ".$xoopsDB->prefix("phpraid_announcements")."";
$result $xoopsDB->query($sqlfetch);
// Test for no items in database
if (!$result $xoopsDB->query($sqlfetch)) {
    
redirect_header('index.php',5,_MI_NORESULTERROR);
}
$i=0;
while(
$myrow=$xoopsDB->fetchArray($result)) {
    echo 
$announce[$i]['announcements_id']= $myts->sanitizeForDisplay($myrow['announcements_id'],0,0,0);
    echo 
$announce[$i]['title']= $myts->sanitizeForDisplay($myrow['title'],0,0,0);
    echo 
$announce[$i]['datestamp']= $myts->sanitizeForDisplay($myrow['datestamp'],0,0,0);  
    
$i++;
    
$xoopsTpl->append('announces',$announce);        
}

?>


Le code de la page html est le suivant :

<table class="outer" cellspacing="1" cellpadding="4">

<
tr><th align="center">Annonces</th><th align="center">Date de validité</th></tr>

<{
section name=announce loop=$announces}>
<
tr><{cycle values=odd,even assign=class}>
    <
td class="<{$class}>">
        <
a href="admin_announces.php?id=<{$announces[announce].announcements_id}>"}>"><{$announces[announce].title}></a>
    </td>
    <td class="
<{$class}>">
        <
{$announces[announce].datestamp}>
    </td>
</tr>
<{/section}>

</table>


Les echo me servent uniquement à voir si mes variables sontbien récupérées dans la bdd.
Mon problème se traduit pas le fait que lorsque la ligne $xoopTpl->... n'est pas en remarque, le code s'arrête sans boucler sur mes variables et n'affiche rien (j'ai juste la 1ère occurence des résultats).
Si elle est en remarque, la boucle s'effectue bien (toute les valeurs de ma table apparaissent.

J'en déduit donc que mon code php est correct mais qu'il y a un pb avec le fonctionnement de xooTpl->... ou avec le code de mon template.

Pourriez-vous m'aider svp ?

Merci par avance.

Posté le : 14/09/2007 15:38
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Bonjour,
je ne suis pas le meilleur spécialiste pour répondre, mais déjà dans ton code je ne vois pas cette ligne :
$xoopsOption['template_main']= 'nomdumodule_nomdela page.html';


Je te propose de regarder les méthodes utilisées dans le module news(les dernières versions pas la 1.1), qui est en principe l'exemple à suivre.

Posté le : 14/09/2007 16:37
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Aspirant
Inscrit: 24/09/2003 10:18
Messages: 28
C'est normal que tu n'ais pas vu cette ligne car la partie php et un fichier à part qui est pris par include dans la pageprincipale qui elle contient bien la ligne dont tu parles.

De plus le template à été correctement notifié avec xoops_version.

(je vais qd même revrifier l'ortographe même si je fais en général des copier/coller pour mes variables pour éviter ce type de désagrément.)

Posté le : 14/09/2007 16:43
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
essayes cela
<table class="outer" cellspacing="1" cellpadding="4">
<
tr><th align="center">Annonces</th><th align="center">Date de validité</th></tr>
<{foreach 
item=announce from=$announces}>
    <
tr class="<{cycle values="even,odd"}>">
        <
td><a href="admin_announces.php?id=<{$announce.announcements_id}>"}>"><{$announce.title}></a></td>
        <td><
{$announce.datestamp}></td>
    </tr>
<{/foreach}>
</table>

Posté le : 14/09/2007 18:10
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Aspirant
Inscrit: 24/09/2003 10:18
Messages: 28
J'ai essayé ce code.
Malheureusement même punition.

Posté le : 17/09/2007 09:08
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
le template proposé par garrath est parfait, c'est celui qu'il faut utiliser.
L'erreur vient de ton code php, dans le quel tu envois en bouble le contenu de ta variable à la variable smarty.

deux corrections possibles :

while($myrow=$xoopsDB->fetchArray($result)) {
    
$announce['announcements_id']= $myts->sanitizeForDisplay($myrow['announcements_id'],0,0,0);
    
$announce['title']= $myts->sanitizeForDisplay($myrow['title'],0,0,0);
    
$announce['datestamp']= $myts->sanitizeForDisplay($myrow['datestamp'],0,0,0);  
    
$xoopsTpl->append('announces',$announce);        
}


ou

while($myrow=$xoopsDB->fetchArray($result)) {
    
$announce[]['announcements_id']= $myts->sanitizeForDisplay($myrow['announcements_id'],0,0,0);
    
$announce[]['title']= $myts->sanitizeForDisplay($myrow['title'],0,0,0);
    
$announce[]['datestamp']= $myts->sanitizeForDisplay($myrow['datestamp'],0,0,0);  
}
$xoopsTpl->assign('announces',$announce);


edit : j'ai supprimé $i qui est inutile

Posté le : 17/09/2007 10:23
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Aspirant
Inscrit: 24/09/2003 10:18
Messages: 28
Je vous remercie de votre aide.

Bon, on avance un peu.

Le code suivant affiche correctement le tableau avec les valeurs :

// Added lines
include('../../../mainfile.php');
include (
'admin_header.php');

$xoopsOption['template_main']="xphpraid_admin_form_announces.html";
include_once(
XOOPS_ROOT_PATH "/header.php");


XOOPS_ROOT_PATH."/class/xoopsformloader.php";
include (
XOOPS_ROOT_PATH."/class/pagenav.php");


// Put hear functions
// End of functions
// Lines removed coming from art framework to show tabbed menu
//xoops_cp_header();
//loadModuleAdminMenu(8, "Index");

$announce=array();
// SQL request for insert
$sqlfetch="SELECT * FROM ".$xoopsDB->prefix("phpraid_announcements")."";
$result $xoopsDB->query($sqlfetch);
// Test for no items in database
if (!$result $xoopsDB->query($sqlfetch)) {
    
redirect_header('index.php',5,_MI_NORESULTERROR);
}
while(
$myrow=$xoopsDB->fetchArray($result)) {
    
$announce['announcements_id']= $myts->sanitizeForDisplay($myrow['announcements_id'],0,0,0);
    
$announce['title']= $myts->sanitizeForDisplay($myrow['title'],0,0,0);
    
$announce['datestamp']= $myts->sanitizeForDisplay($myrow['datestamp'],0,0,0);  
    
$xoopsTpl->append('announces',$announce);        
}

// Line removed coming from art framework to show tabbed menu
//xoops_cp_footer();
// Added line
include_once(XOOPS_ROOT_PATH "/footer.php");

?>


La problématique est que je n'ai plus dans ce cas le menu tabulaire.

Si je laisse en place les lignes qui permettent de l'afficher, ceci provoque un défaut d'affichage.
Le menu est de nouveau visible si je retire les remarque sur la ligne du loadadminmenu mais celui-ci est affiché à la suite du tableau au lieu d'être avant.

Posté le : 17/09/2007 10:53
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Apparemment tu utilises une version de la branche 2.2 de Xoops et personnellement je ne pourrai pas t'aider d'avantage.

Posté le : 17/09/2007 11:30
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Aspirant
Inscrit: 24/09/2003 10:18
Messages: 28
Merci DuGris.

En fait, il semble que le template soit prioritaire sur l'affichage du html généré par le php quel que soit la position du code sur la page php appelant le template.

Peut-être une idée à creuser de ce côté de faire en sorte que ce ne plus le cas ?

Posté le : 17/09/2007 15:02
Partager Twitter Partagez cette article sur GG+
Re: Problèmedetemplate smarty
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Citation :

borisj a écrit:
Merci DuGris.

En fait, il semble que le template soit prioritaire sur l'affichage du html généré par le php quel que soit la position du code sur la page php appelant le template.

Peut-être une idée à creuser de ce côté de faire en sorte que ce ne plus le cas ?


C'est n'est pas la solution, sinon les templates ne serviraient plus à rien

Pourquoi ne pas passer le contenu de ce que tu affiches en php au template, comme pour le tableau précédent, ça serait plus logique !!!

Posté le : 17/09/2007 18:12
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

56 Personne(s) en ligne (48 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 56 | Plus ...