pb boucle SPIP

Salut Eric,

Suite à notre rapide échange online je t’explique mon problème:

Dans mon formulaire j’ai des menus déroulant dont les valeurs affichent « indéfini » ou pour d’autres champs « A DEFINIR » ou pour l’heure « 00:00 ». Par exemple pour le choir du jour des cours, le menu affiche la liste des jours de la semaine via le code :

  • Jour: #JOUR
  • dans la partie html du formulaire CVT. Pour ne pas enregistrer par mégarde un jour qui ne soit pas le bon, le formulaire se charge avec une liste de jours qui commence avec la valeur: indéfini.

    Dans la table ues il y a le champ jour_deux , à l’envoi du formulaire, si rien n’est choisi, par défaut jour_deux reçoit la valeur indéfini .

    Ce dont j’ai besoin est la chose suivante:

    (1) ou bien du code php pour qu’à chaque fois que l’input est ‹ indéfini › ou tout autre expression qui indique une non-définition de la valeur , l’output soit vide dans le champ jour_deux (ou dans n’importe quel autre champ concerné).

    (2) ou bien une boucle SPIP qui, pour un ue_id quelconque dans la table ues prennent toutes les valeurs des champs, sauf les valeurs « indéfini » , « A DEFINIR » , « 00:00 » . J’ai tenté comme critère dans la boucle: {jour_un !== ‹ indéfini ›} mais le résultat est que ça vire de l’affichage toute la ligne de l’ ue_id qui a des champs qui ne sont pas ‹ indéfini ›: si le nom de l’enseignant apparaît, dans le champ de l’ue_id , l’affichage html donné par la boucle ne me donne pas ce nom, ni tout le reste. Or la seule chose que je veux, c’est pouvoir ou bien avoir un champ vide comme résultat à chaque fois que j’ai un input indéfini, ce qui règlerait le pb de la boucle SPIP sans avoir besoin de faire appel à un critère d’exclusion, ou bien virer uniquement les champs indéfinis et non pas toute la ligne où il y a au moins une valeur indéfinie.

    Ma boucle SPIP est pour l’instant:

    <BOUCLE_coursL1premierSEM(ues){par uenum}{uenum<=106}>

    UE #UENUM #UENOM

    CM-TD: #UE_TITRE #ENSEIGNANT_UN #JOUR_UN #HDEBUT_JOURUN
    #HFIN_JOURUN #SALLE_JOURUN

    #JOUR_DEUX #HDEBUT_JOURDEUX #HFIN_JOURDEUX #SALLE_JOURDEUX

    </BOUCLE_coursL1premierSEM>

    Comme la réponse à ce problème peut intéresser toute la liste, finalement je cc. mon email à la liste spip et tu peux faire de même pour ta réponse. J’espère cependant avoir été assez clair dans l’exposé de ma difficulté.

    Amitiés,
    Joseph

    Le 04/01/10 10:35, Joseph Vidal-Rosset a écrit :

    (1) ou bien du code php pour qu'à chaque fois que l'input est 'indéfini'
    ou tout autre expression qui indique une non-définition de la valeur ,
    l'output soit vide dans le champ jour_deux (ou dans n'importe quel autre
    champ concerné).

    un truc simple :

    dans mes_fonctions.php :

       function si_defini($elle) {
         $pas_elles = array('indéfini', 'A DEFINIR', '00:00');
         return !in_array($elle, $pas_elles) ? $elle : '';
       }

    dans le squelette :

       <BOUCLE_coursL1premierSEM(ues) {par uenum} {uenum<=106}>
         <strong>UE [(#UENUM|si_defini)] [(#UENOM|si_defini)]</strong>
         <br />
         CM-TD : [(#UE_TITRE|si_defini) ][(#ENSEIGNANT_UN|si_defini) ][(#JOUR_UN|si_defini) ][(#HDEBUT_JOURUN|si_defini) ][(#HFIN_JOURUN|si_defini) ][(#SALLE_JOURUN|si_defini)]
         <br/>
         [(#JOUR_DEUX|si_defini) ][(#HDEBUT_JOURDEUX|si_defini) ][(#HFIN_JOURDEUX|si_defini) ][(#SALLE_JOURDEUX|si_defini)]
         <br />
       </BOUCLE_coursL1premierSEM>

    bien sûr, le filtre/fonction n'est à appliquer que sur les balises
    qui le nécessitent.

    attention sans doute à l'accent de 'indéfini'...

    Bonjour denisb, bonjour à tous,

    j'ai essayé ta solution denisb et là j'ai un
    très gros problème:

    j'ai ce résultat, avec mon article qui ne s'affiche plus:

    Erreur : filtre « si_defini » non défini

    J'ai pourtant supprimer le fichier mes_fonctions.php

    vidé le cache, vidé le cache du navigateur aussi, mais plus moyen
    d'accéder à ma page. HELP!

    Joseph

    --

    Le Mon, 04 Jan 2010 11:11:36 +0100,
    denisb <denisb@laposte.net> a écrit :

    Le 04/01/10 10:35, Joseph Vidal-Rosset a écrit :
    > (1) ou bien du code php pour qu'à chaque fois que l'input est
    > 'indéfini' ou tout autre expression qui indique une non-définition
    > de la valeur , l'output soit vide dans le champ jour_deux (ou
    > dans n'importe quel autre champ concerné).

    un truc simple :

    dans mes_fonctions.php :

       function si_defini($elle) {
         $pas_elles = array('indéfini', 'A DEFINIR', '00:00');
         return !in_array($elle, $pas_elles) ? $elle : '';
       }

    dans le squelette :

       <BOUCLE_coursL1premierSEM(ues) {par uenum} {uenum<=106}>
         <strong>UE [(#UENUM|si_defini)] [(#UENOM|si_defini)]</strong>
         <br />
         CM-TD : [(#UE_TITRE|si_defini) ][(#ENSEIGNANT_UN|si_defini)
    ][(#JOUR_UN|si_defini) ][(#HDEBUT_JOURUN|si_defini)
    ][(#HFIN_JOURUN|si_defini) ][(#SALLE_JOURUN|si_defini)]
         <br/>
         [(#JOUR_DEUX|si_defini) ][(#HDEBUT_JOURDEUX|si_defini)
    ][(#HFIN_JOURDEUX|si_defini) ][(#SALLE_JOURDEUX|si_defini)]
         <br />
       </BOUCLE_coursL1premierSEM>

    bien sûr, le filtre/fonction n'est à appliquer que sur les balises
    qui le nécessitent.

    attention sans doute à l'accent de 'indéfini'...

    _______________________________________________
    liste spip
    spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

    Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
    Discuter chez rezo.net

    Documentation de SPIP : http://www.spip.net/

    Irc : de l'aide à toute heure : http://spip.net/irc