We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31663
    • 40 Posts
    C’est super !
    tu assures smiley
    Merci encore pour ton temps.
      • 11975
      • 2,542 Posts
      Pas de probleme smiley

      MODx est étonnant de flexibilité mais ne se laisse pas dompter facilement.
      Il faut se donner du temps pour l’apprivoiser.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 11975
        • 2,542 Posts
        Un dernier avant d’aller me coucher pour illustrer comment on pourrait procéder avec PHx

        1- télécharger / installer le plugin PHx de bS
        -->http://modxcms.com/PHx-1006.html

        2- créer une TV metaAnnonce
        type:text
        default value: @EVAL return $_GET[’idannonce’];

        3- créer une snippet qui servira de "modifier" pour PHx (voir doc sur le wiki pour en savoir plus)
        -->http://wiki.modxcms.com/index.php/PHx

        nom du snippet => phx:getMetaAnnonce

        <?php // a enlever
        //pas testé mais c'est un exemple
        if(is_numeric($output)){//c'est la valeur courante de la TV pour PHx
        $sql = "select".$options." from annonces where idannonce=".$output;
        //$options les param qu'on passe au modifier
        if($rs= $modx->db->query($sql)){
        $row = $modx->db->getRow($rs); 
        $modele= $row[$options];
        return $modele;
        }else{
        return "erreur";
        }
        }
        


        et dans le template

        <title>[*metaAnnonce:getMetaAnnonce=`modele`*]</title>
        <meta name="description" content="[*metaAnnonce:getMetaAnnonce=`titre,prix,modele`*]" />
        On pourrait améliorer le code pour passer plusieurs champs, etc ....

        :-)

        EDIT: on pourrait tout aussi bien se passer de TV et de PHx en appelant simplement le snippet dans le template.
        il n’y a jamais qu’une seule façon de faire avec MODx mais un éventail de possibilités.
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
          • 31663
          • 40 Posts
          En effet ça à l’air pas trop mal ton PHx...
          Et assez simple en plus smiley

          Je profite de mon dernier post sur ce sujet car je bug sur un problème de SQL + syntaxe Modx.

          Alors voila, je dois récupérer la marque du bateau dans le détail d’une annonce.
          Dans ma table annonce j’ai un champs "marque" qui est un numéro, et un champs "type_bateau".
          Par exemple on aura :
          idannonce= 177 correspond à marque=56 et type_bateau=2 (un voilier de marque xxx).

          J’ai 2 autres tables, "voiliers" et "bateaux" (pour les marque de voiliers et de bateaux à moteur)
          avec les champs respectifs "idvoilier", "nom", "idbateau","nom"
          Les marque de voiliers et bateau sont différentes pour info.

          Donc dans le détail de l’annonce je veux rajouter dans ma balise meta la marque du bateau en question.

          J’ai créé la TV getmarque qui contient :
          @EVAL return $modx->runSnippet(’getmarque’);

          et donc le snippet getmarque (c’est ici que ma syntaxe / requete est fausse)
          if(isset($_GET['idannonce'])){
          $sql = "select marque, type_bateau from annonces where idannonce=".$_GET['idannonce']; //je recupere la marque et le type de bateau correspondant à l'annonce en question
          
          if($rs= $modx->db->query($sql)){
          $row = $modx->db->getRow($rs); 
          $marque = $row['marque']; //la marque
          $type_bateau = $row['type_bateau'];} //voilier=1 bateau à moteur=2
          
          if ($type_bateau==1) //si c'est un voilier
          $sql2 = "SELECT nom FROM voiliers WHERE voiliers.idvoilier=".$marque; //je recupere le nom de la marque
          else //alors c'est un bateau à moteur
          $sql2 = "SELECT nom FROM bateaux WHERE bateaux.idbateau=".$marque; //je recupere le nom de la marque
          if($rs= $modx->db->query($sql2)){
          $row = $modx->db->getRow($rs); 
          $nom = $row['nom']; //je renvoie la marque du bateau
          }
          else return "erreur";
          }
          


          Merci de votre aide.
          C’est un super forum grin
            • 11975
            • 2,542 Posts
            Pourquoi avoir deux tables différentes pour enregistrer les marques selon les types de bateau.

            Si tu n’en avais qu’une seule, tu pourrais faire un jointure et ainsi n’effectuer qu’une requete pour recueillir toutes les infos nécessaires.

            <?php
            if($rs= $modx->db->query($sql2)){
            $row = $modx->db->getRow($rs); //change $row et $rs pour eviter la confusion avec la requete precedente
            $nom = $row['nom']; //je renvoie la marque du bateau
            //pour renvoyer la valeur il manque return $nom;
            
              Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
              • 31663
              • 40 Posts
              No comment...
              Ca fonctionne merci encore kiss