+ Antworten
Ergebnis 1 bis 1 von 1

Thema: eigenes Modul mit DB-Abfrage und Auswahlliste

  1. #1
    Neu an Board
    Registriert seit
    23.07.2008
    Ort
    Oranienburg
    Beiträge
    17
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard eigenes Modul mit DB-Abfrage und Auswahlliste

    Hallo zusammen,
    ich bin neu in der Joomla-Familie, habe allerdings im Umgang mit HTML, CSS, PHP und Mysql einige Erfahrung. Mein Problem ist etwas spezieller. Ich schreibe an einem Modul, dessen Aufgabe darin besteht, aus einer Datenbank Produkte einer bestimmten Kategorie auszulesen und sichtbar zu machen. Dabei sollen die Kategorienamen in eine Auswahlliste geschrieben werden. bei Änderung der Auswahl sollen in einer Tabelle die dazugehörigen Produkte angezeigt werden. Mit MySQL, PHP und Javascript ist das kein Problem in einer "normalen" Seite. Nun habe ich das Problem, dass die Einbindung der Javascript-functions auf der Modulseite nicht klappt. Offenbar ist das Ansprechen und Auslesen der Daten aus dem Formular nicht einfach zu machen.
    Folgendes habe ich in meine Moduldatei aufgenommen:

    <script type="text/javascript">
    function stoffwechsel(z){ //Buttons zur Navigation vor und zurück
    kalk=document.fmnav.senav.selectedIndex; //Index der Auswahl
    kalv=document.fmnav.senav.options[kalk].value; //Wert der Auswahl
    anz=document.fmnav.senav.length; //Anzahl der Einträge
    if(z==0){
    k=document.fmnav.senav.options[0].value;
    }
    if(z<0){
    if(kalv>0){
    k=eval(kalv-1);
    }
    else{
    k=0;
    }
    }
    if(z==1){
    if(kalk<(anz-1)){
    k=document.fmnav.senav.options[eval(kalk+1)].value;
    }
    else{
    k=document.fmnav.senav.options[anz-1].value;
    }
    }
    if(z==2){
    k=document.fmnav.senav.options[anz-1].value;
    }
    self.location.href="<?php echo($uri);?>&kid="+k;
    }
    function stoffwahl(){ //Die Auswahlliste mit 'onchange'
    stk=document.fmnav.senav.selectedIndex;
    stv=document.fmnav.senav.options[stk].value;
    self.location.href="<?php echo($uri);?>&kid="+stv;
    }
    </script>


    Auch wenn ich dem Script über das $_SERVER['REQUEST_URI'] von PHP die Url mit den Argumenten übergebe und mein Auswahlargument hinten dran hänge, kriege ich eine javascript-Fehlermeldung, dass die Formularelemente nicht angesprochen werden können. Wie behelfe ich mir?
    Ich habe erwogen, einen Formularmodul zu nutzen, aber das löst nicht wirklich mein Problem, weil mein Formular in einem Modul arbeitet, das über {mosloadposition} von einer content-Seite aufgerufen wird.
    Das muss ich so machen, weil ich mit dem Modul eine Datenbank auslese, die ursprünglich nicht zu Joomla! gehörte.
    Mache ich einen prinzipiellen Denkfehler? Besteht die Möglichkeit, eine externe js-Datei für die functions zu nutzen? Wenn ja, wo muss die liegen oder welche existiert, die ich nutzen kann?
    Ich arbeite mit Joomla_1.0.8-Stable auf einem XAMPP-System mit PHP5 und MySQL 4 (zur Zeit noch lokal zum Entwickeln) mit dem Template rhuk_solarflare_ii, das ich ein wenig umgestaltet habe.

    Danke im Voraus für Eure Mühe

    PS:
    ich bin inzwischen ein wenig weiter gekommen. Mit einer ins template eingebundenen eigenen js-Datei kommt man schon ein gutes Stück weiter. Allerdings kann man die Formularlemente und das Formular selbst in Javascript nicht mit Namen ansprechen sondern mit "self.document.forms[1].elements[2].options[xy].value.." (z.B. für die Auswahlliste).
    Die macht dann auch die Sache schwierig, weil das Javascript partout den Zustand der Auswahlliste bei 'onchange' nicht auslesen will und immer zum Ausgangszustand zurückkehrt. Ich kriege also als Seitenaufruf immer den ursprünglichen.
    Mit den vier Buttons neben der Auswahlliste kann ich zwar durch die Liste blättern (|< << und >> >| wie beim Videorecoder) aber eine schnelle Auswahl über die Auswahlliste wäre halt cool und funktioniert in anderen Umgebungen ja auch. Was muss ich beachten, dass mein Script auch den korrekten Wert vom <select> ausliest und zurückgibt?

    Gruß

    Jury

    PS die zweite:
    ich habe eine Lösung gefunden. Vielleicht hätte man auch gleich drauf kommen können.
    Ich übergebe mit dem onchange-Aufruf des <select> nicht nur das Request der Seite sondern auch mit "this.selectedIndex" als zweites Argument den Auswahlindex aus der Liste.
    Den wiederum nutze ich in der Javascriptfunktion, um mir aus der Liste den zugehörigen Wert zu holen, den ich an den URL hinten dran hänge. Schon ist der rekursive Aufruf mit neuem Parameter fertig.

    Ich hoffe, ich habe jetzt nicht Eulen nach Athen getragen und alle Päpste und andere Joomlaisten grinsen nur müde...

    Trotzdem danke allen, die das hier gelesen haben, für ihre Geduld.

    Gruß

    Jury
    Geändert von jury2001 (24.07.2008 um 10:40 Uhr) Grund: hab die Lösung

+ Antworten

Lesezeichen

Berechtigungen

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