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

EDI, CMS, Outils, Scripts et API PHP Discussion :

SEBLOD Liste dynamique SQL libre [Joomla!]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut SEBLOD Liste dynamique SQL libre
    Bonjour,
    J'utilise le composant SEBLOD sous Joomla, ma question poste sur le champ : liste dynamique
    L'utilisation d'une requête libre dans une liste dynamique impose de spécifier le label et la valeur dans le code SQL
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `nom` AS text , `id` AS value
    FROM `maTable`
    ORDER BY `nom`
    Dans ma "Liste & type de recherche", le filtre ne s'applique pas quand je choisis un nom dans la liste dynamique.
    Est ce que mon code est correctement écrit, notamment l'utilisation des mots-clés réservés TEXT et VALUE ?
    Merci pour votre aide

    Nom : SEBLOD_liste dyn libre SQL.png
Affichages : 349
Taille : 96,9 Ko

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Tout d'abord, je trouve ça super étrange mais bon j'imagine que c'est un soucis de compatibilité de la librairie JS.
    Dans ton cas, j'aurais -dans un premier temps- effectué ma requête normalement et bouclé sur les résultats pour les formater en PHP afin de vérifier que les résultats sont corrects et qu'il n'y a pas une erreur ailleurs.

    Toujours est-il que tu sembles novice dans le language SQL et je pense que tu ne sais pas pourquoi on écrit des ` autour des champs.
    Cela sert à échapper les noms. Et pourquoi fait-on ça ? Pour s'assurer qu'on est pas en train d'utiliser un keyword réservé (lien vers la liste des mots-clés réservés).

    Or dans ton cas, tu utilises 2 keywords réservés : TEXT et VALUE (la casse n'importe pas, c'est par habitude et pour la lecture qu'on les écrit habituellement en majuscules).

    Il est donc absolument nécessaire de les échapper !
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `nom` AS `text` , `id` AS `value`
    FROM `maTable`
    ORDER BY nom /* d'ailleurs ici, si tu prends l'hab de tout échapper, tu dois écrire `nom`  */

    En gros, t'as échappé les 2 valeurs dont on se foutait et t'as pas échappé les 2 qu'il fallait absolument échapper

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Bonjour darkstar123456,
    Oui je suis un novice SQL, j'ai appliqué l'échappement sur text et value.
    Le filtre ne fonctionne toujours pas sur cette simple requête.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Qu'est-ce qui ne marche pas ?

    Je n'ai pas vraiment prêté attention à la requête en elle-même ni à la capture d'écran... mais je constate maintenant que la requête est quand même très générique avec un nom de table qui s'appelle maTable.
    Est-ce vraiment le nom de la table que tu souhaites consulter ?

    Si tu as fait un copier/coller du net sans le modifier afin de correspondre au schéma de base de données, y'a quand même très peu de chance que ça fonctionne ^^

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Le nom de la table n'est effectivement pas ma table.
    Ma question concerne essentiellement l'insertion des 2 mots réservés : TEXT et VALUE dans le code SQL

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    J'ai déjà répondu à cette question

    Mais de toute façon, si tu veux de l'aide, il faut que tu nous montre la vraie requête et que tu nous explique en détail ce qui ne va pas : ce que tu attends, ce que tu reçois à la place, s'il y a un message d'erreur, etc.

    J'ai pas pris ma boule de crystal avec moi aujourd'hui

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Dommage pour la boule

    SQL de la requête libre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `nom` AS 'text' , `id` AS 'value'
    FROM `seb_cck_nom`
    ORDER BY 'nom'

    la table
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `seb_cck_nom` (
      `id` int(11) NOT NULL,
      `nom` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    INSERT INTO `seb_cck_nom` (`id`, `nom`) VALUES
    (1, 'Redon'),
    (2, 'Nantes'),
    (3, 'Vannes'),
    (4, 'Rennes');

    la liste dynamique
    Nom : SEBLOD_liste.png
Affichages : 304
Taille : 37,1 Ko

    Je souhaite que le choix d'un nom (de ville) dans la liste, filtre la liste de données affichées dans "Liste & type de recherche"
    J'obtiens correctement cette action en paramétrant le champ sans SQL

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Hmmm alors j'ai encore plus de questions

    - qu'est-ce que "Liste & type de recherche", et qu'est-ce que ça vient faire ici ?
    - si ça fonctionne sans faire la requête, pourquoi faire une requête ? ^^

    Concernant la requête, si ton c/c est correct, tu as mal écrit ta requête.
    J'avais expliqué que, comme pour les autres échappements déjà présents dans ta requête, il faut utiliser le caractère ` (accent grave), or tu as utilisé ' (le single quote)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `nom` AS `text` , `id` AS `value`
    FROM `seb_cck_nom`
    ORDER BY 'nom'

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    "Liste & type de recherche" dans le composant SEBLOD
    Nom : SEBLOD_.png
Affichages : 307
Taille : 43,8 Ko

    ok pour l'échappement, je l'avais correctement écrit dans la requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `nom` AS 'text' , `id` AS 'value'
    FROM `seb_cck_nom`
    ORDER BY `nom`

    je souhaite utiliser le SQL pour des filtres plus élaborés dans les listes dynamiques,
    d’où mon besoin de placer (d'écrire) correctement TEXT et VALUE dans cette simple requête

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Alors pour info, je ne connais pas SEBLOD et j'ai fait un tout petit rien de Joomla y'a 10 ans donc tout n'est pas "obvious" pour moi ^^
    Du coup, ton explication de ce qu'est "Liste & type de recherche" ne m'a rien appris mais essayons de faire sans.

    Ce que je trouve étrange c'est que, lorsque j'écris mon code il s'affiche correctement sur le forum mais pas quand tu le fais.
    Es-tu sûr que c'est bien écrit de ton côté et que l'outil que tu utilises ne fait pas un formating du contenu textarea ?

    Y a-t-il moyen que tu voies ce qu'il se passe ? Genre en inspectant la console et les requêtes AJAX pour voir ce qui est retourné ?
    Y a-t-il une erreur quelque part ou simplement 0 résultat retourné ?
    Que donne la requête si tu l'exécutes manuellement toi-même directement sur ta base de données (via PhpMyAdmin ou en SSH) ?

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Je teste toutes mes requêtes avec phpMyAdmin, celle-ci s'affiche correctement.
    L'écriture doit correspondre au formalisme SEBLOD, c'est pour cela que j'attends l'aide d'un utilisateur du composant.
    Merci quand même pour ton aide

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Bonsoir,
    Après avoir parcouru de nombreuses discussions sur le forum SEBLOD, je suis tombé par hasard sur une info capitale.
    Depuis la version 3.11, SEBLOD traine une erreur dans le fichier plugins\cck_field\select_dynamic\select_dynamic.php

    Pour obtenir un fonctionnement correct de la liste dynamique avec le champ libre, il est nécessaire d'ajouter le code $field->value = $value; aux lignes 488 et 496 du fichier select_dynamic.php


    le SQL de la liste s'écrit sans les caractères d'échappement, text et value sont en minuscules
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom AS text, id AS value
    FROM maTable
    ORDER BY nom

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

Discussions similaires

  1. Liste d'applications libres de qualité
    Par Community Management dans le forum Linux
    Réponses: 23
    Dernier message: 08/01/2019, 21h04
  2. Liste dynamique avec entrée libre + ajout au stock
    Par pitrera dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/08/2018, 16h59
  3. enregistrer la valeur saisie sur une liste déroulante dynamique sql
    Par jfab66 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/02/2017, 22h22
  4. ajout dans liste (syntaxe SQL)
    Par dr_feelgood dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/10/2005, 20h05
  5. Rafraichissement liste dynamique
    Par Petitjean_85 dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h21

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