Hallo Community!
Darum gehts:
ich habe eine Joomla-Komponente (Seminar), die eigentlich sehr gut für meine Zwecke passt. Es geht darum, dass sich Leute zu Veranstaltungen anmelden können und der Veranstalter die Buchungen im Backend bequem administrieren kann.
Bei der Ausgabe der Benutzerlisten gibt's allerdings ein paar Probleme: mein Hauptproblem: die Spalten müssen sortierbar sein. Jetzt habe ich versucht, aus einem anderen Bereich der verwendeten Komponente, in dem eine Sortierfunktion existiert, für mich anzupassen. Das gelingt bisher nur halb und es macht sich bemerkbar, dass ich kein besonder Crack in Sachen PHP und MySQL bin.
Das Problem:
wenn ich die Liste sortieren lassen will, werde ich zu der Seite umgeleitet, aus der ich die "Sortierfunktion" übernommen habe. Das ist zunächst mal das augenscheinlichste Problem.
Ich poste mal den Code der betreffenden Funktion. (ich hoffe er ist nicht zu lang! - ich weiß allerdings momentan nicht, an welcher Stelle genau der Hund begraben liegt)
- function sem_g029($uid) {
- $database = &JFactory::getDBO();
- global $mainframe, $katid, $ordid, $ricid, $einid, $search, $limit, $limitstart;
- jimport('joomla.html.pagination');
- $katid = trim(JRequest::getVar('katid',0));
- $ordid = trim(JRequest::getVar('ordid',0));
- $ricid = trim(JRequest::getVar('ricid',0));
- $einid = trim(JRequest::getVar('einid',0));
- $search = trim(strtolower(JRequest::getVar('search','')));
- $limit = trim(JRequest::getVar('limit',5));
- $limitstart = trim(JRequest::getVar('limitstart',0));
- $neudatum = sem_f046();
- $config = &JComponentHelper::getParams('com_seminar');
- $kurs = new mosseminar( $database );
- $kurs->load( $uid );
- $where = array();
- if ($katid > 0) {
- $where[] = "a.catid='$katid'";
- }
- if ($search) {
- $where[] = "LOWER(a.title) LIKE '%$search%' OR LOWER(a.shortdesc) LIKE '%$search%' OR LOWER(a.description) LIKE '%$search%'";
- }
- switch ($einid) {
- case "1":
- $where[] = "a.published = '1'";
- break;
- case "2":
- $where[] = "a.published = '0'";
- break;
- case "3":
- $where[] = "a.end > '$neudatum'";
- break;
- case "4":
- $where[] = "a.end <= '$neudatum'";
- break;
- }
- $sorte = array("a.name","a.zusatz1","a.certificated","a.email","a.bookingdate","a.paid","a.zusatz2","a.zusatz3","a.zusatz4","a.zusatz5","a.zusatz6","a.zusatz7","a.zusatz8",);
- $richt = array(" ASC"," DESC");
- // get the total number of records
- $database->setQuery( "SELECT count(*) FROM #__sembookings AS a"
- . (count( $where ) ? "nWHERE " . implode( ' AND ', $where ) : "")
- );
- $total = $database->loadResult();
- if( $total<=$limitstart ) {
- $limitstart = $limitstart - $limit;
- }
- if( $limitstart < 0) {
- $limitstart = 0;
- }
- $ttlimit = "";
- if($limit > 0) {
- $ttlimit = "nLIMIT $limitstart, $limit";
- }
- $pageNav = new JPagination( $total, $limitstart, $limit );
- $database->setQuery( "SELECT a.*"
- . "nFROM #__sembookings AS a"
- . "nLEFT JOIN #__users AS u ON u.id = a.checked_out"
- . (count( $where ) ? "nWHERE " . implode( ' AND ', $where ) : "")
- . "nORDER BY " . $sorte[$ordid] . $richt[$ricid]
- . $ttlimit
- );
- $rows = $database->loadObjectList();
- // get list of categories
- $kategorien[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0027') );
- $database->setQuery( "SELECT id AS value, title AS text FROM #__categories WHERE section='com_seminar' ORDER BY ordering" );
- $kategorien = array_merge( $kategorien, $database->loadObjectList() );
- $clistt = JHTML::_('select.genericlist', $kategorien, 'katid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
- 'value', 'text', $katid );
- $sortierung[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0059') );
- $sortierung[] = JHTML::_('select.option', '1', JTEXT::_('SEM_2023') );
- $sortierung[] = JHTML::_('select.option', '2', JTEXT::_('SEM_0097') );
- $sortierung[] = JHTML::_('select.option', '3', JTEXT::_('SEM_0052') );
- $sortierung[] = JHTML::_('select.option', '4', JTEXT::_('SEM_0032') );
- $sortierung[] = JHTML::_('select.option', '5', JTEXT::_('SEM_0065') );
- $sortierung[] = JHTML::_('select.option', '6', JTEXT::_('SEM_2024') );
- $sortierung[] = JHTML::_('select.option', '7', JTEXT::_('SEM_2025') );
- $sortierung[] = JHTML::_('select.option', '8', JTEXT::_('SEM_2026') );
- $sortierung[] = JHTML::_('select.option', '9', JTEXT::_('SEM_2027') );
- $sortierung[] = JHTML::_('select.option', '10', JTEXT::_('SEM_2028') );
- $sortierung[] = JHTML::_('select.option', '11', JTEXT::_('SEM_2029') );
- $sortierung[] = JHTML::_('select.option', '12', JTEXT::_('SEM_2030') );
- $olistt = JHTML::_('select.genericlist', $sortierung, 'ordid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
- 'value', 'text', $ordid );
- $richtung[] = JHTML::_('select.option', '0', JTEXT::_('SEM_2004') );
- $richtung[] = JHTML::_('select.option', '1', JTEXT::_('SEM_2005') );
- $rlistt = JHTML::_('select.genericlist', $richtung, 'ricid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
- 'value', 'text', $ricid );
- $allekurse[] = JHTML::_('select.option', '0', JTEXT::_('SEM_0028') );
- $allekurse[] = JHTML::_('select.option', '1', JTEXT::_('SEM_2014') );
- $allekurse[] = JHTML::_('select.option', '2', JTEXT::_('SEM_2021') );
- $allekurse[] = JHTML::_('select.option', '3', JTEXT::_('SEM_0039') );
- $allekurse[] = JHTML::_('select.option', '4', JTEXT::_('SEM_0037') );
- $elistt = JHTML::_('select.genericlist', $allekurse, 'einid', 'class="inputbox" size="1" onchange="document.adminForm.limitstart.value=0;document.adminForm.submit();"',
- 'value', 'text', $einid );
- $listent = array($clistt, $olistt, $rlistt, $elistt);
- $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,$listent,$uid,$search,$pageNav,$limitstart,$limit);
- }
Vielen Dank für eure Tipps!