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)
    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)
    Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
    Mes logiciels OpenSource : https://www.avonture.be

    Cette anné, le JoomlaDay 2020 FR aura lieu à Bruxelles les 2 et 3 octobre 2020. Plus d'infos sur https://www.joomladay.fr

    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)
        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)
        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
        Mes logiciels OpenSource : https://www.avonture.be

        Cette anné, le JoomlaDay 2020 FR aura lieu à Bruxelles les 2 et 3 octobre 2020. Plus d'infos sur https://www.joomladay.fr

        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)
                  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)
                  Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                  Mes logiciels OpenSource : https://www.avonture.be

                  Cette anné, le JoomlaDay 2020 FR aura lieu à Bruxelles les 2 et 3 octobre 2020. Plus d'infos sur https://www.joomladay.fr

                  Commentaire

                  Annonce

                  Réduire
                  1 sur 2 < >

                  C'est [Réglé] et on n'en parle plus ?

                  A quoi ça sert ?
                  La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                  Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                  Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                  Comment ajouter la mention [Réglé] à votre discussion ?
                  1 - Aller sur votre discussion et éditer votre premier message :


                  2 - Cliquer sur la liste déroulante Préfixe.

                  3 - Choisir le préfixe [Réglé].


                  4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                  2 sur 2 < >

                  Assistance au forum - Outil de publication d'infos de votre site

                  Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                  Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                  Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                  UTILISER À VOS PROPRES RISQUES :
                  L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                  Problèmes connus :
                  FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                  Installation :

                  1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                  Archive zip : https://github.com/AFUJ/FPA/zipball/master

                  2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                  3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                  4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                  5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                  6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                  et remplacer www. votresite .com par votre nom de domaine


                  Exemples:
                  Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/
                  Pour executer le script: http://www..com/fpa-fr.php

                  Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/cms/
                  Pour executer le script: http://www..com/cms/fpa-fr.php

                  En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                  Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                  Voir plus
                  Voir moins

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X