requete SQL en Boucle via JFactory::getDBO()

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • requete SQL en Boucle via JFactory::getDBO()

    Bonjour à tous !!

    Avant toute chose laissé moi vous souhaitez une très bonne année 2012 ! faite de chance(s), de réusssite(s), et de bonheur...


    Bon voilà ma 1ere question de l'année, j'aurais voulu savoir comment faire une boucle avec JFactory::getDBO() ,
    j'ai trouvé ce bout de code sur le Net mais ça ne fonctionne pas :

    Code PHP:
    <?php
        $db 
    JFactory::getDBO() ;
        
    $db->setQuery'SELECT id, name FROM lstfr_adsmanager_categories WHERE parent = 3 ') ;
        
    $res $db->loadObject();
        
            print 
    '<select>';
          foreach(
    $res as $catego)
            {
                
    $catid $catego->id;
                
    $catname $catego->name;
                
    '<option value="'$catid .'">'$catname '</option>';
            }
            print 
    '</select>';
        
    ?>
    PHP me renvoi l'erreur : "Invalid argument supplied for foreach()",

    est ce que quelqu'un pourrait me dire où ce situe l'erreur et/ou me donner la bonne méthode ??

    Merci d'avance,

    MICKAEL

  • #2
    Re : requete SQL en Boucle via JFactory::getDBO()

    Salut

    Bien logiquement d'ailleurs car loadObject() retourne une seule valeur. Faudrait utiliser loadObjectList()

    Ensuite, ton code est incorrect. Il faudrait un echo (ou un print) avant '<option>'

    Code PHP:
        $db JFactory::getDBO() ; 
        
    $db->setQuery'SELECT id, name FROM lstfr_adsmanager_categories WHERE parent = 3 ') ; 
        
    $res $db->loadObjectList(); 
         
        echo 
    '<select>'
          foreach(
    $res as $catego
            { 
                
    $catid $catego->id
                
    $catname $catego->name
                echo 
    '<option value="'$catid .'">'$catname '</option>'
            } 
            echo 
    '</select>'
    (non testé)

    Note : ce n'est pas la manière la plus optimisée de faire. Va voir JHTML::_ (http://api.joomla.org/Joomla-Framewo...ml#genericlist). Il devrait être possible de trouver un petit tutoriel sur le net.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Re : requete SQL en Boucle via JFactory::getDBO()

      Merci pour ta réponse Cavo,

      Mais ça ne fonctionne toujours pas, j'ai exactement la même erreur :
      "Invalid argument supplied for foreach()"

      je réactualise mon code :

      Code PHP:
      <?php
          $db 
      JFactory::getDBO() ;
          
      $db->setQuery'SELECT id, name FROM lstfr_adsmanager_categories WHERE parent = 3 ') ;
          
      $res $db->loadObjectList();
          
              print 
      '<select>';
            foreach(
      $res as $catego)
              {
                  
      $catid $catego->id;
                  
      $catname $catego->name;
                  print 
      '<option value="'$catid .'">'$catname '</option>';
              }
              print 
      '</select>';
          
      ?>
      Quel argument faut il utiliser pour que la boucle fonctionne ?? Faut il utiliser un Array() ??

      Commentaire


      • #4
        Re : requete SQL en Boucle via JFactory::getDBO()

        Est-ce que ton préfixe est le bon (lstfr_) ?
        Est-ce que tu as des records (faudrait tester avant de faire ta boucle) ?

        Le code que tu as fournis est vraiment le minimum syndical
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Re : requete SQL en Boucle via JFactory::getDBO()

          Je me suis pose la meme question, a savoir si la requete retourne au moins 1 reponse?

          Sinon, pour verifier, tu mets juste avant ton JFactory,
          Code PHP:
          $res = array(); 
          Comme cela, tu initialise la variable comme etant un tableau et tu fais disparaitre les echecs quand il ressort un resultat vide.

          En esperant que cela soit ca

          ++
          Wis

          Commentaire


          • #6
            Re : requete SQL en Boucle via JFactory::getDBO()

            bonsoir à tous !

            Bon c'est bon ça fonctionne, en effet je me suis bien planté en copiant-collant le préfixe,
            en fait il est encore plus bizarroïde que ça est du coup j'ai zappé des lettres...
            par contre pas très pertinent le code erreur PHP

            Bien une fois n'est pas coutume je colle le code générique final qui fonctionne :

            Code PHP:
            <?php
                $db 
            JFactory::getDBO() ;
                
            $db->setQuery'SELECT donnee1, donnee2 FROM table') ;
                
            $res $db->loadObjectList();

                  foreach(
            $res as $resultat)
                    {
                        
            $donnee1 $resultat ->donnee1;
                        
            $donnee2 $resultat -> donnee2;
                        print 
            'Pour chaque résulat'$donnee1 .' et '$donnee2 's\'afficheront sur une ligne <br />';
                    }
                    
                
            ?>
            et voilà merci à tous pour votre aide, et à bientôt pour de nouvelles aventures...

            Par contre Cavo peut tu me dire qu'est ce qu'un "record" ??

            Commentaire


            • #7
              Re : requete SQL en Boucle via JFactory::getDBO()

              Bonjour,
              Par contre Cavo peux- tu me dire qu'est ce qu'un "record" ??
              c'est quand un mec court plus vite, saute plus haut ou jette un truc plus loin que tous les autres

              OK, je sors...

              Littéralement, on traduit ça par enregistrement, ce qui ne devrait pas t'aider beaucoup plus : c'est une ligne de données dans une table.
              Schtroumpfe toi le Schtroumpf t'aidera.
              Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

              Commentaire


              • #8
                Re : requete SQL en Boucle via JFactory::getDBO()

                Envoyé par Grand Schtroumpf Voir le message
                Littéralement, on traduit ça par enregistrement, ce qui ne devrait pas t'aider beaucoup plus.
                heu du coup tu peu sortir deux fois...,
                enfin nan reste je plaisante, j'aurais surement besoin de toi en 2012 autant qu'en 2011

                Commentaire


                • #9
                  Re : requete SQL en Boucle via JFactory::getDBO()

                  Bonjour

                  Envoyé par Soundboy39 Voir le message
                  Par contre Cavo peut tu me dire qu'est ce qu'un "record" ??
                  Chuis informaticien, faut me pardonner de mes écarts de langage. J'essaie de me soigner pourtant

                  Un "record", c'est une ligne de ta table (quoi ? Grand Schtroumpf l'a déjà dit? Ah...).
                  Une ligne de ta table, c'est un enregistrement. (quoi ? ça aussi ? Bon...)

                  Cela correspond à une ligne horizontale du tableau que tu vois quand tu ouvres ta database; euh, pardon, ta base de données.

                  Pffff, dur d'expliquer ce qu'est un record.

                  PS : Ton code n'est pas top top, la bonne syntaxe doit être SELECT donnee1, donnee2 FROM #__table et tu ne vérifies toujours pas que tu as bien des résultats avant ta boucle ==> si tu n'as aucune ligne horizontale dans le tableau, ton code va planter (tout le monde comprends "planter" ? Foirer; générer une "erreur fatale", ...)



                  Bonne prog'
                  Christophe (cavo789)
                  Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                  Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X