Page 1 sur 1

Probleme d'affichage template[besoin d'aide car présente son

Posté : 12 juin 2009, 11:46
par Lolu
EDIT: Ca va paraître déplacé mais je le dis quand même.. :oops: je suis stagiaire et je dois présenter mon application à 15h... avec ça qui fonctionne :?

Bonjour,

j'avais un code de template Smarty qui n'affichait rien et après correction il s'affichait à nouveau.
Et ensuite je ne sais pas à quoi j'ai retouché il ne fonctionne plus et je n'arrive pas à le refaire fonctionner.
J'aiessayé de corrigé des erreurs de syntaxe mais rien n'y fait.
Je veux afficher un tableau mais sur ma page finale php (compilée avec le template) plus rien ne s'affiche (enfin un petit caractère semblable à un petit trait).

Cela vient du code de mon template et pas de php je suppose, puisque je n'ai pas touché a ma page php.

Voilà le code de mon template (en .tpl, mais là je le met en php pour que cela soit lisible) :

Merci à vous si vous pouvez m'aider ! :wink:

{include file="header.tpl" mylogo="MANOUKIAN.gif"}

Modèle: {$codeM} {$libM} <br/>
<form>
<table name="tab_modele" align="left" border="1">

 
	
{section name=prd loop=$lprd}
{if $smarty.section.prd.first}

	<tr>
		<th>Couleur</th>
		<th>Date liv</th>
		<th>Qté</th>
		<th>{$lprd[prd].LIB_T1}</th>
		<th>{$lprd[prd].LIB_T2}</th>
		<th>{$lprd[prd].LIB_T3}</th>
		<th>{$lprd[prd].LIB_T4}</th>
	</tr>
{/if}	
	<tr>
		<td>{$lprd[prd].couleur}</td>
		<input type="Hidden" name="C{$smarty.section.prd.rownum}" Value="{$lprd[prd].couleur}">
		<td>{$lprd[prd].date_liv}</td>
		<td></td>
		<td><input type="{if $lprd[prd].LIB_T1 eq ""}Hidden{else}Text{/if}" name="C{$smarty.section.prd.rownum}T1" Value="{$lprd[prd].qt_taille1}"</td>
		<td><input type="text" name="C{$smarty.section.prd.rownum}T2" Value="{$lprd[prd].qt_taille2}"</td>
		<td><input type="text" name="C{$smarty.section.prd.rownum}T3" Value="{$lprd[prd].qt_taille3}"</td>
		<td><input type="text" name="C{$smarty.section.prd.rownum}T4" Value="{$lprd[prd].qt_taille4}"</td>
	</tr>
{/section} 
</table>
</form>

{include file="footer.tpl"}


Posté : 12 juin 2009, 12:26
par Blaoms
Good Luck ;)

Posté : 12 juin 2009, 14:39
par stopher
Slt ,

Comment as tu configuré Smarty ?

Tu as désactivé le cache ?

Car si tu testes ta page (sans tableau) avec le cache à TRUE , tu devras attendre la fin de la validité de ce fichier mis en cache pour au finale voir les modifications apportées à ton template .

Si ton affichage est dynamique , met le paramètre "cache" de Smarty à FALSE.

A partir du moment ou ton site est en dev , aucun cache d'affichage ne devrait être actif .

Ch.

Posté : 12 juin 2009, 15:10
par Lolu
Merci beaucoup de répondre on est pas encore venu me demandé la présentation =) !!

Je ne sais pas comment (où) configurer Smarty... ?

Posté : 12 juin 2009, 15:16
par momox
Regarde dans la documentation de Smarty, ca pourra t'aider ;)

Posté : 12 juin 2009, 15:21
par Lolu
J'ai rajouté " $npo->caching = true; " sur ma page.
Mais ça ne fonctionne pas mieux.
Ce qui est fou c'est que ce matin en modifiant un peu de syntaxe cela fonctionnait, et maintenant plus.
Donc je pense que simplement en re modifiant les bonnes choses cela fonctionnerait a nouveau, non ? :?

Posté : 12 juin 2009, 15:22
par momox
Normalement oui, c'est le principe...
Mais je ne pourrais pas t'aider plus, je ne me sers pas de Smarty ou autres moteurs de templates.

Posté : 12 juin 2009, 15:24
par stopher
Il faut désactiver le cache ( normalement par défaut il ne l'est pas ! ).

En mettant à TRUE , tu as activé le cache !! il faut mettre FALSE !

Posté : 12 juin 2009, 15:25
par Lolu
J'ai essayé les deux déjà... :wink:

Posté : 12 juin 2009, 15:25
par stopher
Donne nous les codes coté php .. car avec le template , on ne peut pas faire grand chose !

Posté : 12 juin 2009, 15:28
par Lolu
Je pensais que ça suffisait car à un moment donné cela fonctionnait et je n'ai pas retouché au php mais que au tpl.
Voici le code de ma page php:
<?php
session_start();
include ("mylib/func.php");
init_profile();
if(!isset($_SESSION['LANG'])):		
	$lng="fr";
	else:
	$lng=$_SESSION['LANG'];
endif;
include ("setup.inc.php");
include ("config.inc.php");
//include ('config.inc.php');
$npo = new Smarty_po($_SESSION['LANG']);
$npo->caching = false; 
//----------------------------------------------
// connexion à la base de donnée
$conn_my = mysql_connect($MY_srv , $MY_user , $MY_pwd ) 
	or die('Connexion impossible !') ;
mysql_select_db($MY_bd) or die('Impossible de trouver la base !');
//----------------------------------------------
if( isset($_GET['M'])) $_SESSION['M']= $_GET['M'];
//Requête code modele et libelle modele
$req="SELECT modele,libelle_modele FROM articles";
$req.=" WHERE modele=".$_GET['M'];

$res=mysql_query($req);
if ($res)
		{
	while($data=mysql_fetch_array($res))
			{
			$codeM=$data['modele'];
			$libM=$data['libelle_modele'];
			}	
			$npo->assign("codeM",$codeM);
			$npo->assign("libM",$libM);
			}
//Requête couleur date livraison et quantité

$req="SELECT DISTINCT a.couleur, a.libelle_couleur, a.LIB_T1, a.LIB_T2, a.LIB_T3, a.LIB_T3, a.LIB_T4, a.LIB_T5, a.LIB_T6, a.LIB_T7, a.LIB_T8, a.LIB_T9, a.LIB_T10, a.LIB_T11, a.LIB_T12, a.date_dispo, c.qt_taille1, c.qt_taille2, c.qt_taille3, c.qt_taille4, c.qt_taille5, c.qt_taille6, c.qt_taille7, c.qt_taille8, c.qt_taille9, c.qt_taille10, c.qt_taille11, c.qt_taille12, c.date_liv, c.transferer
FROM articles a
LEFT JOIN commande_ligne c ON c.LPR = a.LPR
AND c.saison = a.saison
AND c.modele = a.modele
AND c.couleur = a.couleur
AND c.TCO =%d
AND c.Vesti = 'VRA'
WHERE a.LPR =%d
AND a.saison =%d
AND a.modele =%d
AND a.statut = 'A'
";

$req=sprintf($req,$_SESSION['C'],$_SESSION['ligne'],$_SESSION['sais'],$_SESSION['M']);
$res=mysql_query($req);
if ($res)
	{
		$i=0;
		while($data=mysql_fetch_array($res))
			{
			foreach($data as $key=>$val)
				$tbt[$key]=$val;
			
			$tcmd[$i]=$tbt;
			$i++;
			}
		
		$npo->assign("lprd",$tcmd);	
		}
		

		
$npo->display("edit_cmd.tpl");
?>

Et ce que j'ai a la place du tableau (un caractere qu'étrangement je ne peux pas selectionné avec ma souris):

Image

Posté : 12 juin 2009, 15:33
par stopher
C'est quoi cette balise <form> toute seule sans paramètre ? ..:-k

Le pb n'est pas là mais bon quand même ..

Quelles sont les sources de ta pages générés ?
Montre les nous .

Posté : 12 juin 2009, 15:37
par Lolu
En effet elle sert à rien...
<!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" xml:lang="fr" lang="fr">
<head>
<title>Po-Web</title>
<link rel="stylesheet" type="text/css" href="styles/bcbg1.css" media="all" />
<link rel="stylesheet" type="text/css" href="styles/bcbg1-form.css" media="all" />
<link rel="stylesheet" type="text/css" href="styles/bcbg1-tables.css" media="all" />
</head>
<body>
<div id="global">
<div id="hdr">
<img align="left" src="img/MANOUKIAN.gif" width="170" height="20" alt="BCBGMaxazria-Group"/>
<div align="center" >POWEB 3.0</div>
<form name="frm_index" class="login" method="POST" action="index.php">
<input type="submit" name="index" value="Index" class="btn"  >
 
</form>
 
 
 
</div>
<div id="content">
Modèle: 584428 VESTE MASCULIN MANC.RETROUSSE <br/>
<form>
<table name="tab_modele" align="left" border="1">
 
</table>
</form>
</div>
<div id="navbas">
<ul class="navbar">
<li><a href=></a></li>
<align="left"><li><a href="http://localhost/poweb/index.php" title="Changer de pays et/ou collection">SUISSE / <font color="red">FEMME A/H 2009 </font></a></li></align>
</ul>
</div>
</div>
</body>
</html>

EDIT: En effacer les lignes de bouclage "section" j'ai mon tableau qui s'affiche mais avec aucune valeurs dedans bien sur...

Posté : 12 juin 2009, 15:47
par stopher
Bon , est bien ça me semble clair !

ton problème vient de cette ligne :

Code : Tout sélectionner

{section name=prd loop=$lprd}
Perso je préfère les foreach .. mais bon .. chacun ses gouts


Une chose m'étonne .. dans ton code php , c'est la façon dont tu assign la variable Smarty dans ta boucle while !
   while($data=mysql_fetch_array($res))
            {
            foreach($data as $key=>$val)
                $tbt[$key]=$val;
            
            $tcmd[$i]=$tbt;
            $i++;
            }
        
        $npo->assign("lprd",$tcmd);    
        }
Déjà c'est moi ou tu as un souci avec les accolades ouvrantes ..

Normalement php te renvoie un super Parse error: syntax error, unexpected '}'

Commence par corriger celà ..

Ensuite , si celà ne fonctionne toujours pas , vérifie ce que contiend $tcmd ...
Si celui-ci est vide ou pas ..
var_dump($tcmd);
PHP est tres permissif , mais il faut rester tres rigoureux

Ch.

Posté : 12 juin 2009, 16:16
par Lolu
Un soucis avec les accolades ouvrantes ?
J'ai procédé de cette façon dans mes autres pages et ça fonctionne je n'ai pas d'erreur mais je veux bien changer ça ?

Bref j'ai fait un var_dump et en effet ma requête renvoyait aucun enregistrement.

J'ai modifié ma requête en remplaçant le WHERE:
$req="SELECT DISTINCT a.couleur, a.libelle_couleur, a.LIB_T1, a.LIB_T2, a.LIB_T3, a.LIB_T3, a.LIB_T4, a.LIB_T5, a.LIB_T6, a.LIB_T7, a.LIB_T8, a.LIB_T9, a.LIB_T10, a.LIB_T11, a.LIB_T12, a.date_dispo, c.qt_taille1, c.qt_taille2, c.qt_taille3, c.qt_taille4, c.qt_taille5, c.qt_taille6, c.qt_taille7, c.qt_taille8, c.qt_taille9, c.qt_taille10, c.qt_taille11, c.qt_taille12, c.date_liv, c.transferer 
FROM articles a 
LEFT JOIN commande_ligne c ON c.LPR = a.LPR 
AND c.saison = a.saison 
AND c.modele = a.modele 
AND c.couleur = a.couleur 
AND c.TCO =%d 
AND c.Vesti = 'VRA' 
WHERE a.LPR =%d 
AND a.saison =%d 
AND a.modele =%d 
AND a.statut = 'A' 
"; 
par un AND et maintenant j'ai des centaines d'enregistrements... Ce qui n'est pas normal non plus.
Cette requête c'est mon maître de stage qui l'avait faite, moi je ne suis pas très allaise avec les LEFT JOIN ni avec la commande sprintf (même avec de la doc..!)
De plus il met un where au milieu, qui renvoie un autre résultat quand je le remplace par un AND...
Ca part sur du SQL désolé :? .