+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Sortierfunktion implementieren - dringend gesucht!

  1. #1
    Neu an Board
    Registriert seit
    23.09.2007
    Beiträge
    44
    Bedankte sich
    3
    1 Danksagung in 1 Beitrag

    Standard Sortierfunktion implementieren - dringend gesucht!

    Hallo!
    Ich bin gerade dabei, eine Komponente für das Joomla-CMS anzupassen. Und zwar wird dort eine Tabelle mit Mitgliedern ausgegeben, die sich für eine Veranstaltung angemeldet haben. Die einzelnen Spalten (d.h. mit Name, Adresse Telefon etc.) sollen nun aber sortierbar sein. Und das kriege ich überhaupt nicht gebacken. Nachdem ich da jetzt schon wochenlang rumbastle und nicht weiterkomme, wollte ich hier mal nach Hilfe fragen. Ich glaube ja eigentlich, dass die Sache nicht so schwierig sein kann und sich das mit dem "grid.sort" usw. relativ einfach lösen lassen ließe.
    Aber wie gesagt, ich komm nicht drauf.

    Daher meine Bitte: vielleicht kann mir ja jemand bei der Sache helfen - finanzielle Gegenleistung soll hier ja nicht angeboten werden, aber da würde man sich sicher einig werden.

    Ich poste mal den betreffenden Code:


    PHP-Code:
    function sem_g029($uid) {
      
    $database = &JFactory::getDBO();
      
    $config = &JComponentHelper::getParams('com_seminar');
      
    $kurs = new mosseminar$database );
      
    $kurs->load$uid );
      
    $database->setQuery"SELECT a.*, cc.*, a.id AS sid, a.name AS aname, a.email AS aemail FROM #__sembookings AS a LEFT JOIN #__users AS cc ON cc.id = a.userid WHERE a.semid = '$kurs->id' ORDER BY a.id");
      
    $rows $database->loadObjectList();
      
    HTML_seminar::sem_g029($kurs,$rows,$uid);

    PHP-Code:
    Und das hier ist für die HTML-Ausgabe:

    function 
    sem_g029($kurs,$rows,$uid) {
        global 
    $my;
        
    $config = &JComponentHelper::getParams('com_seminar');
        
    JHTML::_('behavior.modal');

    // ---------------------------------------
    // Ueberschrift
    // ---------------------------------------

        
    $html sem_f026(2)."\n<table width=\"100%\"><tr><th width=\"90%\" style=\"text-align:left\">".JTEXT::_('SEM_0048').": ".$kurs->title."</th>";
        
    $html .= "<td style=\"text-align: right; white-space: nowrap\">".sem_f038(2,$kurs->id).sem_f038(4,$kurs->id).sem_f038(5,$kurs->id)."</td></tr></table>";


            
    // ---------------------------------------
    // Ausgabe der Kurstabelle
    // ---------------------------------------

        
    $html .= "\n<table class=\"adminlist\"><thead>";
        
    $temp3 "<input type=\"checkbox\" name=\"toggle\" value=\"\" onclick=\"checkAll(".count$rows ).");\" />";
        
    $temp = array($temp3,JTEXT::_('SEM_0059'),JTEXT::_('SEM_2023'),JTEXT::_('SEM_0097'),JTEXT::_('SEM_0052'),JTEXT::_('SEM_0032'));
        if( 
    $kurs->fees 0) {
          
    $temp[] = JTEXT::_('SEM_0065');
        }
        
    array_push($temp,JTEXT::_('SEM_2024'),JTEXT::_('SEM_2025'),JTEXT::_('SEM_2026'),JTEXT::_('SEM_2027'),JTEXT::_('SEM_2028'),JTEXT::_('SEM_2029'),JTEXT::_('SEM_2030'),JTEXT::_('SEM_0069'));
        
    $html .= "\n".sem_f024"th"""""$temp"");
        
    $html .= "</thead><tbody>";

    // Schleife fuer die einzelnen Kurse

        
    $n count($rows);
        if( 
    $n ) {
          
    $k 0;
          
    $neudatum sem_f046();
          
    $anzahl 0;
          
    $i 0;
          foreach (
    $rows as $row) {
            if(
    $row->userid==0) {
              
    $row->name $row->aname;
              
    $row->email $row->aemail;
            }
            
    $anzahl $anzahl $row->nrbooked;
            
    $bild "2502.png";
            
    $altbild JTEXT::_('SEM_0030');
            if( 
    $anzahl $kurs->maxpupil ) {
              if( 
    $kurs->stopbooking ) {
                
    $bild "2501.png";
                
    $altbild JTEXT::_('SEM_0025');
              } else {
                
    $bild "2500.png";
                
    $altbild JTEXT::_('SEM_0029');
              }
            }
            
    $temp = array();
            
    $temp[] = "<input type=\"checkbox\" id=\"cb".$i."\" name=\"cid[]\" value=\"".$row->sid."\" onclick=\"isChecked(this.checked);\" />";
            
    $temp[] = $row->name;
                    
    $temp[] = $row->zusatz1;
                    
    $temp[] = $row->id;
            
    $temp[] = "<a href=\"mailto:".$row->email."\">".$row->email."</a>";
            
    $temp[] = sem_f047($row->bookingdate,"kurz")." ".sem_f047($row->bookingdate,"zeit");
            
    $tempa = array("c","","","c","c");
            if( 
    $kurs->fees 0) {
              
    $htxt "&nbsp;";
              if(
    $anzahl<=$kurs->maxpupil) {
                
    $paidbild "2200.png";
                
    $paidtitel JTEXT::_('SEM_0064');
                if( 
    $row->paid == 1) {
                  
    $paidbild "2201.png";
                  
    $paidtitel JTEXT::_('SEM_0063');
                }
                
    $htxt "<a title=\"".$paidtitel."\" href=\"javascript: void(0)\;\" onclick=\"return listItemTask('cb".$i."','paid')\"><img src=\"".sem_f006().$paidbild."\" border=\"0\" alt=\"".JTEXT::_('SEM_0065')."\"></a>";
              }
              
    $temp[] = $htxt;
              
    $tempa[] = "c";
            }
            
    $temp[] = $row->zusatz2;
            
    $temp[] = $row->zusatz3;
                    
    $temp[] = $row->zusatz4;
                    
    $temp[] = $row->zusatz5;
                    
    $temp[] = $row->zusatz6;
                    
    $temp[] = $row->zusatz7;
                    
    $temp[] = $row->zusatz8;
            
    $tempa[] = "c";
            
    $klasse "row".$k;
            
    $html .= "\n".sem_f024"td"$tempa""$temp$klasse);
            
    $k $k;
            
    $i++;
          }
        } else {
          
    $html .= "\n<tr class=\"row0\"><td colspan=\"9\">.".JTEXT::_('SEM_0061')."</td></tr>";
        }
        
    $html .= "\n</tbody></table>"

  2. #2
    Verbringt hier viel Zeit Avatar von Trubadix
    Registriert seit
    18.03.2007
    Beiträge
    874
    Bedankte sich
    35
    Erhielt 150 Danksagungen
    in 148 Beiträgen

    Standard

    Wenn ich das richtige verstehe, möchtest du in der Übersicht deiner Veranstaltungen neben "Anzeige", "Suche", und "Kategorie" ein weiteres Feld(Picbox) haben, "sortiert nach".

    So einfach ist das natürlich nicht machbar.
    1. Das zuständige Seminar.css ist zu erweitern.
    2. Die Abfragen müssen von fixen Werten z.B.(ORDER BY a.id) auf variablen aus seminar.css umgestellt werden. So wie jetzt das Select der Kategorie gelöst ist.
    Ich hoffe dieser kleine gedankliche Ansatz hilft dir erst mal ein wenig weiter.

    Im Zweifelsfall, einfach bei Dirk Vollmar anfragen, ob er was für dich in der Westentasche hat
    Firefox und Firebug sind des Joomlaners Freund

  3. #3
    Neu an Board
    Registriert seit
    23.09.2007
    Beiträge
    44
    Bedankte sich
    3
    1 Danksagung in 1 Beitrag

    Standard

    Hej, danke schon mal für die Antwort.
    Auf die Idee, Herrn Vollmar anzuschreiben, bin cih bereits gekommen, allerdings hat er mir nicht geantwortet.

    Ist das wirklich so schwer einzubauen? Ich hab immer das Gefühl, dass es so viel nicht sein kann und ich nur gehörig auf dem Schlauch stehe (und natürlich zu wenig PHP und JS kann )

  4. #4
    Verbringt hier viel Zeit Avatar von Trubadix
    Registriert seit
    18.03.2007
    Beiträge
    874
    Bedankte sich
    35
    Erhielt 150 Danksagungen
    in 148 Beiträgen

    Standard

    Nein es ist nicht schwer, nur ohne PHP und SQL wirst du das sicher nicht hinbekommen. Gebe es doch einfach bei JoomlaJobs(siehe dunkelblaue Menüleiste ganz oben) in Auftrag.
    Firefox und Firebug sind des Joomlaners Freund

  5. #5
    Kommt häufiger vorbei Avatar von VollNormal
    Registriert seit
    03.08.2006
    Ort
    Bochum
    Beiträge
    337
    Bedankte sich
    6
    Erhielt 66 Danksagungen
    in 64 Beiträgen

    Standard

    In Kürze:
    • Das Feld, nach dem sortiert wird, wird dynamisch gesetzt.
    • Die Spaltenüberschriften bekommen einen Link, der wieder auf die Seite verweist
    • Als zusätzlicher Parameter wird in diesem Link das Feld, nach dem sortiert werden soll, übergeben.
    • Zur Steigerung des ganzen baust du jeweils zwei Links, die zwischen auf- und absteigender Sortierung umschalten.
    An den Stylesheet-Definitionen braucht da nichts geändert zu werden.
    Tüssi, Andreas

    Vasuch macht kluch!

  6. #6
    Neu an Board
    Registriert seit
    23.09.2007
    Beiträge
    44
    Bedankte sich
    3
    1 Danksagung in 1 Beitrag

    Standard

    Zitat Zitat von VollNormal Beitrag anzeigen
    In Kürze:
    • Das Feld, nach dem sortiert wird, wird dynamisch gesetzt.
    • Die Spaltenüberschriften bekommen einen Link, der wieder auf die Seite verweist
    • Als zusätzlicher Parameter wird in diesem Link das Feld, nach dem sortiert werden soll, übergeben.
    • Zur Steigerung des ganzen baust du jeweils zwei Links, die zwischen auf- und absteigender Sortierung umschalten.
    An den Stylesheet-Definitionen braucht da nichts geändert zu werden.
    Hej, danke euch für die Antworten.
    Ich habs ja mal probiert mit dem grid.sort-Modell, aber da wird dann nur eine weiße Seite ausgegeben, sprich es funktioniert gar nix mehr.
    Siehe dazu meinen Beitrag hier:
    http://www.joomlaportal.de/joomla-er...ppt-nicht.html

    (auf den aber leider auch niemand geantwortet hat. )

  7. #7
    Kommt häufiger vorbei Avatar von VollNormal
    Registriert seit
    03.08.2006
    Ort
    Bochum
    Beiträge
    337
    Bedankte sich
    6
    Erhielt 66 Danksagungen
    in 64 Beiträgen

    Standard

    Wenn du das so wie in deinem anderen Beitrag machst, dann musst du noch die Rückgabe des grid.sort auswerten und an dieser Stelle
    PHP-Code:
      $database->setQuery"SELECT a.*, cc.*, a.id AS sid, a.name AS aname, a.email AS aemail FROM #__sembookings AS a LEFT JOIN #__users AS cc ON cc.id = a.userid WHERE a.semid = '$kurs->id' ORDER BY a.id"); 
    hinter dem ORDER BY an Statt des a.id die entsprechende Spalte setzen.
    Tüssi, Andreas

    Vasuch macht kluch!

  8. #8
    Verbringt hier viel Zeit Avatar von kardio
    Registriert seit
    22.04.2009
    Ort
    Switzerland
    Beiträge
    929
    Bedankte sich
    89
    Erhielt 189 Danksagungen
    in 185 Beiträgen

    Standard

    Schau Dir doch mal die Erweiterung EventList an, da sind auch Tabelle drin, wo man nach verschiedenen Spalten sortieren kann. Vielleicht hilft Dir der Quelltext da weiter.
    Weiss es nur, da ich die Sortierung rausgeschmissen habe, da ich es nicht haben wollte.


  9. #9
    Neu an Board
    Registriert seit
    23.09.2007
    Beiträge
    44
    Bedankte sich
    3
    1 Danksagung in 1 Beitrag

    Standard

    Zitat Zitat von kardio Beitrag anzeigen
    Schau Dir doch mal die Erweiterung EventList an, da sind auch Tabelle drin, wo man nach verschiedenen Spalten sortieren kann. Vielleicht hilft Dir der Quelltext da weiter.
    Weiss es nur, da ich die Sortierung rausgeschmissen habe, da ich es nicht haben wollte.

    Da wär's jetzt interessant, was du genau rausgeschmissen hast.

    Ich hab gestern abend wieder ein bisschen gebastelt an der Sache, danke auch nochmal an den Hinweis von VollNormal.

    Mir ist an dieser Stelle aber einfach nicht ganz klar, was das hier genau bewirkt, bzw. wie sich das auswirkt:

    PHP-Code:
    JHTML::_('grid.sort',   'Email''email', @$rows->lists['order_Dir'], @$rows->lists['order'] ); 
    Muss da noch etwas an den Code von Seminar angepasst werden? Was wird in dieser Zeile im Tabellenkopf genau gemacht?

    Vielleicht kann mir das noch jemand erklären. Dann wäre ich hoffentlich auf einem guten Weg, das ganze mal zu lösen.

    Grüße, schwedenfan

  10. #10
    Kommt häufiger vorbei Avatar von VollNormal
    Registriert seit
    03.08.2006
    Ort
    Bochum
    Beiträge
    337
    Bedankte sich
    6
    Erhielt 66 Danksagungen
    in 64 Beiträgen

    Standard

    Guck dir doch mal die HTML-Ausgabe an. Ich kenne das grid.sort nicht, würde aber stark vermuten, dass im Spaltenkopf ein Link angezeigt wird, in dem über einen Parameter die zu sortierende Spalte übergeben wird. Diesen Parameter musst du auswerten und die SQL-Abfrage enstprechend anpassen.
    Tüssi, Andreas

    Vasuch macht kluch!

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

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