[ar] [ca] [cpf] [de] [en] [es] [fr] [it]

Ce forum d’entraide est recommandé pour les utilisateurs et utilisatrices occasionnels de SPIP (Système de publication pour l’Internet). Avant de poser une question, faites une recherche sur ce site, consultez les liens utiles. Si vous ne trouvez pas de réponse, postez votre message dans la rubrique appropriée, avec un titre explicite.

Sujets : 24111 Sujets résolus :  39 %

77 visiteurs en ce moment


LIKE ne passe pas Résolu

par Teenoo - 5 avril 16:50 - Réponse(s) : 8

Bonjour,

dans une boucle avec critères de recherche j’ai un soucis avec LIKE et id_mot impossible de faire fonctionner le critère alors que je n’ai pas de soucis avec id_rubrique...

  1. <BOUCLE_archives(ARTICLES){branche}{id_rubrique ?LIKE #ENV{type}}{id_mot ?LIKE %#ENV{annees}%}{tri date}{inverse}{pagination 20}>

Rien n’est retourné avec #ENVannees, j’ai un bon filtrage sur les rubriques mais c’est tout... J’ai tout testé, évidemment si je met id_mot==#ENVannees ça marche mais faut tout sélectionné et c’est pas ce que je souhaite. L’utilisateur doit avoir le choix : soit l’un, soit l’autre, soit tout, soit rien.

Merci pour vos lumières... Je suis là-dessus depuis hier aprem (soit 1 jour complet :) )


  • #1 > LIKE ne passe pas ˆ
    par erational - 5 avril 19:16

    pourquoi tu as un " ?" avant ton like ?
    la syntaxe est
    {email LIKE %(#ENV{email})%}
    http://www.spip.net/fr_article3981.html

    ensuite sur id_mot, tu as une jointure, il faudrait peut etre la préciser
    http://programmer.spip.net/Forcer-des-jointures

    tu nous tiens au courant ?


  • < #2 > LIKE ne passe pas ˆ
    par Teenoo - 5 avril 19:59

    Si si je mets le ? mais ça marche pas mieux. Je vais regarder en forcant la jointure. A savoir que si je mets

    1. {id_mot == #ENV{annees}}

    pas de soucis mais ça me bloque dans mon filtrage général.


  • < #3 > LIKE ne passe pas ˆ
    par Teenoo - 5 avril 21:10

    Oups j’ai répondu à côté de la plaque :) Le ? permet de prendre en compte le critère uniquement si pour ce critère une valeur est présente dans l’environnement. Du coup c’est cool car si je renseigne pas le formulaire de filtre, eh bien j’ai tous mes articles qui s’affichent. Ça m’évite de rajouter une boucle si celle-ci ne retourne rien.

    Et ton aide ne veut pas fonctionner ;(


  • < #4 > LIKE ne passe pas ˆ
    par brain_damage - 9 avril 16:08

    Salut,

    je ne comprends pas...

    ça n’a aucun sens d’utiliser LIKE sur ce genre de colonne

    {id_mot?} doit être suffisant.

    {id_rubrique?} doit être suffisant également

    Ces colonnes contiennent uniquement des ENTIERS ! donc toi tu dois passer des entiers (nombres) en paramètre ou des tableaux d’entiers.

    dans l’url ça doit resemble à ça :
    id_mot[]=1&id_mot[]=2&id_rubrique[]=44 ...


  • < #5 > LIKE ne passe pas ˆ
    par Teenoo - 10 avril 11:31

    Hum... Je vous joins le code complet un peu allégé pour y voir plus clair :)

    Mon formulaire qui filtre les résultats par type (id_rubrique) et par année (id_mot)

    1. <form action="#SELF" name="filtre" method="get" class="bouton_action_post ajax">]
    2. [(#SELF|form_hidden)]
    3.  
    4. <h5>Par type</h5>
    5. <BOUCLE_btn(ARTICLES){branche}>
    6. <BOUCLE_btn0(RUBRIQUES){id_rubrique}{doublons}>
    7.  
    8.  
    9. <input type='radio' name='type' id='#ID_RUBRIQUE' value='#ID_RUBRIQUE' [(#ENV{type}|=={[(#ID_RUBRIQUE)]}|?{'checked="checked"',''})]
    10. />
    11. <label for="#ID_RUBRIQUE">#TITRE</label>
    12.  
    13.  
    14. </BOUCLE_btn0>
    15. </BOUCLE_btn>
    16.  
    17.  
    18. <h5>Par année</h5><select name="annees">
    19. [<option value=" " selected="selected">Toutes les années</option>]
    20. <optgroup>
    21.  
    22. <BOUCLE_affichage(MOTS){type=annees}{par titre}{inverse}>
    23. [<option value="#ID_MOT" [(#ENV{annees}|=={[(#ID_MOT)]}|?{'selected="selected"',''})]>(#TITRE)</option>]
    24. </BOUCLE_affichage>
    25.  
    26. </optgroup>
    27. </select>
    28.  
    29. <input type="submit" value="Filtrer">
    30.  
    31. </form>

    Télécharger

    Ma seule et unique boucle qui affiche tout si rien n’est déclaré dans le formulaire sinon affiche soit par année (si c’est le seul sélectionné) ou par type (si c’est le seul sélection) ou par type et année (avec les deux).

    1. <BOUCLE_archives(ARTICLES mots_liens){branche}{id_rubrique ?LIKE %(#ENV{type})%}{id_mot ?LIKE %(#ENV{annees})%}{tri titre}{pagination 20}>

    Le critère LIKE me permet vraiment d’afficher tout s’il n’y pas de valeur. Je recherche les articles contenant une id_rubrique etc... Si je change par le critère IN je n’ai plus l’ensemble des articles.

    1. {id_mot?}
    1. {id_rubrique?}

    Pourraient marcher oui mais comment ma boucle peut connaître la valeur associée ?


  • < #6 > LIKE ne passe pas ˆ
    par Teenoo - 10 avril 14:16

    En fait non

    1. {id_rubrique?}
    2. {id_mot?}

    Télécharger

    ça ne prend pas en compte la valeur... En même temps je passe en ajax d’où le fait que mes env ne soient pas dans la barre d’url.


  • < #7 > LIKE ne passe pas ˆ
    par Teenoo - 10 avril 15:46

    J’ai trouvé la boucle magique :)

    1. <BOUCLE_archives(ARTICLES){branche}{id_rubrique ?LIKE %(#ENV{type})%}{id_mot ?}>

    Avec #ENV{id_mot} plutôt que #ENV{annees}


  • < #8 LIKE ne passe pas ˆ
    par brain_damage - 11 avril 19:04

    Salut,

    Que ça passe dans l’url ou en ajax c’est la même chose : il s’agit d’une requête GET ou POST.

    Les variables #ENV{id_rubrique} #ENV{id_mot} sont implicites pour les critère {id_mot?} {id_rubrique?}

    Je répète, LIKE sur id_rubrique ça n’a pas de sens, ça fonctionne certes mais c’est idiot.

    A la rigueur utiliser  ?IN mais pourquoi ne pas rester simple avec le critère id_rubrique ? et passer la variable nommée correctement. ex : id_rubrique=12

    Je peux paraître pointilleux, mais pour quelqu’un qui va lire votre code, le fait de nommer la variable **annees** la personne à toutes les raisons de penser que c’est un tableau de dates #LISTE{1982,1983,2011} mais d’après ce que vous décrivez ce n’est que des id ! qui correspondent à un objet existant : des rubriques.
    Donc pour nommer la variable d’environnement il faut rester simple id_rubrique !

    Et normalement ça devrait afficher tous les articles sans pb !

    Cordialement,




Répondre à la question

« LIKE ne passe pas »

Mots-clés

Vous pouvez étiqueter cette page de forum avec les mots-clés qui vous semblent les plus appropriés ; ils permettront aux prochains visiteurs du site de mieux se repérer :


Installation, mise à jour

Utilisation de l’espace privé

Administration, gestion, configuration du site

Créer ses squelettes

Qui êtes-vous ?

par pertinence | par date

  • Comment faire pour rattacher un formulaire a liste déroulant à une table de la base ?

    15:53

    Réponse(s) : 2

    Perso je comprends pas ta question et encore moins ton code :<. Spip à une syntaxe qui est plutôt bien documenter. <form action="url" method="post"> <select (...)

  • Galerie d'image lightbox slider adaptable

    par Jhessy
    12:05

    Résolu - Réponse(s) : 4

    Merci pour ton aide mais j’ai finalement opté pour un plugin, qui le plugin Galleria. Donc je vais mettre ce sujet résolut.

  • afficher valeurs par ordre croissant

    par Manu
    05:08

    Réponse(s) : 1

    As-tu essayé "par chambre" ? <BOUCLE_filtrevue(ARTICLES)id_rubriquepar chambre>

  • Probleme avec mediabox spip3.1.6

    par chti47
    25 juillet 15:49

    Résolu - Réponse(s) : 12

    CA MARCHE !! Merci beaucoup à tous d’avoir pris du temps pour mon problème ! J’aime ce forum spip ! Chti47

  • Comment faire pour créer un formulaire a liste déroulante qui est rataché a une table de la base (...)

    par Jhessy
    24 juillet 16:53

    Pas de réponse

    Bonjour les amis ! ET merci d’avance pour vos réponses :) Alors je vous fais le topo. Ce que je souhaite faire, c’est d’inséré sur ma page, une liste déroulante qui contiendra des mots-clés qui sont (...)

  • creer ou bien modifier son article côté public via un modèle

    par Laëtitia
    22 juillet 18:16

    Résolu - Réponse(s) : 4

    Je remarque une chose, si il y a 1 document dans le portfolio du rédacteur il peut en charger d’autres sur sa page publique, mais c’est quand il n’y en a pas encore que le chargement ne se fait pas (...)

  • pb spip/spipr et test robots google

    par Didine
    19 juillet 20:07

    Résolu - Réponse(s) : 7

    Bonjour, je suis désolée mais le problème est de retour sur ce site alors que ça fonctionnait après notre échange. Le problème se pose sur plusieurs sites SPIP... peut-être est-ce dû aux modifications (...)

  • Appeler squelette

    par Mickael
    17 juillet 19:26

    Résolu - Réponse(s) : 2

    Ok, effectivement j’ai des articles qui ont perdu leur affectation :s, du coup je me retrouve avec une rubrique vide... Merci beaucoup

  • Update de la table auteurs

    par Luc
    17 juillet 11:25

    Réponse(s) : 3

    Merci, mais en fait je n’ai aucun problème à afficher les auteurs connectés en récupérant les infos de la table auteurs ; ce que je cherche, c’est faire en sorte que les auteurs connectés updatent la (...)

  • plugin SAISIES & messages d'erreur

    par Keny972
    7 juillet 14:57

    Pas de réponse

    Bonjour, J’utilise en local le plugin SAISIES pour gérer un formulaire de création d’objet éditorial. Je cherche comment ajouter à un champ SAISIES une span message_erreur ? Pas le message (...)

  • Messages : 29336
  • 8202 43 %
  • Poser une nouvelle question