[[++forums_css_framework:notempty=` `:default=` [[- Will eventually download and combine]] `]]
We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
[[-+discuss.user.id:notempty=`
[[+discuss.user.username]]'s Avatar

[[%discuss.recent_activity]][[%discuss.ndash]] [[+discuss.user.unread_posts]][[%discuss.sep]] [[+discuss.user.unread_messages]][[%discuss.sep]] [[+discuss.user.new_replies]]
[[+discuss.user.no_replies_count:gte=`1`:then=` [[+discuss.user.unanswered_questions_count:gte=`1`:then=` [[%discuss.help_answer]] [[+discuss.user.unanswered_questions]] [[%discuss.participate_discussions]] [[+discuss.user.no_replies]]. `:else=` [[%discuss.participate_discussions_solo]] [[+discuss.user.no_replies]]. `]] `:else=` [[+discuss.user.unanswered_questions_count:gte=`1`:then=` [[%discuss.participate_discussions_solo]] [[+discuss.user.new_unanswered_questions]]. `:else=` [[%discuss.no_unanswered_questions_or_discussions]] `]] `]]

`]]
    • 867
    • 241 Posts


    Bonjour à tous,

    Rigolez pas ;-)
    Je pense que la question devrait être simpliste pour certains :

    Je souhaiterai pouvoir préciser un paramètre (ou plusieurs en même temps du type &=’toto’) dans l’appel par rapport à un snippet

    pour l’appelle j’aimerai obtenir [[list? &lieux=`97434` ]] ou [[list? &lieux=`97434, 974 60` ]]


    mon snippet list est le suivant mais il ne revoit rien

    <?php
    $lieux= (isset($lieux))? $lieux : '';  // peut etre pas suffisant ??
    // faut il utiliser $lieux= $modx->documentObject['lieux']; ??
    
    
    $sql = $modx->dbQuery('select * from '.$modx->getFullTableName('favorite_links').' where lieux ="$lieux" AND  rubriques="Animation" ');
    
    // Loop through records and echo the pagetitle
    while( $row = $modx->fetchRow( $sql ) ){
        echo $row['url'].'<br/>';
     echo $row['tags'].'<br/>';
     echo $row['intro'].'<br/>';
    }
    ?>


    Merci d’avance à la personne qui améliorera son Karma facilement wink
    Alchime

      • 8894
      • 114 Posts
      Salut,

      En fait, ton pb ne vient pas du parametre car ta 1ere ligne avec $lieux est OK.
      Pour moi, la cause est dans ta requete SQL, à cet endroit:
      ' where lieux ="$lieux" AND  rubriques="Animation" '

      Tu as utilisé des guillemets simples, donc $lieux n’est pas remplacé !
      Essaye ceci:
      ' where lieux ="' . $lieux . '" AND  rubriques="Animation" '
        • 867
        • 241 Posts
        Merci enidan j’ai cru que c’était l’explication mais j’obtiens un parse error :

        Parse error: parse error in e:\web\easyphp1-8\www\modx-0.9.6.1\manager\includes\document.parser.class.inc.php(769) : eval()’d code on line 13

        J’ai essayé uniquement avec les simples quotes ’ . $lieux . ’ mais même msg d’erreur... huh

        [edit] : une fermeture de parenthèse et un point virgule plus tard ça marche smiley

        Merci enidan, +1 niveau Karma wink

        Je vais voir comment passer 2 paramêtres à la fois maintenant. (<=> [[list? &lieux=`97434, 97460` ]])
          • 8894
          • 114 Posts
          Peux-tu poster l’intégralité du code qui provoque le "parse error" ?

          Sinon, pour debugguer, ma méthode (un peu bourrine c’est sur) est de faire des print_r($variable) à chaque étape. Notamment, j’aurais mis la chaîne de la requête SQL dans une variable et je l’aurais ainsi affichée pour vérifier.
            • 867
            • 241 Posts
            J’essaierai ta technique mais le parse error, ne va pas court-circuiter l’affichage de la variable ?

            e:\web\easyphp1-8\www\modx-0.9.6.1\manager\includes\document.parser.class.inc.php(769) : eval()’d code on line 10

            <?php
            $lieux = (isset($lieux))? $lieux : '';
            $rubriques = (isset($rubriques))? $rubriques : '';
            
            
            $sql = $modx->dbQuery('select * from '.$modx->getFullTableName('favorite_links'). ' where lieux = "' . $lieux . '" AND  rubriques = "' . $rubriques . '");
            
            // Loop through records and echo the pagetitle
            while ( $row = $modx->fetchRow( $sql ) ){
                echo
            $row[’url’].’
            ’;
            echo $row[’tags’].’
            ’;
            echo $row[’intro’].’
            ’;
            echo $row[’rubriques’].’
            ’;
            }
            ?>

            Une autre petite question :
            pour préciser une valeur par defaut (du style sql *) c’est ici que ça se joue ?
            $rubriques = (isset($rubriques))? $rubriques : ’’;

            Faut que je regarde les fonctions php dce plus prés mais il se fait tard ici (3h de décalage avec la métropole)

            Encore merci.
            M.
              • 8894
              • 114 Posts
              Tu n’as pas fermé tes guillemets simples dans la requête wink, cad qu’ici:
              . $rubriques . '");

              il faut remplacer par:
              . $rubriques . '"');


              Quote from: alchime at Jan 14, 2008, 01:12 PM

              Une autre petite question :
              pour préciser une valeur par defaut (du style sql *) c’est ici que ça se joue ?
              $rubriques = (isset($rubriques))? $rubriques : ’’;
              Là je n’ai pas compris ta question huh??

              il se fait tard ici (3h de décalage avec la métropole)
              Pour moi le décalage est dans l’autre sens : -5h par rapport à la métropole smiley
                • 867
                • 241 Posts
                Ok c’est tout bon la requête pour un lieu mais pas pour 2 lieu en même temps (il renvoit rien) j’immagine qu’il faut un implode () avant..

                Ma question porte sur la construction du isset en fait

                $rubriques = (isset($rubriques))? $rubriques : ’’;

                en algo ça donne quoi ? si isset retourne false rubriques == vide ?
                comment obtenir toutes les rubriques, i.e. comme si l’argument rubriques n’était pas passé ?
                J’ai pensais au select * mais ça ne s’applique pas à priori..
                Faire deux requêtes sql selon que l’on à passé l’argument rubriques ?

                Encore Merci
                Hum -5h ? les antilles ?
                  • 8894
                  • 114 Posts
                  Quote from: alchime at Jan 15, 2008, 06:19 AM

                  Ok c’est tout bon la requête pour un lieu mais pas pour 2 lieu en même temps (il renvoit rien) j’immagine qu’il faut un implode () avant..
                  En fait, ça dépend de la requête SQL à écrire pour avoir un "WHERE=plusieurs valeurs".
                  Malheureusement je ne connais pas suffisamment le SQL pour te donner la réponse sad

                  Quote from: alchime at Jan 15, 2008, 06:19 AM

                  $rubriques = (isset($rubriques))? $rubriques : ’’;
                  en algo ça donne quoi ? si isset retourne false rubriques == vide ?
                  C’est bien ça:
                  $variable = test ? valeur_si_test_renvoie_TRUE : valeur_si_test_renvoie_FALSE;

                  Quote from: alchime at Jan 15, 2008, 06:19 AM

                  comment obtenir toutes les rubriques, i.e. comme si l’argument rubriques n’était pas passé ?
                  Je vois 2 solutions:

                  • soit il est possible en SQL d’écrire quelque chose du style "WHERE rubriques=*" ou "WHERE rubriques=all", auquel cas tu peux mettre la valeur * ou all (ou autre) dans ta ligne qui teste le isset()
                  • soit tu construis ta chaîne de requête de manière conditionnelle: si $rubriques n’est pas vide (fonction empty()), tu fais la requête actuelle, sinon, tu enlèves de la chaine de la requête le "AND rubriques ..."

                  Quote from: alchime at Jan 15, 2008, 06:19 AM

                  Hum -5h ? les antilles ?
                  Yes grin. Et si je ne m’abuse, +3h = la Réunion ?
                    • 867
                    • 241 Posts
                    Merci encore pour tout.
                    Je vais regarder au niveau SQL

                    Oui la Réunion. grin

                    ps : Pas de site dans ton profil ?
                    [[$thread-login-post]]
                    [[*beforeClose]]