Form inclus dans un foreach smarty

Fermé
sibelmoch - 10 mars 2011 à 09:52
 sibelmoch - 11 mars 2011 à 10:47
Bonjour,

Je développe actuellement un site pour un CDI permettant de gérer les emprunts. Pour cela j'utilise smarty afin d'utiliser les templates, mon problème vient d'un foreach et d'un form. Concrètement je dois supprimer des personnes en rentrant leur nom et prénom, en cas de doublons dans ma base mon template affiche toutes les homonymes ainsi qu'un bouton supprimer pour chacun. En cliquant sur le bouton j'ai un confirm() qui s'affiche et mon form est envoyé sauf que j'ai beau cliqué sur n'importe quelle personne ce sera toujours l'id du dernié qui sera envoyé.

Voici mon code du template:

<FORM name="formSupprimer" action="index.php?action=enregistrerSuppression&vue=personne" method='POST'>
{foreach from=$personne item=item}

<tr><td><input type = "hidden" name="id" value = "{$item.0}"/>id: {$item.0}</td></tr>
<tr><td>nom: {$item.1}</td></tr>
<tr><td>prénom: {$item.2}</td></tr>
<script TYPE="text/javascript">
function confirmSuppression()
{
if (confirm("Etes-vous sûr de vouloir supprimer cet personne ?"))
{
document.formSupprimer.submit();
}
}
</script>
<input type = "button" onclick="confirmSuppression()" value="supprimer"/>

<BR/>

{/foreach}
</FORM>


J'espère que quelqu'un saura m'aider merci d'avance à ceux qui me lisent =)

Matthieu


5 réponses

empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
10 mars 2011 à 11:03
Pourquoi ne code tu pas en PHP? C'est plus accessible, il faut que le submit appel l'ID du formulaire courant, tu dois donc dans ta boucle faire une variable incrémentée du style $a++; de cette manière tu pourra mettre la valeur dans l'ID du form et avec ton bouton suppression tu pourra appeler cette ID unique, comme ça le bouton supprimer sur lequel tu cliquera pourra identifier le formulaire sur lequel tu te trouve...
0
A vrai dire si je ne code pas en php c'est car je fait des templates du coup je ne met pas du tout de php dans mes .tpl et j'ai donc essayé de mettre un key ce qui revient je pense à la solution que tu proposes mais avec les variables smarty mais je ne suis pas sûr de la syntaxe :

{foreach from=$personne item=item key=k}
<FORM name="formSupprimer[$k]" action="index.php?action=enregistrerSuppression&vue=personne" method='POST'>

<tr><td><input type = "hidden" name="id" value = "{$item.0}"/>id: {$item.0}</td></tr>
<tr><td>nom: {$item.1}</td></tr>
<tr><td>prénom: {$item.2}</td></tr>
<script TYPE="text/javascript">
function confirmSuppression()
{
if (confirm("Etes-vous sûr de vouloir supprimer cet personne ?"))
{
document.formSupprimer[$k].submit();
}
}
</script>
<input type = "button" onclick="confirmSuppression()" value="supprimer"/>

<BR/>
</FORM>

{/foreach}
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
10 mars 2011 à 12:24
Au temps pour moi, smarty utilise le PHP, donc ça reviendra à la même chose que du PHP :) je pensai que c'était du JS, je n'ai jamais codé avec Smarty, je ne pourrai donc pas valider ton code...

Je t'ai mis sur la bonne piste, la manière qu'il faut faire en PHP, donc c'est la même logique en Smarty, sauf qu'il faut connaitre la syntaxe, ce qui est ton cas.
0
Merci de ton aide ta piste est la bonne c'est sûr mais après plusieurs essais de syntaxe différentes je reste au point mort je vais aller écumer la FAQ smarty voir s'il n'y aurai pas un topic similaire. Sinon j'intégrerai du php à mon tpl même si c'est pas top =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
N'ayant toujours pas trouvé de solution à mon problème je relance en espérant que quelqu'un me vienne en aide ^^

Merci d'avance =)
0