+ Antworten
Ergebnis 1 bis 1 von 1

Thema: Eigene Komponente -> Galileo Openbook Anleitung -> Datenbankzugriff schlägt fehl?

  1. #1
    War schon öfter hier
    Registriert seit
    09.04.2008
    Beiträge
    186
    Bedankte sich
    32
    Erhielt 32 Danksagungen
    in 31 Beiträgen

    Standard Eigene Komponente -> Galileo Openbook Anleitung -> Datenbankzugriff schlägt fehl?

    Hallo... wusste jetzt nicht wie ich den Titel treffender hinbekomme.....

    Also was ich vor habe:
    ganz simpel...
    ich möchte eine komponente schreiben die mir aus einer bestimmten tabelle bestimmte datensätze zurückliefert...

    Soweit so gut...
    Ich hab mir dazu - weil ich mit der logik von Joomla noch nicht ganz so vertraut bin - mehrere tutorials angeguckt...
    Viele Meinungen und Anwendungsbeispiele gelesen...
    Am einfachsten sah das von Galileo Computing aus....

    Was ich bereits gemacht habe:
    Dem ganzen einen namen gegeben... (anderer name wie beim Galileo Beispiel) die ersten dateien erstellt die für eine installation benütigt werden..
    das erste modul erstellt... und hier jetzt mein problem....

    Das Modul funktioniert soweit....
    ich habe hier und da ein paar testfunktionen (für mich zum verständniss der anwendungsmöglichkeiten) erstellt und diese auch in die view.html.php bzw default.php (Template) aufgerufen...

    Soweit funktioniert das auch....

    Aber jetzt möchte ich ja nicht nur sinnfrei mit sinlosen funktionen spielen.. sondern eine produktive datenbankabfrage starten.

    Dazu habe ich in der ticket.php (modules) folgende testfunktion erstellt:
    PHP-Code:
    function ticket_sql()
        {
            
    $db =& JFactory::getDBO();
            
    $query 'SELECT * FROM #__tickets';
            
    $db->setQuery($query);
            if ( !
    $db->query() ) { 
                echo 
    "<script type='text/javascript'> 
                 alert('"
    .$db->getErrorMsg()."'); 
                 </script>"

                return 
    false
            } 
            else 
            { 
                
    $rows $db->loadObjectList(); 
                return 
    $rows
            }
        } 
    ich bin sogar noch ein schritt vom beispiel von Galileo weiter gegangen und habe noch eine if else abfrage eingebaut, falls sich ein fehler eingeschlichen hat... bis hier hin funktioniert das....

    Jetzt muss ich im nächsten schritt ja die funktion dem viewer übergeben...
    also hab ich folgendes gemacht:
    view.html.php
    PHP-Code:
    function display($tpl null
        {
            
    $model =& $this->getModel();
            
    $get_tickets $model->ticket_sql();
            
    $this->assignRef('tickets'$get_tickets);
            
    parent::display($tpl);
            
        } 
    Jetzt will ich natürlich noch das es ausgegeben wird das ergebnis.
    default.php
    PHP-Code:
    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted Access');

    echo 
    "hello world of tickets<br><br>";

    foreach (
    $this->get_tickets as $ticket)
    {
        echo 
    $ticket->guid "<br />";
        echo 
    $ticket->name "<br />";
        echo 
    $ticket->message "<br />";
        echo 
    $ticket->createtime "<br />";
    }
    ?>
    alles gepackt, installiert und ab ins frontend zum test...
    index.php?option=com_mycomponent&view=tickets

    Das hello world of tickets wird richtig ausgegeben...
    Aber das wars... dannach bekomme ich folgende fehler meldung:
    Code:
    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\dfn\components\com_mycomponent\views\tickets\tmpl\default.php on line 8
    Da ich da jetzt schon seid 3 tagen dran sitze und diesen fehler nicht verstehe (seh den wald vor lauter bäumen nicht mehr o0 ) hab ich mir mal erlaubt in der default.php zeitweise abzufragen ob $this->get_tickets überhaupt übergeben wird...
    und.. was bekomme ich für ne meldung? $this->get_tickets wurde nicht übergeben -.-"

    hat jemand eine idee was da jetzt falsch gelaufen ist?
    wie gesagt... ich hab mich an die anleitung von galileo gehalten ... bis auf das ich die funktionen umbenannt habe (componenten weit...)
    Also aus function pairrank() hab ich ticket_sql() gemacht... etc...

    LG
    Sada

    [EDIT]
    gelöst....
    Ich sag ja ich seh den wald vor lauter bäumen nicht mehr -.-"
    Lösung:
    in der datei view.html.php habe ich $this->assignRef('tickets', $get_tickets); geschrieben.....
    in der datei default.php habe ich aber immernoch versucht $get_tickets aufzurufen statt $this->tickets as tickets in der foreach schleife -.-"

    Hier nochmal wie jetzt die datei richtig auszusehen hat:
    PHP-Code:
    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted Access');

    echo 
    "hello world of tickets<br><br>";

    foreach (
    $this->tickets as $ticket)
    {
        echo 
    $ticket->guid "<br />";
        echo 
    $ticket->name "<br />";
        echo 
    $ticket->message "<br />";
        echo 
    $ticket->createtime "<br />";
    }
    ?>
    Geändert von Sadakazu (06.10.2011 um 18:55 Uhr)
    Deine Frage hat sich erledigt? du hast die lösung gefunden für dein problem? dann schreibe die lösung bitte nochmal in dein Post und setzte das thema dann laut dieser Beschreibung auf Gelöst.

+ Antworten

Lesezeichen

Berechtigungen

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