IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Vérifier l'égalité de 2 valeurs (faire un cast ?)


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut [Smarty] Vérifier l'égalité de 2 valeurs (faire un cast ?)
    Bonjour,

    Je voudrais savoir s'il est possible de faire un cast avec Smarty (et comment).

    Le problème, j'extrait des couples id/nom de la base de données (dans le code ci-dessous, stockés dans le tableau $pfsTab). Je voudrais comparer les id avec une valeur saisie par l'utilisateur ($pfs_id).

    page php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for ( $cpt_pfs = 0; $cpt_pfs < count($pfsTab); $cpt_pfs++ ) {
    	if ( $pfs_id == $pfsTab[$cpt_pfs]['id'] ) {
    		echo "PFS selectionnee dans le select :  id = " . $pfsTab[$cpt_pfs]['id'] . ", name = " . $pfsTab[$cpt_pfs]['name'];
    		$pfs_selected = $pfsTab[$cpt_pfs]['id'];
    		$template -> assign("pfs_selected", $pfs_selected);
    	}
    }
    page tpl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {section name=elt loop=$pfsTab}
    	{if isset($pfs_selected) && $pfs_selected == {$pfsTab[elt].id}}
    		{$pfs_selected} == {$pfsTab[elt].id}<br />
    	{else}
    		{$pfs_selected} != {$pfsTab[elt].id}<br />
    	{/if}
    {/section}
    Voilà ce qui s'affiche sur ma page de résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    20 != 18
    20 != 19
    20 != 20
    20 != 21
    20 != 45
    Je ne sais pas comment faire pour valider l'égalité des 2 valeurs.

    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Rajoute des guillemets pour vérifier qu'il n'y a pas d'espace qui traîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {section name=elt loop=$pfsTab}
        {if isset($pfs_selected) && $pfs_selected == {$pfsTab[elt].id}}
            "{$pfs_selected}" == "{$pfsTab[elt].id}"<br />
        {else}
            "{$pfs_selected}" != "{$pfsTab[elt].id}"<br />
        {/if}
    {/section}
    Vérifie ensuite le code source pour voir s'il n'y a pas de caractère "à la con" du genre saut de ligne, etc.

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Avec les guillemets j'obtiens pareil :

    "20 != 18"
    "20 != 19"
    "20 != 20"
    "20 != 21"
    "20 != 45"

    Idem dans le code source, rien qui cloche


    Edit :

    J'ai ajouté ceci avant l'assign() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    settype($pfs_selected, "int");
    settype($pfsTab[$cpt_pfs]['id'], "int");
    Si je teste les deux valeurs passent de string à int. Mais cela ne change rien sur le test d'égalité...

  4. #4
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Bonjour,

    Le problème venait d'une erreur de syntaxe : j'avais mis des accolades à l'intérieur d'un bloc Smarty.

    Le bon code du template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {section name=elt loop=$pfsTab}
    	{if (isset($pfs_selected) && $pfs_selected == $pfsTab[elt].id)}
    		<option value="{$pfsTab[elt].id}" selected="selected">{$pfsTab[elt].name}</option>
    	{else}
    		<option value="{$pfsTab[elt].id}">{$pfsTab[elt].name}</option>
    	{/if}
    {/section}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] vérifier égalité a une valeur près
    Par leninelenine dans le forum Général Python
    Réponses: 1
    Dernier message: 14/01/2015, 20h39
  2. Réponses: 10
    Dernier message: 24/05/2006, 05h35
  3. Vérifier l'existence d'une valeur?
    Par ashen dans le forum Access
    Réponses: 8
    Dernier message: 19/05/2006, 17h10
  4. comment vérifier la présence d'une valeur ds une chaîne ?
    Par lidouka dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/03/2006, 07h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo