» Forum » Clanscript » Module und Modifikationen » Suche auf Kalender erweitern
  Mitglieder   |   Gallery   |   FAQ's   |   Regeln

[ Anmelden zum schreiben ]

Suche auf Kalender erweitern
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

1 Mitglieder finden den Beitrag gut.

Merkliste 09.03.2007 - 16:48:52     Zitieren
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
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 11.03.2007 - 13:49:45     Zitieren
na, niemand ne idee? Smilie
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 16.03.2007 - 12:52:20     Zitieren
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
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

1 Mitglieder finden den Beitrag gut.

Merkliste 22.03.2007 - 00:30:04     Zitieren
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 jep
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 24.03.2007 - 11:25:09     Zitieren
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.
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 24.03.2007 - 14:02:39     Zitieren
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
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 24.03.2007 - 15:54:12     Zitieren
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
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 24.03.2007 - 16:35:27     Zitieren
Tut mir leid, mehr kann ich dir dazu auch nicht sagen.


Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
hans
Mitglied
2 Beitragspunkte
Posts: 17

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 24.03.2007 - 18:11:53     Zitieren
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 Smilie

[ Anmelden zum schreiben ]