+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Modulinhalt neu laden (PHP, MySQL, JQuery, AJAX)

  1. #1
    Neu an Board
    Registriert seit
    03.09.2011
    Beiträge
    5
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Modulinhalt neu laden (PHP, MySQL, JQuery, AJAX)

    Hallo zusammen,

    ich hoffe, ich verstoße nicht direkt bei meinem 1. Post gegen irgendeine Forenregel.
    Ich durchforste seit einiger Zeit das Internet, um mein selbstgeschriebenes Modul via AJAX + JQuery erneut zu laden.

    Es sieht derzeit folgendermaßen aus:

    Dateistruktur:
    Code:
    mod_deals
    - helper.php
    - index.html
    - mod_deals.php
    - mod_deals.xml
    - tmpl
    - - default.php
    - js
    - - mod_deals.js
    Dateien:
    helper.php
    PHP-Code:
    <?php
    defined
    '_JEXEC' ) or die( 'Restricted Access' );
    ?>

    <?php
    class ModDealsHelper {
        public function 
    getDeals() {
            
    $db =& JFactory::getDBO();
            
    $query "SELECT A.* , B.* , C.* 
                      FROM deals as A , products as B , shop as C 
                      WHERE A.productid = B.id AND B.shopid = C.id
                      ORDER BY RAND()
                      LIMIT 0,4"
    ;
            
            
    $db->setQuery($query);
            
            if( !
    $db->query() ) {
                echo 
    "<script type='text/javascript'>
                      alert('"
    .$db->getErrorMsg()."');
                      </script>"
    ;
                
                return 
    false;
            } else {
                
    $rows $db->loadObjectList();
                return 
    $rows;
            }
        }
    }
    ?>
    mod_deals.php
    PHP-Code:
    <?php
    defined
    '_JEXEC' ) or die( 'Restricted Access' );
    ?>

    <?php
    require_once(dirname(__FILE__).DS.'helper.php');
    $deals ModDealsHelper::getDeals();
    require_once(
    JModuleHelper::getLayoutPath('mod_deals'));
    ?>

    mod_deals.js
    PHP-Code:
    $(document).ready ( function() {
        
    setInterval"update()"5000 );
    });

    function 
    update() {
        $(
    "#dDeals").load("modules/mod_deals/mod_deals.php");

    default.php
    Hier steht lediglich die Ausgabe mittels einer foreach-Schleife.


    Prinzipiell funktioniert der Aufruf auch.
    Mein Problem ist nun, verständlicherweise, dass der Zugriff nicht erlaubt ist.
    Sprich ich bekomme die Fehlermeldung "Restricted Access".

    Nun bin ich leider völlig überfragt, was ich machen soll / kann.
    Die MySQL-Abfrage in eine seperate Datei auslagern? - Habe ich bereits versucht, jedoch wird der
    Inhalt dann leider nicht angezeigt.


    Über ein paar gute Tipps wäre ich sehr dankbar!

    Besten Dank!
    Thorsten

  2. #2
    Neu an Board
    Registriert seit
    17.06.2011
    Beiträge
    71
    Bedankte sich
    11
    Erhielt 10 Danksagungen
    in 10 Beiträgen

    Standard

    "Restricted Access" bekommst du jedes mal, wenn du versuchst die Datei "dierekt" aufzurufen also außerhalb Joomla. Weise dem Modul eine Modulposition zu und rufe es anschließend über Joomla auf.

  3. #3
    Neu an Board
    Registriert seit
    03.09.2011
    Beiträge
    5
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hi,

    danke für die Antwort.

    Das Modul befindet sich bereits auf der Seite, sprich auf einer bestimmten Modulposition.
    Es geht sich prinzipiell nur darum, dass die Datenbankabfrage aus der Datei "helper.php" erneut ausgeführt wird
    und das Ergebnis somit aktualisiert wird.
    Dies soll ca. alle 10 Sekunden o.ä. passieren.

    Gruß!

  4. #4
    Neu an Board
    Registriert seit
    22.03.2011
    Beiträge
    63
    Bedankte sich
    0
    Erhielt 10 Danksagungen
    in 10 Beiträgen

    Standard

    Du darfst die Datei nicht direkt aufrufen ($("#dDeals").load("modules/mod_deals/mod_deals.php"); ) wonder du must immer durch die index.php gehen. Am einfachsten geht das in deinem Fall wohl wenn du eine Datei in dein Template einfügst die nur diese Modulposition enthält. So ähnlich funktioniert das in der Joomla Installation ab 1.7 auch.

  5. #5
    Moderator Avatar von Lacki
    Registriert seit
    27.04.2006
    Ort
    Direkt um die Ecke
    Beiträge
    8.739
    Bedankte sich
    337
    Erhielt 3.615 Danksagungen
    in 2.974 Beiträgen

  6. #6
    Neu an Board
    Registriert seit
    03.09.2011
    Beiträge
    5
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hi,

    vielen Dank nochmals.
    Bin das nun mal durchgegangen.

    Also prinzipiell heißt es, dass Joomla bereits ein JavaScript Framework, sprich mootools, integriert hat.
    Mit diesem Framework könnte ich mein Problem beheben.

    Gibt es prinzipiell keinen Aufruf innerhalb der JS-Datei, der besagt, dass es sich um keinen fremden Aufruf handelt?

    Danke :-)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein