Page 1 sur 1

Assignation template et WHILE

Posté : 24 juin 2008, 20:56
par nelumbo
Bonsoir,

Je débute en PHP et je n'arrive pas assigner le résultat de ma boucle à mon template.
<?php
session_start();
include("header.php");
$tplListing = new TplLoad;

$variable = $_GET['variable'];

$sql = mysql_query("SELECT username FROM users WHERE completed_profile='1' AND f_23=$variable ORDER BY username ASC", $bdd2);

while($affichage = mysql_fetch_array($sql, MYSQL_ASSOC)){
   echo $affichage['username'],'<br>';
}

$tplListing->assign('list',$listing);
$tplListing->display('dynamique.tpl');


mysql_close($bdd2);

include "footer.php";
?> 
Je souhaiterai que $listing = $affichage['username'] :D

Je ne sais pas du tout comment faire...

Posté : 24 juin 2008, 22:20
par djtec
Bonsoir,

Essaye ceci:
while($affichage = mysql_fetch_array($sql, MYSQL_ASSOC))
{
      $tplListing->assign('list',$affichage['username'].'<br>');
}

Ou un truc dans ce genre tout dépend comment fonctionne ton système de template.

Posté : 24 juin 2008, 22:44
par nelumbo
Cela affiche uniquement le dernier 'username' .

Avec cette variante, c'est idem.
   while($affichage = mysql_fetch_array($sql, MYSQL_ASSOC))
{
      $list = $affichage['username'].'<br>';	  
} 

$tplListing->assign('list',$list);

Posté : 25 juin 2008, 01:43
par mcorgnet
Le problème, c'est que tu assignes à chaque tour de boucle une valeur à ta variable. Ca affiche le dernier, parce qu'en fin de boucle, c'est la dernière itération qui écrit dans ta variable.

Ton système de template t'offre normalement une méthode genre :

assign_block_vars (template de phpbb)

qui permet d'assigner des variables à un tableau dans ton template.

Je sais pas si je suis clair ...

Posté : 25 juin 2008, 10:40
par katagoto
Il faut traité ça par tableau je penses :
$list=array();
while($affichage = mysql_fetch_array($sql, MYSQL_ASSOC)) 
{ 
      $list[] = $affichage['username'].'<br>';       
} 

$tplListing->assign('list',$list);
Je penses que ça doit marcher, en générale les moteurs de template fonctionnent comme ça...

Je vous avourais que je n'ai jamais utilisé celui de PHPBB

Posté : 25 juin 2008, 12:11
par djtec
Katagoto pour PHPBB il faut faire comme ceci
while($affichage = mysql_fetch_array($sql, MYSQL_ASSOC))
{
	$tplListing->assign_block_var('list', array(
		'MEMBER' => $affichage['username'].'<br>'
	));
} 
Et cela répétera le bloc list autant de fois qu'il y a de membres voilà.

Et pour son template je penchais plus pour un truc dans se genre mais je ne sais pas si tout les template son pareil.

Posté : 25 juin 2008, 12:24
par katagoto
Ok, c'est toujours bon à savoir :lol:

Une réponse de l'auteur ???

Posté : 25 juin 2008, 12:48
par nelumbo
Ouaip, c'est moi :) .

Aucune des 2 solutions ne fonctionnent.

La solution de katagoto affiche 'array'. :shock:

C'est pas évident de débuter en php et voilà que les templates s'y mettent

:lol: .

Posté : 25 juin 2008, 13:02
par katagoto
Mais pourquoi veut-tu prendre celui de PHPBB ? tu aime souffrir :lol:
Pourquoi commencer par un système de template ?

Si tu en veux un plus simple : [url=http://www.siteduzero.com/tuto-3-29602- ... s-tpl.html]Talus' TPL[url] est bien, je trouve

Posté : 25 juin 2008, 13:10
par djtec
C'est vrai que Talus Tpl est bien mais si tu veux inclure des fichiers php tu peux pas le seul que j'ai trouvé qui accepte d'inclure des fichiers php c'est phpbb et tu peux les inclure ou tu veux dans ton tpl.

Moteur de PhpBB: http://g-rossolini.developpez.com/compa ... hpbb2#LIII

Posté : 25 juin 2008, 13:18
par katagoto
Bah tu peux très bien inclure le template d'un côté et le PHP qui y correspond de l'autre...

Ca revient au même

Posté : 25 juin 2008, 17:48
par nelumbo
Bhein en fait, il s'agit d'un script de deltascripts que je modifie doucement... doucement. Peut être une solution du côté des smarty classes ? ( C'est in english ... :evil: )