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
                            Aucune annonce pour le moment.

                            Partenaire de l'association

                            Réduire

                            Hébergeur Web PlanetHoster
                            Travaille ...
                            X