ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Suche auf Kalender erweitern

Geschlossen
  1. #1
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    Hallo,

    ich würde die bestehende Suchfunktion gerne auf den Kalender ausweiten, weiß aber nicht, wie ich da am besten rangehe. Ich hab die search.php erweitert (hier ab Zeile 118, Veränderungen mit NEU markiert):

     $serar = explode(' ', $such);
        $str_forum = '';
        $str_news  = '';
        $str_downs  = '';
        $str_kal  = '';                  <------NEU
    	
    	  foreach($serar as $v) {
    	    $str = str_replace('\'','',$v);
    		  $str = str_replace('"','',$str);
          $str = addslashes($str);
    		  if ( !empty($str) ) {
    		    $str_forum .= "txt LIKE '%".$str."%' AND ";
            $str_news  .= "news_text LIKE '%".$str."%' AND ";
            $str_downs  .= "`descl` LIKE '%".$str."%' AND ";
    		$str_kal .= "text LIKE '%".$str."%' AND ";       <----NEU
    		  }
    	  }
        
        $q = "(
          SELECT DISTINCT
            0 as fid,
            news_title as titel,
            'news' as typ,
            news_id as id,
            news_time as time
          FROM prefix_news
          WHERE (".$str_news." 1 = 1)
            AND (news_time >= ". $x .")
    		
    	) UNION (
        
          SELECT DISTINCT
            prefix_topics.fid as fid,
            prefix_topics.name as titel,
            'foru' as typ,
            prefix_topics.id as id,
            time as time
          FROM prefix_posts
            LEFT JOIN prefix_topics ON prefix_topics.id = prefix_posts.tid
            LEFT JOIN prefix_forums ON prefix_forums.id = prefix_topics.fid
          WHERE (prefix_forums.view >= ".$_SESSION['authright']." OR prefix_forums.reply >= ".$_SESSION['authright']." OR prefix_forums.start >= ".$_SESSION['authright'].")
            AND (".$str_forum." 1 = 1)
            AND (time >= ". $x .")
          GROUP BY prefix_topics.id
    
        ) UNION (
        
          SELECT DISTINCT
            0 as fid,
            CONCAT( name, ' ', version ) AS titel,
            'down' as typ,
            id,
            UNIX_TIMESTAMP(time) as time
          FROM prefix_downloads
          WHERE (".$str_downs." 1 = 1)
            AND (time >= ". $x .")
        
        ) UNION (
    	
    	  SELECT DISTINCT                      <----NEU
    	    0 as fid,
    		titel,
    		'kal' as typ,                  
    		id,
    		time,
    		 FROM prefix_kalender
          WHERE (".$str_kal." 1 = 1)
            AND (time >= ". $x .")                 
    	 )
        
    	
        ORDER BY time DESC";
              
        $gAnz = db_num_rows(db_query($q));
      }
    
      $q .= " LIMIT ".$anfang.",".$limit;
      
      $MPL = db_make_sites ($page , "" , $limit , "index.php?search=".urlencode($such)."&amp;page=", "", $gAnz );
      $tpl->set_ar_out(array('MPL'=>$MPL,'gAnz'=>$gAnz),1);
      
      $q = db_query($q);
      $class = '';
      while($r = db_fetch_assoc($q) ) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
        $r['class'] = $class;
        if ($r['typ'] == 'foru') {
          $r['ctime'] = db_result(db_query("SELECT MAX(time) FROM prefix_posts WHERE tid = ".$r['id']),0,0);
          $r['ord'] = forum_get_ordner($r['ctime'],$r['id'],$r['fid']);
          $r['link'] = 'forum-showposts-'.$r['id'];
        } elseif ($r['typ'] == 'news') {
          $r['ord']  = 'ord';
          $r['link'] = 'news-'.$r['id'];
        } elseif ($r['typ'] == 'down') {
          $r['ord']  = 'ord';
          $r['link'] = 'downloads-show-'.$r['id'];
        } elseif ($r['typ'] == 'kal') {                       <---NEU
    	  $r['ord']  = 'ord';
    	  $r['link'] = 'kalender-v0-e'.$r['id'];
    	  }
        $tpl->set_ar_out($r,2);
      }
      $tpl->out(3);
    }    
    				
    $design->footer();


    Scheint aber was falsch zu sein, denn er wirft mir Fehler aus, und zwar in ../htdocs/include/includes/func/db/mysql.php
    in line 61 -->Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
    in line 44 -->Warning: mysql_result(): supplied argument is not a valid MySQL result resource
    in line 48 -->Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

    jemand ne Idee für mich?

    Ach ja, an den Tabellen hab ich nichts verändert und die Suche funktioniert einwandfrei in Forum und News und ich verwende die Version 1.1E
    1 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    na, niemand ne idee? lächeln
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also es ist ein Fehler in Abfrage, mir ist jetzt z.B. aufgefall, dass du titel abfragst, aber das Feld in der Datenbank title heißt, ob das jetzt alles ist weiß ich nicht.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    juchuuu
    hattest recht, danke, und das mit der Zeit war auch falsch.
    mit diesem Code gehts jetzt bei mir
      SELECT DISTINCT
    	    0 as fid,
    		title as titel,
    		'kal' as typ,
    		id,
    		UNIX_TIMESTAMP(time) as time
    		 FROM prefix_kalender
          WHERE (".$str_kal." 1 = 1)
            AND (time >= ". $x .")

    Danke nochmal Yes
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    jetzt noch eine abschließende Frage:

    Wie kann ich die Suchergebnisse des Kalenders chronologisch ordnen lassen?

    Bei mir werden im Moment die Ergebnisse nach "time" geordnet, aber das ist im Fall vom Kalender ja die Zeit, wann etwas eingetragen wurde und nicht das Datum des Eintrags.
    Wär super, wenn mir da auch jemand einen Denkanstoß geben könnte.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also time ist schon das Datum, wann es im Kalender ist, aber danach wird bei dir nicht geordnet, sondern nach id, du musst noch ORDER BY time einfügen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    kann gut sein, daß ich da was falsch mache, aber wenn ich ORDER BY time oder ORDER BY UNIX_TIMESTAMP(time) einfüge, wird es zwar anders sortiert, aber nicht chronologisch. Kann es daran liegen, daß
     SELECT DISTINCT                      
            0 as fid,
            titel,
            'kal' as typ,                  
            id,
            time,
             FROM prefix_kalender
          WHERE (".$str_kal." 1 = 1)
            AND (time >= ". $x .")                 
                                                <--- habs hier eingefügt
    )
        
        
        ORDER BY time DESC";          <---- das hier
              
        $gAnz = db_num_rows(db_query($q));
      }


    ORDER BY time DESC schon da steht? Wenn ich nichts einfüge und nur ORDER BY time schreibe gehts auch nicht
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Tut mir leid, mehr kann ich dir dazu auch nicht sagen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    hans Mitglied
    Registriert seit
    14.02.2007
    Beiträge
    17
    Beitragswertungen
    2 Beitragspunkte
    kein Problem, dann versuch ich noch ein bisschen selber. Evtl. kommt ja noch der ein oder andere mit ner tollen Idee um die Ecke.
    Danke jedenfalls lächeln
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten