il y a une réel différence de développement et de maintenance entre base interne et b

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] il y a une réel différence de développement et de maintenance entre base interne et b

    Bonjour,

    je me suis entrain de me poser une question suite a des obstacle de connexion a une BDD
    je suis entrain de faire mon developpement en gardant les données sur mon ancienne base externe.
    Au vue de la difficulté de re-coder chaque fonction pour adappter au fonction d'origine de joomla si ce n'est pas mieux de transferé sur la base d'origine.
    il y a une réel différence de développement et de maintenance entre base interne et base externe

    voir deja mon premier post :

    je voudrai utiliser la méthode $this->getState('list.ordering' de la query 2 sur la query 1

    car il y a une différence! la query 1 est une connexion a ma base externe $dbExterne = ComTaxationHelper::getDBO();
    et la query 2 est une connexion a une base interne (joomla)

    nom problème est dans la compréhension de " _db-> " de la query 2. Je présume que c'est une connexion a la base interne (joomla) ?

    Comment remplacer cette connexion avec ma connexion $dbExterne = ComTaxationHelper::getDBO();

    merci d'avance pour votre aide


    -----------------------------------------------------
    (query 1)
    public static function Tableau($periode) {
    // conexion db externe
    $dbExterne = ComTaxationHelper::getDBO();
    // sql
    $Sql = "SELECT * FROM `ENTREPOT`" ;
    $dbExterne->setQuery($Sql);
    $query = $dbExterne->loadObjectList();
    return $query;
    }
    -------------------------------------------------------
    (query 2)

    protected function _getListQuery(){
    $db = ComTaxationHelper::getDBO();

    $requete = $this->_db->getQuery(true);
    $requete->select('*');
    $requete->from($this->_db->quoteName('#__ENTREPOT'));

    $ordeCol = $this->getState('list.ordering', 'astrid_id');
    $orderDirn = $this->getState('list.direction', 'ASC');
    $requete->order($this->_db->escape($ordeCol.' '.$orderDirn));
    return $requete;

  • #2
    Re : il y a une réel différence de développement et de maintenance entre base interne

    RE salut,
    C'est peut-être ton loadObjectList qui ne va pas.
    Je te propose ceci, en reprenant depuis le début, avec un exemple simple :
    Code PHP:
    <?php
    $option 
    = array(); //prevent problems
     
    $option['driver']   = 'mysql';            // Database driver name
    $option['host']     = 'db.myhost.com';    // Database host name
    $option['user']     = 'user';       // User for database authentication
    $option['password'] = 'motdepasse';   // Password for database authentication
    $option['database'] = 'bigdatabase';      // Database name
    $option['prefix']   = 'abc_';             // Database prefix (may be empty)
     
    $db JDatabaseDriver::getInstance$option );


    $db JFactory::getDbo();
    $query $db->getQuery(true)
          ->
    select($db->quoteName('*'))
          ->
    from($db->quoteName('#__users'));
    $db->setQuery($query);
    $rows $db->loadObjectList();

    //juste un petit exemple d'affichage
    foreach ($rows as $row) {
        echo 
    '<p>' $row->id .'|'.$row->username.'|'.$row->email '</p>';
    }
    ?>
    PS : pour afficher le PHP en mode code, tu vas sur "Aller en mode avancé, tu sélectionnes ton code et tu cliques sur l'icone "PHP" dans l'éditeur
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Re : il y a une réel différence de développement et de maintenance entre base interne

      Salut ghazal,
      Merci pour ton aide
      voici le resultat j'ai bien un tableau de donnée type object(stdClass)
      Code PHP:
      array (size=5)
        
      => 
          
      object(stdClass)[505]
            public 
      'id' => string '0113' (length=4)
            public 
      'service' => string 'Service-inconnu' (length=15)
            public 
      'Tmontant' => string '1.76825000' (length=10)
            public 
      'Tduree' => string '00:10:43' (length=8)
        
      => 
          
      object(stdClass)[504]
            public 
      'id' => string '0337' (length=4)
            public 
      'service' => string 'Service-inconnu' (length=15)
            public 
      'Tmontant' => string '1.77650000' (length=10)
            public 
      'Tduree' => string '00:10:46' (length=8)
        
      => 
          
      object(stdClass)[503]
            public 
      'id' => string '0571' (length=4)
            public 
      'service' => string 'Service-inconnu' (length=15)
            public 
      'Tmontant' => string '0.04725000' (length=10)
            public 
      'Tduree' => string '00:02:15' (length=8)
        
      => 
          
      object(stdClass)[502]
            public 
      'id' => string '0809' (length=4)
            public 
      'service' => string 'Service-inconnu' (length=15)
            public 
      'Tmontant' => string '0.04245000' (length=10)
            public 
      'Tduree' => string '00:01:27' (length=8)
        
      => 
          
      object(stdClass)[501]
            public 
      'id' => string '1927' (length=4)
            public 
      'service' => string 'Service-inconnu' (length=15)
            public 
      'Tmontant' => string '0.19250000' (length=10)
            public 
      'Tduree' => string '00:01:10' (length=8
      Si je vousdrai utiliser la methode _getListQuery();
      Code PHP:
      protected function _getListQuery() {
          
      $db ComTaxationHelper::getDBO();
          
      $db JFactory::getDbo($db);
          
      $sql $db->getQuery(true); 
          
      $sql "SELECT id, service, SUM(montant) AS Tmontant, SEC_TO_TIME ( SUM(duree) ) AS Tduree FROM `ENTREPOT` WHERE periode='2015-04' GROUP BY astrid_id limit 0,5" 
          
      // --------------------------------------------------------------
          // tri des colonnes
          // --------------------------------------------------------------
          
      $ordeCol    $this->getState('list.ordering''id');
          
      $orderDirn  $this->getState('list.direction''ASC'); 
      je bloc ici
      Code PHP:
      $sql->order($this->_db->escape($ordeCol.' '.$orderDirn)); 
      voici le message d'erreur "Fatal error: Call to a member function order() on a non-object "

      ces surement
      Code PHP:
       $this->_db 
      ces la dernière ligne avant l'affichage
      merci d'avance
      a+ kad

      Commentaire


      • #4
        Re : il y a une réel différence de développement et de maintenance entre base interne

        bonjour,
        quelqu'un aurai une idée a mon problème message ci-dessus

        " voici le message d'erreur "Fatal error: Call to a member function order() on a non-object "

        merci .

        Commentaire


        • #5
          Re : il y a une réel différence de développement et de maintenance entre base interne

          Bonjour,

          je vais peut être dire une énorme bêtise (c'est pourtant pas mon genre et là je suis à jeun ) !

          Mais :
          "Fatal error: Call to a member function order() on a non-object "
          Signifie que tu appliques une méthode (order()) sur une variable ($sql) qui devrait être un objet et qui n'en est pas un ou pas du bon type. Or dans ton code d'origine, $sql est bien un objet (à vérifier et checker peut être quand même) après :
          $sql = $db->getQuery(true);
          mais il ne l'est plus dès la ligne suivante où tu l'écrases avec une chaîne de caractères :
          $sql = "SELECT id, service, SUM(montant) AS Tmontant, SEC_TO_TIME ( SUM(duree) ) AS Tduree FROM `ENTREPOT` WHERE periode='2015-04' GROUP BY astrid_id limit 0,5" ;

          N'aurais tu pas par hasard juste inversé les 2 lignes ?
          Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X