Afficher les valeurs d'un tableau array en html avec Smarty

Eléphanteau du PHP | 46 Messages

13 juin 2006, 11:20

Bonjour !

Je cherche à afficher ce tableau sous format html :
$salades = array();

$salades[0]['nom'] = 'Salade de Saint-Jacques à la mangue';
$salades[0]['composition'][0] = 'coquilles St Jacques';
$salades[0]['composition'][1] = 'mache propre en lamelle';
$salades[0]['composition'][2] = 'endive';
$salades[0]['composition'][3] = 'mangue';
$salades[0]['composition'][4] = 'jus de citron vert';
$salades[0]['composition'][5] = 'oeufs de saumon';
$salades[0]['composition'][6] = 'huile d\'olive';
$salades[0]['composition'][7] = 'ciboulette';
Pour cela, je veux utiliser Smarty.
J'ai donc rajouté ceci à la fin du tableau :
$tpl->assign('composition', $salades);
$tpl->display('tableauSaladeSaintJacques.tpl');
Ce qui correspond à cette template :
{include file="header.tpl"}

<table border="1">
  <tr>
    <th bgcolor="#eeeeee">Salade de Saint Jacques à la mangue</th>
  </tr>
  
{section name=ingredient loop=$composition}
  <tr>
    <td>{$composition[ingredient]}</td>
  </tr>
{/section}
</table>
</br>
Le problème, c'est que j'obtiens "Array" à la place de ma liste de composants...

Eléphant du PHP | 332 Messages

16 juin 2006, 17:13

Ben oui, tu obtiens un affichage array puisque ta variable est un tableau à 3 dimensions et que ta boucle n'en gère qu'une.

En premier : petit truc : ton tableau s'appelle $salades en PHP. Appelle le "salades" en smarty, tu verras, ça ne change rien ! ... Sauf dans 3 mois quand il faudra que tu fasses des modifs.
$tpl->assign('salades', $salades); 
dans ton template :
{section name=choixclient loop=$salades} 
<table border="1"> 
	<tr> 
		<th bgcolor="#eeeeee">{$salades[choixclient].nom}</th> 
	</tr> 
	{section name=ingredient loop=$salades[choixclient].composition} 
  		<tr> 
			<td>{$salades[choixclient].composition[ingredient]}</td> 
  		</tr> 
	{/section} 
</table> 
</br> 
{/section}
ou si tu ne veux que le n° 0
<table border="1"> 
	<tr> 
		<th bgcolor="#eeeeee">{$salades[0].nom}</th> 
	</tr> 
	{section name=ingredient loop=$salades[0].composition} 
  		<tr> 
			<td>{$salades[0].composition[ingredient]}</td> 
  		</tr> 
	{/section} 
</table> 
</br> 


Mammouth du PHP | 19672 Messages

18 juin 2006, 20:42

On est pas dans un problème de sécurité ni de modélisation, sujet déménagé.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: