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

TypeScript Discussion :

Traiter un get recu d'une query de form multiple array


Sujet :

TypeScript

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut Traiter un get recu d'une query de form multiple array
    Bonjour,

    J'ai en nodejs et Typescript un get de forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [["exposant.raisonSociale","=","Alexandre"],"and",["etat","=","Terminé"]]
    Comment je peux traiter ? décomposer genre avoir un tabelau en découpant par ici "and" ?

    Merci

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Curieux format, je me demande à quel besoin c’est censé répondre.

    Ta question est un peu vague. Ton but est-il de transformer le tableau en une autre structure ? Ou de récupérer une info en particulier ? Ou de parcourir le tableau et d’appliquer un traitement en fonction des valeurs rencontrées ?

    Pour commencer, je partirais sur une boucle for..of avec une détection de type légère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (let item of tableauRecu) {
      if ("and" === item) {
         ...
      }
      else if (item instanceof Array) {
        ...
      }
     
    }
    Ce "and" me laisse penser qu’il pourrait aussi y avoir des "or" (et pourquoi pas des "not"), ce qui pourrait amener à des situations ambigües où l’usage des parenthèses deviendrait une nécessité. Dans ce cas, le format serait une sorte de micro-langage, et il faudrait mettre en œuvre un interpréteur.

    Par curiosité, d’où provient ce tableau ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Par curiosité, d’où provient ce tableau ?
    Cel viens en fait de l'outil DevExtreme exemple : https://js.devexpress.com/Demos/Widg...Angular/Light/

    quand je filtre il envoi les données en GET et l'url de GET émis est du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    &take=10&filter=[%22exposant.raisonSociale%22,%22=%22,%22Alexandre%22]
    C'est principalement pour les données en DataGrid gérer le filtre et retourner le résultat en donnant à Mysql (requête) les bon paramètres ...

    Merci

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    D’accord.

    Du coup, quel est ton objectif ? De quelle façon veux-tu traiter ce tableau ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,

    Je crois j'ai trouver une solution peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    filter = JSON.parse(filter);
     
                filter  = [...filter];
     
                const filterSplitFirst = filter.toString().split(',and,');
     
                filterSplitFirst.forEach(element => {
                    const filterSplitSecond = element.replace(/,/g, '').split('=');
     
                    const q = filterSplitSecond[0];
                    const operator = '=';
                    const search = filterSplitSecond[1];
     
                    query.andWhere(q + ' ' + operator + ' :search', { search });
                });
    Es-ce la bonne solution ?

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Paul75 Voir le message
    Es-ce la bonne solution ?
    Pour être honnête, je trouve que les passages avec split manquent d’élégance. C’est peut-être plus court en lignes de code, mais d’un point de vue algorithmique, c’est plus complexe :
    • toString sérialise le tableau en chaîne ;
    • derrière, split convertit cette chaîne en un nouveau tableau,
    • pendant ce temps, le tableau original est toujours en mémoire car il y a toujours la variable filter qui pointe dessus.

    Donc cette façon de faire est gourmande à la fois en temps et en mémoire.

    Il est possible de tout faire en une seule boucle. Voici comment je ferais :

    Pour commencer, tu n’as pas besoin de ... car la structure est déjà un tableau. Tu peux itérer directement dessus avec une boucle for..of comme dans mon exemple, ou avec la méthode forEach comme tu as fait.

    Ensuite, ignore simplement les items "and" quand tu les rencontres dans ta boucle.

    Enfin, je n’utiliserais pas split donc les sous-tableaux garderaient leur forme, donc pas besoin de replace. Tu pourrais donc accéder directement à element[0] et element[2], en supposant que les infos se présentent toujours sous la forme [ "machin", "=", "truc" ].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    JSON.parse(filter).forEach((element) => {
      if ("and" === element) return;
     
      const q = element[0];
      const operator = '=';
      const search = element[2];
     
      console.log(`q = ${q}`);
      console.log(`operator = ${operator}`);
      console.log(`search = ${search}`);
     
      query.andWhere(`${q} ${operator} :search`, { search });
    });
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,

    Je comprend ta démarche sauf que avec ton code plus logique dans le code me dort pas du tout ce qu'il faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    JSON.parse(filter).forEach((element) => {
                    console.log('element => ' + element);
     
                    if ('and' === element) { return; }
     
                    const q = element[0];
                    const operator = '=';
                    const search = element[2];
     
                    console.log(`q = ${q}`);
                    console.log(`operator = ${operator}`);
                    console.log(`search = ${search}`);
     
                    query.andWhere(`${q} ${operator} :search`, { search });
                });
    Ici le filter = ["exposant.raisonSociale","=","Alexandre"]

    cela me donne en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    element => exposant.raisonSociale
    q = e
    operator = =
    search = p
    element => =
    q = =
    operator = =
    search = undefined
    element => Alexandre
    q = A
    operator = =
    search = e
    Si je fait ne variable pour afficher la valeur de JSON.parse(filter), j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parsedFilter => exposant.raisonSociale,=,Alexandre
    Merci

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    En fait non c'est plus compliqué : je peux aussi avoir au maximum ce cas la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[["exposant.raisonSociale","=","RAISON 2"],"or",["exposant.raisonSociale","=","EXP2"]],"and",[["etat","=","Affecté"],"or",["etat","=","En Cours"]]]

    Merci

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je vois, c’est une structure récursive. Et à quoi devrait ressembler la requête finale avec ce filtre ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,

    la requête doit être, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (`exposant`.`raison_sociale`='Paul' OR `exposant`.`raison_sociale`='Alexandre') AND (`reservations`.`etat`='Nouveau' OR `reservations`.`etat`='Affecté')
    J'arrive a le faire quand je choisi ce format mais surement pas êcrit comme tu l'aurait fait, pas optimisé. Mais je galéré à le faire, je fait :
    Attention la valeur du filtre envoyé est comme cela maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exposant.raisonSociale,=,Paul Est Le Meilleur|and|etat,=,Affecté,or,etat,=,Nouveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    const filterSplitAnd = filter.toString().split('|and|');
     
                console.log('TAILLE TABLEAU => ' + filterSplitAnd.length);
     
                filterSplitAnd.forEach(elementAnd => {
                    query.andWhere(new Brackets(sqb => {
                        console.log('elementAnd => ' + elementAnd);
                        const filterSplitOr = elementAnd.toString().split(',or,');
     
                        filterSplitOr.forEach(elementOr => {
                            console.log('elementOr => ' + elementOr);
                            const elementEgal = elementOr.toString().split(',=,');
     
                            const q = elementEgal[0];
                            const operator = '=';
                            const search = elementEgal[1];
     
                            console.log('      q => ' + q);
                            console.log('      operator => ' + operator);
                            console.log('      search => ' + search);
     
                            let prefix = '';
     
                            if ( q.indexOf('.') === -1) {
                                prefix = 'reservations.';
                            }
                            sqb.orWhere(`${prefix}${q}${operator}'${search}'`);
                        });
                    }));
                });
    Merci

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ta première formulation était finalement plus claire et "parlante" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[["exposant.raisonSociale","=","RAISON 2"],"or",["exposant.raisonSociale","=","EXP2"]],"and",[["etat","=","Affecté"],"or",["etat","=","En Cours"]]]
    Les crochets symbolisant l'emplacement des parenthèses.
    Une fois indenté, c'est plus flagrant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [
    	[
    		["exposant.raisonSociale","=","RAISON 2"],
    		"or",
    		["exposant.raisonSociale","=","EXP2"]
    	],
    	"and",
    	[
    		["etat","=","Affecté"],
    		"or",
    		["etat","=","En Cours"]
    	]
    ]
    On voit qu'à chaque niveau, on a un groupe de 3 éléments (elt[0],elt[1],elt[2]):
    • soit l'élément central (elt[1]) est "and" ou "or" -> on a une structure avec des parenthèses ( [arr1] and/or [arr2] )
    • soit l'élément central (elt[1]) est "=" ou "!=" ou (?) (autre chose que "and" ou "or") -> on concatène les 3

    J'ai le cerveau un peu mou en ce moment.
    Mais pour un spécialiste, ça ne devrait pas trop posé de problème.
    Dernière modification par Invité ; 09/08/2018 à 17h51.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Sans chercher midi à 14h.... avec quelques regex *
    ....et sans AUCUNE manipulation d'array compliquée ou récursive ou autre :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function get_filter_sqlwhere( filter )
    {
    	// 1- on convertit en chaine de caractères
    	var sqlwhere = JSON.stringify( filter );
     
    	// 2- on remplace les groupes, puis les caractères [ ] " et ,
    	sqlwhere = sqlwhere.replace(/\[\"([^\"\.]*)\",\"([^\"]*)\",\"([^\"]*)\"\]/gi, '`$1`$2\'$3\'' );
    	sqlwhere = sqlwhere.replace(/\[\"([^\"\.]*)(\.)([^\"\.]*)\",\"([^\"]*)\",\"([^\"]*)\"\]/gi, '`$1`$2`$3`$4\'$5\'' );
    	sqlwhere = sqlwhere.replace(/\[/gi,'(');
    	sqlwhere = sqlwhere.replace(/\]/gi,')');
    	sqlwhere = sqlwhere.replace(/\"/gi,' ');
    	sqlwhere = sqlwhere.replace(/,/gi,'');
     
    	return ' WHERE ' + sqlwhere;
    }

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var filter = [[["exposant.raisonSociale","=","RAISON 2"],"or",["exposant.raisonSociale","=","EXP2"]],"and",[["etat","=","Affecté"],"or",["etat","=","En Cours"]]];
    console.log ( filter );
    console.log ( JSON.stringify( filter ) ); // converti en chaine
     
    var sqlWHERE = get_filter_sqlwhere( filter );
    console.log ( sqlWHERE );

    On obtient la chaine :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE ((`exposant`.`raisonSociale`='RAISON 2' or `exposant`.`raisonSociale`='EXP2') and (`etat`='Affecté' or `etat`='En Cours'))

    Je me trompe, ou c'est ce qu'on veut obtenir ?


    * Je n'ai pas la maitrise suffisante en regex, du coup j'ai fait plusieurs passes (mais ça doit pouvoir s'optimiser).
    Dernière modification par Invité ; 09/08/2018 à 12h10.

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Moi cela me sort comme string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exposant.raisonSociale=Paul Est Le Meilleurorexposant.raisonSociale=Alexandreandetat=Nouveauoretat=Affecté
    sans les ( )

    Merci

  14. #14
    Invité
    Invité(e)
    Par défaut
    1- J'ai mis à jour mon précédent message.

    2- ATTENTION : je pars de la structure de l'objet, tel que donné dans ton 1er message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[["exposant.raisonSociale","=","RAISON 2"],"or",["exposant.raisonSociale","=","EXP2"]],"and",[["etat","=","Affecté"],"or",["etat","=","En Cours"]]];
    Évidemment, ça ne fonctionne pas avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exposant.raisonSociale,=,Paul Est Le Meilleur|and|etat,=,Affecté,or,etat,=,Nouveau

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bizarrement cela fait pareil ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlWHERE =>  exposant.raisonSociale=Paul Est Le Meilleurorexposant.raisonSociale=Alexandre

  16. #16
    Invité
    Invité(e)
    Par défaut
    Montre ton objet filter (PAS JSON.parse(filter) ! )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    console.log ( JSON.stringify( filter ) ); // converti en chaine
     
    var sqlWHERE = get_filter_sqlwhere( filter );
    console.log ( sqlWHERE );
    Montre un copier-coller de la console.

  17. #17
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Le filter c'est si je le passe avec JSON.parse depuis Angular : j'ai :
    [[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Affecté"],"or",["etat","=","Nouveau"]]]

    Et le resultat de get_filter_sqlwhere :
    sqlWHERE => (((\ exposant.raisonSociale\ \ =\ \ Paul Est Le Meilleur\ )\ or\ (\ exposant.raisonSociale\ \ =\ \ Alexandre\ ))\ and\ ((\ etat\ \ =\ \ Affecté\ )\ or\ (\ etat\ \ =\ \ Nouveau\ )))

    Par contre si je passe pas depuis Anguar la chaine avec JSON mais juste le string filter, le filter est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exposant.raisonSociale,=,Paul Est Le Meilleur,or,exposant.raisonSociale,=,Alexandre,and,etat,=,Nouveau,or,etat,=,Affecté
    Merci

  18. #18
    Invité
    Invité(e)
    Par défaut
    OK.
    C'est sous cette forme qu'il faut soumettre filter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Affecté"],"or",["etat","=","Nouveau"]]]

    La fonction récursive est :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function get_filter_sqlwhere_recursive( arr, add_where=true )
    {
    	var sqlAndOr = ['and','or'];
    	var sqlwhere = '(';
    	if( Array.isArray(arr) )
    	{
    		arr.forEach( function(elts, index) 
    		{
    			if( Array.isArray(elts) )
    			{
    				if( sqlAndOr.indexOf(elts[1])>-1 ) // and | or
    				{
    					sqlwhere += get_filter_sqlwhere_recursive( elts, false ); // récursivité
    				} else {
    					sqlwhere += elts[0].replace(/([^\. ]+)/gi,'`$1`') + elts[1] + '\''+elts[2]+'\'';
    				}
    			} else {
    					sqlwhere += ') '+elts.toUpperCase()+' ('; // AND | OR
    			}
    		});
    	}
    	sqlwhere += ')';
     
    	if( add_where ){ sqlwhere = ' WHERE '+sqlwhere; }
    	return sqlwhere;
    }

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var filter = [[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Affecté"],"or",["etat","=","Nouveau"]]];
    //console.log ( filter );
     
    var sqlWHERE = get_filter_sqlwhere_recursive( filter );
    console.log ( 'sqlWHERE : '+ sqlWHERE );
    J'obtiens :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlWHERE :  WHERE ((`exposant`.`raisonSociale`='Paul Est Le Meilleur') OR (`exposant`.`raisonSociale`='Alexandre')) AND ((`etat`='Affecté') OR (`etat`='Nouveau'))

  19. #19
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    etrange : j'ai bien cela en filter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Nouveau"],"or",["etat","=","Affecté"]]]
    et j'ai le retour : sqlWHERE => WHERE ()

    Encore merci

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bon....

    Peux-tu nous montrer ce que renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log ( typeof filter );
    Ca devrait être : object.

    Si c'est string, alors ce n'est pas bon.
    Il faut faire d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filter = JSON.parse( filter );
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var filter = [[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Affecté"],"or",["etat","=","Nouveau"]]];
    // PAS de '...' autour : c'est un objet (object)
    console.log ( 'filter : '+ filter );
    console.log ( typeof filter ); // object
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var filter = '[[["exposant.raisonSociale","=","Paul Est Le Meilleur"],"or",["exposant.raisonSociale","=","Alexandre"]],"and",[["etat","=","Affecté"],"or",["etat","=","Nouveau"]]]'; 
    // REMARQUER les '...' autour : c'est une chaine (string)
    console.log ( 'filter : '+ filter );
    console.log ( typeof filter ); // string
     
    // on PARSE : on obtient un objet JSON
    filter = JSON.parse( filter );
    console.log ( 'filter : '+ filter );
    console.log ( typeof filter ); // object
    N.B. si avec ça, tu ne t'en sors pas,.... je suis a bout d'arguments...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/07/2006, 11h42
  2. [VB6]Traiter des enregistrements recuperer par une recherche
    Par tamerlan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/03/2006, 11h06
  3. Ecrire le résultat d'une query dans un fichier txt
    Par jbaers dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/11/2005, 01h49
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  5. [JDBC] SQL Exception lors d'une Query !
    Par Castagnems dans le forum JDBC
    Réponses: 5
    Dernier message: 30/04/2004, 12h00

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