PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » Calendrier PHP » 22-08-2011 13:01:06

nala26
Réponses : 0

J'essaye de modifier un calendrier et de l'adapter pour mon site mais je bloque à un endroit
Le calendrier utilise de l'ajax

Voici le code ma fonction calendrier

[NDM]
Désolé mais là, trop c'est trop.
Merci d'utiliser le wall, ou, à défaut la colorisation du code.
MK.

Si quelqu'un voit ou se situe le problème, d'avance merci.

#2 Re : Forum Général PHP » loadobjectlist + php » 18-08-2011 23:27:49

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

 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

  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

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

et

   $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.

#3 Re : Forum Général PHP » loadobjectlist + php » 18-08-2011 23:27:49

Merci mais peut tu me dire comment je fais pour tester toute la chaine de connexion de $db

Parce que si c'est pour vérifier la connexion à la base, je pense qu'elle se fait bien

#4 Re : Forum Général PHP » loadobjectlist + php » 18-08-2011 23:27:49

Je viens d'essayer les requetes suivantes dans phpmyadmin

SELECT *
FROM jos_f_evenement
LEFT JOIN jos_f_soustype AS st ON id_soustype = st.id
AND st.id_type = '33'
LIMIT 0 , 830

Résultat >> Aucun filtrage tous est liste

SELECT *
FROM jos_f_evenement
RIGHT JOIN jos_f_soustype AS st WHERE id_soustype = st.id
AND st.id_type = '33'
LIMIT 0 , 830

Résultat >> Aucun filtrage tous est liste avec des null par endroit


SELECT *
FROM jos_f_evenement, jos_f_soustype st WHERE id_soustype = st.id AND st.id_type = '33'
LIMIT 0 , 830

Résultat >> Ok le filtrage est fait il n'affiche que les événements qui ont en commun id type 33

Par contre quand je test le code dans ma page php il n'y a toujours pas de résultat

<?php
require_once(dirname(__FILE__).DS.'helper.php');
$model = new dernier_evenement2;
$id_type = $params->get('id_type',0);
$db =& JFactory::getDBO();
$query = "SELECT * ".
     "FROM #__f_evenement, jos_f_soustype st".
     "WHERE id_soustype = st.id".
     "and st.id_type = ".$id_type." ".
     " LIMIT 0 , 1";
//echo $query;
$db->setQuery($query);
$list = $db->loadobjectlist();
var_dump($list);
if ($list) {
foreach ($list as $item) {
 
    $detailssoustype = $model->getdetailssoustype($item->id_soustype);
    if($item->image_list)
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    else
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    echo '<br><div class="evenement">';
   echo '<div class="groupeventhome">'.$detailssoustype['type'].'</div>';
    echo '<a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="'.$image.'" /></a><div class="evenementimg"><a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="/images/stories/fond-opacity.png" /></a></div>';
    echo '</div>';
 
 
}
}
echo $id_type
?>

Résultat >> NULL 33

Et le meme code sans le var_dump et le if

<?php
require_once(dirname(__FILE__).DS.'helper.php');
$model = new dernier_evenement2;
$id_type = $params->get('id_type',0);
$db =& JFactory::getDBO();
$query = "SELECT * ".
     "FROM #__f_evenement, jos_f_soustype st".
     "WHERE id_soustype = st.id".
     "and st.id_type = ".$id_type." ".
     " LIMIT 0 , 1";
//echo $query;
$db->setQuery($query);
$list = $db->loadobjectlist();
foreach ($list as $item) {
 
    $detailssoustype = $model->getdetailssoustype($item->id_soustype);
    if($item->image_list)
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    else
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    echo '<br><div class="evenement">';
   echo '<div class="groupeventhome">'.$detailssoustype['type'].'</div>';
    echo '<a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="'.$image.'" /></a><div class="evenementimg"><a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="/images/stories/fond-opacity.png" /></a></div>';
    echo '</div>';
 
 
}
echo $id_type
?>

Résultat >> Message d'erreur suivant

Warning: Invalid argument supplied for foreach() in /www/modules/mod_derniere_evnement2/mod_derniere_evnement2.php on line 14
33

Je ne comprend pas pourquoi cela fonctionne sur php my admin mais pas dans ma page php.

SI quelqu'un à une piste !!

#5 Re : Forum Général PHP » loadobjectlist + php » 18-08-2011 23:27:49

Tout d'abord merci de ton aide

Var_dump($list) me donne NULL.

Qu'est ce que cela veut dire ?

Est ce que $list est vide ?

Merci

#6 Forum Général PHP » loadobjectlist + php » 18-08-2011 23:27:49

nala26
Réponses : 8

Bonjour j'essaye de faire un module pour joomla j'ai un message d'erreur

Voici mon code si quelqu'un voit l'erreur ça serai sympa:

<?php
require_once(dirname(__FILE__).DS.'helper.php');
$model = new dernier_evenement2;
$id_type = $params->get('id_type',0);
$db =& JFactory::getDBO();
$query = "SELECT * ".
     "FROM #__f_evenement".
     "RIGHT JOIN #__f_soustype AS st ON id_soustype = st.id and st.id_type = ".$id_type." ".
     " LIMIT 0 , 1";
//echo $query;
$db->setQuery($query);
$list = $db->loadobjectlist();
foreach ($list as $item) {

    $detailssoustype = $model->getdetailssoustype($item->id_soustype);
    if($item->image_list)
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    else
    $image = 'images/formation/type/'.$detailssoustype['typeimage'];
    echo '<br><div class="evenement">';
   echo '<div class="groupeventhome">'.$detailssoustype['type'].'</div>';
    echo '<a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="'.$image.'" /></a><div class="evenementimg"><a href="index.php?option=com_formation&view=categorie&layout=categorie-event&id='.$id_type.'&Itemid=14"><img height ="180" width ="276" src ="/images/stories/fond-opacity.png" /></a></div>';
    echo '</div>';


}

Le message d'erreur m'indique que l'erreur vient de cette ligne

Warning: Invalid argument supplied for foreach() in /www/modules/mod_derniere_evnement2/mod_derniere_evnement2.php on line 13

foreach ($list as $item) {

Merci d'avance de votre aide.

Pied de page des forums

Propulsé par FluxBB