Pourquoi il ne le met pas sur une seule ligne
Parce que tu as mis un <br />
pourquoi je ne vois pas mes autres enregistrement ???
Tu n'as demandé qu'une seule ligne du résultat renvoyé par ta requête Sql.
J'ai du faire face au même problème que toi au début.
Pour afficher tous les résultats renvoyés par une requête, d'habitude on fait comme ça:
while ($prenom = mysql_fetch_array($result, MYSQL_ASSOC) )
{
echo 'Prenom: ' .$prenom['prenom'];
echo 'Nom: '. $prenom['nom'];
}
Ce n'est plus possible avec les tpl vu qu'on n'as plus les echo, on doit d'abord récupérer tous les résultats pour les envoyer au tpl.
Pour arriver à ça, je passe par un tableau multidimensionnel et par une boucle qui ne fait que répéter sa condition (une boucle sans bloc d'instruction):
while ($lignes[]=mysql_fetch_array($result, MYSQL_ASSOC) ); /* Note le ";" à la fin */
Voilà, dans $lignes[0], tu auras la première ligne.
Dans $lignes[1]['prenom'] tu auras le prenom stocké à la ligne 2
Seul soucis: lorsqu'il n'y a plus de résultat dans $result, le while executera la condition, et comme il n'y a plus rien, il quittera la boucle mais par contre la variable $lignes[] prendra un résultat vide.
Il faut donc supprimer le dernier offset de $lignes:
array_pop($lignes);
//Puis on envoie $lignes au tpl
$Tpl->assign('lignes', $lignes);
Ensuite dans le tpl tu peux faire comme ça:
{foreach from=$lignes item=ligne}
Prenom: {$ligne.prenom}<br/>
Nom: {$ligne.nom}
{/foreach}
{* Ou alors *}
{foreach from=$lignes item=ligne}
{foreach from=$ligne item=item key=key}
{$key}: {$item}<br/>
{/foreach}
{/foreach}
Et pis voilà.... :-)