Joomladay francophone 2019 à Paris, les 8 et 9 mars 2019

requete sql composant joomla2.5

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

  • [Problème] requete sql composant joomla2.5

    Bonjour à jour, après avoir compris le principe du fonctionnement MVC de joomla. Mon soucis se situe dans le rapatriement des données à partir d'une base de donnée.

    Je déclare ma fonction dans le modèle
    Code:
    function ListeJoueuse()
    	{
    		$db = $this->getDbo();
    		$query = $db->getQuery(true);
    		$query->select(
    			$this->getState(
    				'list.select',
    				'a.*'
    			)
    		);
    		$query->from('`#__bl_players` AS a');
    		//echo $query;
    		$db->setQuery($query);
    		return $db->loadObjectList();
    	}
    réception des données dans view.html.php dans la fonction display.
    Code:
    /*chargement modèle*/
    		$model = &$this->getModel();
    		/*appel fonction*/
    		$liste = $model->ListeJoueuse();
    		/*recuperation résultat*/
    		$this->assignRef( 'liste', $listej );
    et affichage des données dans le template
    Code:
    <select name="thelist" onChange="combo(this, 'theinput')">
    	<?php foreach($this->liste as $l) {?>
    		<option><?php $l->last_name?></option>
    	<?php } ?>
    </select>
    cela est censé afficher les last_name dans un combobox.
    Mais cela m'indique une erreur :
    Invalid argument supplied for foreach() in C:\wamp\www\open88\administrator\components\com_do uble_open88\views\open88\tmpl\edit.php on line 50

  • #2
    Re : requete sql composant joomla2.5

    Bonjour,

    Cette erreur semble bien indiquer que la requête SQL dans ListeJoueuse est invalide et renvoie false au lieu d'une Object List.

    Je serais curieux de voir la tête de la requête...
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : requete sql composant joomla2.5

      La voila je l'avais mis dans mon précédent message :
      $db = $this->getDbo();
      $query = $db->getQuery(true);
      $query->select(
      $this->getState(
      'list.select',
      'a.*'
      )
      );
      $query->from('`#__bl_players` AS a');

      Commentaire


      • #4
        Re : requete sql composant joomla2.5

        Je parlais de la requête une fois interprétée, telle que soumise à MySQL. Pas de sa déclaration.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : requete sql composant joomla2.5

          SELECT a.* FROM #__bl_players AS a

          Commentaire


          • #6
            Re : requete sql composant joomla2.5

            et que raconte un var_dump( $liste), après

            Code PHP:
            $liste $model->ListeJoueuse(); 
            Mais aussi, un var_dump de ton $this->liste avant le foreach.

            ça ressemble à soit un problème de portée, soit à un bug dans le code.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : requete sql composant joomla2.5

              voila se que affiche var_drump($liste)

              array
              0 =>
              object(stdClass)[47]
              public 'id' => string '1' (length=1)
              public 'first_name' => string 'Indire' (length=6)
              public 'last_name' => string 'AKIKI' (length=5)
              public 'nick' => string '' (length=0)
              public 'about' => string '' (length=0)
              public 'position_id' => string '0' (length=1)
              public 'def_img' => string '0' (length=1)
              public 'team_id' => string '0' (length=1)
              public 'usr_id' => string '42' (length=2)
              public 'country_id' => string '55' (length=2)
              public 'registered' => string '0' (length=1)
              public 'created_by' => string '62' (length=2)
              Je reçois toute les infos de la tables se qui signifie que la requête est bonne mais par contre var_drump($this->liste) affiche null donc c'est le passage de variable dans la vue qui pose problème :
              $this->assignRef('liste', $listej );

              Commentaire


              • #8
                Re : requete sql composant joomla2.5

                Et si au lieu d'une variable locale $liste tu assignais ça en tant que variable de ton objet courant, donc à $this->liste ?

                Vu que le tout ressemble bien à un problème de portée.
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : requete sql composant joomla2.5

                  j'avance petit à petit, doucement mais surement, je récupère mes données dans le template mais maintenant c'est pour les affiché que je galère un peu :

                  modèle :
                  function ListeJoueuse()
                  {
                  $db = $this->getDbo();
                  $query = $db->getQuery(true);
                  $query->select(
                  $this->getState(
                  'list.select',
                  'a.*'
                  )
                  );
                  $query->from('#__bl_players AS a');
                  //echo $query;
                  // execution de la requéte
                  $db->setQuery((string)$query);
                  // récupération des objets
                  $listej = $db->loadObjectList();
                  //echo var_dump( $listej);
                  $liste = array();
                  foreach($listej as $l)
                  {
                  $liste[] = JHtml::_('select.option', $l->last_name);
                  }
                  return $liste;
                  vue
                  public function display($tpl = null)
                  {
                  $this->state = $this->get('State');
                  $this->item = $this->get('Item');
                  $this->form = $this->get('Form');

                  // Check for errors.
                  if (count($errors = $this->get('Errors'))) {
                  JError::raiseError(500, implode("\n", $errors));
                  return false;
                  }

                  //chargement modèle
                  $model = &$this->getModel();
                  //appel fonction
                  $nom = array();
                  $nom = $model->ListeJoueuse();
                  echo var_dump($nom);
                  //recuperation résultat
                  $this->assignRef('nom_joueuse', $nom );

                  $this->addToolbar();
                  parent::display($tpl);
                  }
                  template :
                  echo var_dump($this->nom_joueuse);
                  ?>
                  <li><?php echo $this->form->getLabel('joueuse1'); ?>
                  <select name="thelist" onChange="combo(this, 'theinput')">
                  <?php //foreach ($this->nom_joueuse as l) {?>
                  <option><?php //$this->nom_joueuse->last_name;?></option>
                  <?php //} ?>
                  </select>
                  voila se qu'affiche mon echo var_dump($this->nom_joueuse);
                  array
                  0 =>
                  object(JObject)[339]
                  protected '_errors' =>
                  array
                  empty
                  public 'value' => string 'AKIKI' (length=5)
                  public 'text' => string 'AKIKI' (length=5)
                  public 'disable' => boolean false

                  Commentaire


                  • #10
                    Re : requete sql composant joomla2.5

                    Je tiens à préciser que la table que je désire afficher dans mon combobox n'a pas de classe dans mon composant celle-ci est défini dans un autre composant. Je sais pas si cela peut-être utile.

                    Commentaire


                    • #11
                      Re : requete sql composant joomla2.5

                      j'ai enfin trouvé comment faire ma combobox mais j'ai un autre problème car quand je clique sur le bouton enregistrer (je développe le composant côté admin) il me dit que le champ est vide ? Faut-il changer mon xml car je le génere à partir de http://www.notwebdesign.com/joomla-component-creator/ et donc au départ j'ai un champ de saisie et donc maintenant une combobox.

                      Pour infos voici mon code pour les futurs recherches
                      Modèle :
                      function ListeJoueuse()
                      {
                      $db = $this->getDbo();
                      $query = $db->getQuery(true);
                      $query->select(
                      $this->getState(
                      'list.select',
                      'a.*'
                      )
                      );
                      $query->from('#__bl_players AS a');
                      //echo $query;
                      // execution de la requéte
                      $db->setQuery($query);
                      // récupération des données
                      $listej = $db->loadObjectList();

                      return $listej;
                      }
                      vue :
                      public function display($tpl = null)
                      {
                      $this->state = $this->get('State');
                      $this->item = $this->get('Item');
                      $this->form = $this->get('Form');

                      // Check for errors.
                      if (count($errors = $this->get('Errors'))) {
                      JError::raiseError(500, implode("\n", $errors));
                      return false;
                      }

                      //chargement modèle
                      $model = &$this->getModel();
                      //appel fonction
                      $nom = $model->ListeJoueuse();
                      //print_r($nom);
                      //recuperation résultat
                      $this->assignRef('nom_joueuse', $nom );

                      $this->addToolbar();
                      parent::display($tpl);
                      }
                      template :
                      $nb = count($this->nom_joueuse);
                      //echo $nb;
                      ?>
                      <li><?php echo $this->form->getLabel('joueuse1'); ?>
                      <select style="display:block; width:100px;"name="joueuse" onChange="combo(this, 'theinput') ">
                      <?php for ($i = 1; $i < $nb; $i++) {?>
                      <option><?php echo $this->nom_joueuse[$i]->last_name; ?></option>
                      <?php } ?>
                      </select>

                      Commentaire


                      • #12
                        Re : requete sql composant joomla2.5

                        il suffis de faire ça dans ton display :
                        $malistejoueuse =& $this->get('ListeJoueuse');
                        $this->assignRef('malistejoueuse ', $malistejoueuse );
                        Bien sur il faudra que dans le model ta fonction soit déclaré comme ça :
                        function getListeJoueuse()
                        {
                        //Ton code
                        }
                        Pas de getModel a faire dans display

                        Commentaire


                        • #13
                          Re : requete sql composant joomla2.5

                          Merci pour l'info pierrelesek !

                          Commentaire


                          • #14
                            Re : requete sql composant joomla2.5

                            derien

                            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