loadobjectlist + php

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

  • #16
    Re : loadobjectlist + php

    et à tout hasard en mettant les majuscules à loadobjectlist pour être bien conforme au code ?
    Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
    http://www.template-creator.com Outil de création de templates
    Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

    Commentaire


    • #17
      Re: Re : loadobjectlist + php

      C'était effectivement une erreur d'espace

      Merci pour tous de votre aide !!

      Commentaire


      • #18
        Re : loadobjectlist + php

        tu peux passer ton problème en Réglé alors, merci
        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
        http://www.template-creator.com Outil de création de templates
        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

        Commentaire


        • #19
          Re: Re : loadobjectlist + php

          Bon finalement c'était un problème d'espace dans ma requête !!! grrrr !!

          Néanmoins j'ai un autre problème

          j'essaie de modifier un filtre de recherche qui doit lister les événement en fonction de certain critere (qui, quand, ou) cela fonctionne bien mais il la fonction qui doit calculer le nombre de resultat ne fonctionne pas

          Voici le code de ma page
          Code PHP:
           function getlistage($limit,$type) {

                  
          $db = & JFactory :: getDBO();
                  
          $result = array();
                  
          $filter $this->createwheresaad();
                  
          $where ' where e.published = 1 ';
                  
          $where .= ' and e.id_soustype = st.id';
                  
          $where .= ' and st.id_type = '.$type.'';
                    
          $query1 "SELECT COUNT(e.id) FROM #__f_evenement e, #__f_soustype st ";
                  if(
          $filter)
                      
          $query1 .= $filter ;
                  
          $query1 .= ' and e.id_soustype = st.id';
                  
          $query1 .= ' and st.id_type = '.$type.'';

                  
          $db->setQuery($query1);
                  
          $total $db->loadResult();
                  
          $query1 "SELECT COUNT(e.id) FROM #__f_evenement e, #__f_soustype st ";
                  if(
          $filter)
                      
          $query1 .= $filter;
                  
          $db->setQuery($query1);
                  
          $totalcategorie $db->loadResult();
                  
          //$arrayquand = "('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche')";
                  
          $query2 "SELECT distinct JOUR_DEBUT,JOUR_FIN FROM #__f_evenement ".$filter." order by JOUR_DEBUT ";
                  
          $db->setQuery($query2);
                  
          $date_afficher $db->loadObjectList();
                  
                  
          $query2 "SELECT count(*) FROM (SELECT distinct JOUR_DEBUT, JOUR_FIN FROM #__f_evenement  ".$filter.") as saad ";
                  
          $db->setQuery($query2);
                  
          $totaldate $db->loadResult();

                  
          $query3 "SELECT count(*) FROM #__f_evenement ".$filter." and  HFIN < '12:00' ";
                  
          $db->setQuery($query3);
                  
          $horaire_afficher['matin'] = $db->loadresult();

                  
          $query3 "SELECT count(*) FROM #__f_evenement ".$filter." and  (HDEB >= '12:00' and HFIN <= '14:00') ";
                  
          $db->setQuery($query3);
                  
          $horaire_afficher['midi'] = $db->loadresult();

                  
          $query3 "SELECT count(*) FROM #__f_evenement ".$filter." and (HDEB > '14:00' and HFIN <= '18:00') ";
                  
          $db->setQuery($query3);
                  
          $horaire_afficher['apresmidi'] = $db->loadresult();

                  
          $query3 "SELECT count(*) FROM #__f_evenement  ".$filter." and  HDEB > '18:00' ";
                  
          $db->setQuery($query3);
                  
          $horaire_afficher['soir'] = $db->loadresult();
                  
                  
          $query3 "SELECT count(*) FROM #__f_evenement  ".$filter." and (HDEB <= '10:00' and HFIN >= '17:00') ";
                  
          $db->setQuery($query3);
                  
          $horaire_afficher['journeeentiere'] = $db->loadresult();


                  
          $query "SELECT *, e.id as eid FROM #__f_evenement e, #__f_soustype st ";
                  
                  if(
          $filter)
                      
          $query .= $filter;
                  
          $query .= ' order by st.id ';
                  
          $db->setQuery($query,$this->limitstart$limit);
                  
          $this->_application $db->loadObjectList();
                  
          $saad=$query;
                  
          $query 'SELECT lieu , count(*) as counter FROM #__f_evenement  '.$filter.' group by lieu ' ;
                  
          $db->setQuery($query);
                  
          $lieu $db->loadObjectlist();
                  
          $query 'select id, Nom_Lieu from #__f_lieuHY where id in (select distinct(lieu) FROM #__f_evenement ) order by Nom_Lieu' ;
                  
          $db->setQuery($query);
                  
          $lieunom $db->loadObjectlist();

                  
          $result[0] = $this->_application;
                  
          $result[1] = $total;
                  
          $result[2] = $date_afficher;
                  
          $result[3] = $horaire_afficher;
                  
          $result[4] = $lieu;
                  
          $result[5] = $lieunom;
                  
          $result[6] = $totalcategorie;
                  
          $result[7] = $saad;
                  
          $result[8] = $totaldate;


                  return 
          $result;

              } 

          et
          Code PHP:
              function createwheresaad() {
                  
          $session =& JFactory::getSession();
                  
          $where ' where e.published = 1 ';
                  
                  if(
          $type) {
                      
          //$typevalue = implode('","', $type);
                      
          $where .= ' and e.id_soustype = st.id';
                      
          $where .= ' and st.id_type = '.$type.'';
                  }
                  
          $retour JRequest::getvar('retour');
                  if(!
          $retour){
                  
          $ou JRequest::getvar('ou',false);
                  
          $quand JRequest::getvar('quand',false);
                  
          $horaire JRequest::getvar('horaire',false);
                  
          $qui JRequest::getvar('qui',false);
                  
          $type JRequest::getvar('type',false);
                  
          //$retour = JRequest::getvar('retour',false);
                  
          $limitstar JRequest::getvar('limitstart',$session->get('qui',false));
                  }else{
                  
          $ou $session->get('ou');
                  
          $quand $session->get('quand');
                  
          $horaire $session->get('horaire');
                  
          $qui $session->get('qui');
                  
          $type $session->get('type');
                  
          //$retour = $session->get('retour');
                  
          $limitstar $session->get('limitstart');
                  }
                  
          $session->set('ou',$ou);
                  
          $session->set('quand',$quand);
                  
          $session->set('horaire',$horaire);
                  
          $session->set('qui',$qui);
                  
          $session->set('type',$type);
                  
          //$session->set('retour',$retour);
                  
          $session->set('limitstart',$limitstar);
                  
          $this->limitstart $limitstar;
                  
                  if(
          $ou) {
                      
          $ouvalue implode(','$ou);
                      
          $where .= ' and lieu in ('.$ouvalue.') ';
                  }
                  if(
          $quand) {
                      
          $quandvalue explode(','$quand);
                      
          $where .= ' and JOUR_DEBUT ="'.$quandvalue[0].'" and JOUR_FIN ="'.$quandvalue[1].'"';
                  }
                  if(
          $horaire) {
                      
          /*$horairevalue = implode('","', $horaire);
                      $where .= ' and horaire_afficher in ("'.$horairevalue.'") ';*/
                       
          if(in_array('matin',$horaire)) {
                          
          $horairearray[] = ' HFIN < "12:00" ';
                      }
                      if(
          in_array('midi',$horaire)) {
                          
          $horairearray[] = ' (HDEB >= "12:00" and HFIN <= "14:00") ';
                      }
                      if(
          in_array('apresmidi',$horaire)) {
                          
          $horairearray[] = ' (HDEB > "14:00" and HFIN <= "18:00") ';
                      }
                      if(
          in_array('soir',$horaire)) {
                          
          $horairearray[] = ' HDEB > "18:00"  ';
                      }
                      if(
          in_array('journeeentiere',$horaire)) {
                          
          $horairearray[] = ' (HDEB <= "10:00" and HFIN >= "17:00")  ';
                      }
                      
          $where .= 'and ( '.implode(' or '$horairearray ).' )';
                  }
                  if(
          $qui) {
                      switch(
          $qui){
                      case 
          'Adultes':
                      
          $where .= ' and age_min <= 24 and age_max >= 18';
                      break;
                      case 
          'Seniors':
                      
          $where .= ' and age_min >= 25 ';
                      break;
                      default :           
                      
          $where .= ' and age_min <= '.$qui.' and age_max >= '.$qui.'';
                      break;

                  }
                  }
                  if(
          $type) {
                      
          //$typevalue = implode('","', $type);
                      
          $where .= ' and e.id_soustype = st.id';
                      
          $where .= ' and st.id_type = '.$type.'';
                  }

                  return 
          $where ;
              } 
          C'est surtout c'est ligne la qui pose problème me semble t'il

          Code PHP:
            $query2 "SELECT distinct JOUR_DEBUT,JOUR_FIN FROM #__f_evenement ".$filter." order by JOUR_DEBUT ";
                  
          $db->setQuery($query2);
                  
          $date_afficher $db->loadObjectList(); 
          et

          Code PHP:
             $query 'SELECT lieu , count(*) as counter FROM #__f_evenement  '.$filter.' group by lieu ' ;
                  
          $db->setQuery($query);
                  
          $lieu $db->loadObjectlist(); 
          Lorsque j'enlève le '.$filter.' pour les 2 requetes j'ai bien un résultat qui s'affiche mais il ne filtre pas il compte tous les événements alors qu'il devrait prendre en compte les événement qui ont
          where e.published = 1
          and e.id_soustype = st.id
          and st.id_type = '.$type.'

          Donc uniquement ceux qui ont st.id_type = '$type'

          Du coup dans ma page php qui utilise cette fonction
          j'ai les message d'erreur suivant

          Warning: Invalid argument supplied for foreach() in www/components/com_formation/views/categorie/tmpl/list-stage.php on line 377

          Et si je fait un var_dump il m'affiche null pour les deux, par contre la fonction de filtrage au clic de la checbox fonctionne.

          Merci d'avance à tous ceux qui se seront intéressé a ce problème.

          Commentaire


          • #20
            Re : loadobjectlist + php

            Bonjour,
            il y a ça dans ton $filter :
            Code:
            $where .= ' and [B][COLOR="red"]e[/COLOR][/B].id_soustype = st.id'; 
            $where .= ' and[B][COLOR="red"] st[/COLOR][/B].id_type = '.$type.'';
            qui tape sur des tables absentes de tes deux requètes à problème.
            Dernière édition par Grand Schtroumpf à 19/08/2011, 10h05
            Schtroumpfe toi le Schtroumpf t'aidera.
            Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

            Commentaire


            • #21
              Re: Re : loadobjectlist + php

              Merci de ton aide, mais même si je rajoute #__f_soustype st à mes deux requête, cela ne change rien, j'ai toujours le message d'erreur et il ne compte toujours pas les événements.

              Code PHP:
              $query2 "SELECT count(*) FROM (SELECT distinct JOUR_DEBUT, JOUR_FIN FROM #__f_evenement, #__f_soustype st  ".$filter.") as saad ";
                      
              $db->setQuery($query2);
                      
              $totaldate $db->loadResult(); 
              Code PHP:
                      $query 'SELECT lieu , count(*) as counter FROM #__f_evenement,  #__f_soustype st '.$filter.' group by lieu ' ;
                      
              $db->setQuery($query);
                      
              $lieu $db->loadObjectlist(); 
              De plus je pense qu'il utilise cette ligne la
              Code PHP:
              $query1 "SELECT COUNT(e.id) FROM #__f_evenement e, #__f_soustype st ";
                      if(
              $filter)
                          
              $query1 .= $filter
              Si quelqu'un d'autre à une piste je suis preneuse.

              Commentaire


              • #22
                Re : loadobjectlist + php

                Re,
                tu n'as pas fini la modif, $filter exploite l'alias e que tu n'as pas donné à #__f_evenement.
                Après il faudra modifer tout ça parce que dans le cas où ton getvar('type') aurait la mauvaise idée de ne rien ramener, la jointure entre les tables n'est plus faite, et tu va faire un joli produit cartésien des deux tables, ça peut faire mal.

                Et enfin le
                Code PHP:
                if($type) { 
                            
                //$typevalue = implode('","', $type); 
                            
                $where .= ' and e.id_soustype = st.id'
                            
                $where .= ' and st.id_type = '.$type.''

                au début de ton createwheresaad() est du code mort, puisque $type n'est pas chargé à ce stade.
                Schtroumpfe toi le Schtroumpf t'aidera.
                Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

                Commentaire


                • #23
                  Re: Re : loadobjectlist + php

                  Merci Grand Schtroumpf c'était effectivement un problème avec ma requête qui était incomplète .
                  J'ai rajouter __f_soustype et tout fonctionne.

                  Merci à tous pour votre aide.

                  Commentaire


                  • #24
                    Re : loadobjectlist + php

                    @nanou : lorsque tu es confronté à une requête SQL qui ne fonctionne pas, à priori, il y a deux choses à faire pour faire du debugging. La première, c'est un

                    Code PHP:
                    echo $query 
                    où $query est ta variable qui reprend le SQL de ton instruction. Une fois le query affiché, tu le copies/colles tel quel dans phpMyAdmin et tu vois ce qu'il se passe (soit le SQL est incorrect soit il fonctionne mais ne retourne pas ce qu'il faut).

                    Ensuite, lorsque ton SQL te semble correct, tu fais un

                    Code PHP:
                    print_r ($row
                    où $row est le résultat de l'exécution de ton query. Ceci te permettra de faire un dump du recordset de retour et voir si le résultat correspond à ce que tu devrais avoir, s'il y a au moins un record, ...

                    Il me semble qu'avec ces deux approches, tu aurais résolu par toi-même les problèmes que tu as remonté dans cette discussion-ci.

                    Bonne prog'

                    [Edit]Si ton problème est résolu, peux-tu passer ton post en Réglé ? Merci[/Edit]
                    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


                    • #25
                      Re: loadobjectlist + php

                      Désolé mais je ne trouve pas ou pas le post en reglé.

                      Commentaire


                      • #26
                        Re : loadobjectlist + php

                        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