Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
| [ Anmelden zum schreiben ] |
| Suche auf Kalender erweitern | |||
|---|---|---|---|
| hans Mitglied
Posts: 17 |
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)."&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
Posts: 17 |
na, niemand ne idee?
![]() |
||
| Mairu Coder
Posts: 12770 |
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
Posts: 17 |
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 ![]() |
||
| hans Mitglied
Posts: 17 |
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
Posts: 12770 |
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
Posts: 17 |
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
Posts: 12770 |
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
Posts: 17 |
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 ![]() |
||
| [ Anmelden zum schreiben ] |