ivank
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Alexander Ipp В куки? Это идея... Но! А что если кто-то спросил, "что такое MySQL" у меня в форуме, допустим. И теперь я ему хочу сказать, что в инфы о MySQL Полно... И что я делаю? Прально даю урл типа http://forum/forums.cgi?forum=XXX&filterby=title&filterstring=MySQL , а как такое с куками провернуть? А то что через Ж написано это не страшно. Я на перле писать не умею На самом то деле при 250 темах оно фильтрует вполне себе быстро (время выполнения не возрастает даже на сотую). А как это сделать без извратов с временным массивом -- не представляю. MVY По "слову в собщении" -- это уже полноценный поиск... А по описанию легко... Меняй Код: ##### ХАК. Фильтр топиков. by ivank. if( $filterby eq 'title' ) { @filtered_topics = (); $lc_filterstring = $filterstring; $lc_filterstring =~ tr/А-ЯЁЧ/а-яёч/; foreach $topic ( @topics ) { ($topicid, $lc_topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); $lc_topictitle =~ tr/А-ЯЁЧ/а-яёч/; if( $lc_topictitle =~ /$lc_filterstring/i ) { push @filtered_topics, $topic; } } @topics = @filtered_topics; } elsif( $filterby eq 'author' ) { @filtered_topics = (); foreach $topic ( @topics ) { ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); if( $startedby =~ /$filterstring/i ) { push @filtered_topics, $topic; } } @topics = @filtered_topics; } ##### Конец хака. | На: Код: ##### ХАК. Фильтр топиков. by ivank. if( $filterby eq 'title' ) { @filtered_topics = (); $lc_filterstring = $filterstring; $lc_filterstring =~ tr/А-ЯЁЧ/а-яёч/; foreach $topic ( @topics ) { ($topicid, $lc_topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); $lc_topictitle =~ tr/А-ЯЁЧ/а-яёч/; if( $lc_topictitle =~ /$lc_filterstring/i ) { push @filtered_topics, $topic; } } @topics = @filtered_topics; } elsif( $filterby eq 'author' ) { @filtered_topics = (); foreach $topic ( @topics ) { ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); if( $startedby =~ /$filterstring/i ) { push @filtered_topics, $topic; } } @topics = @filtered_topics; } elsif( $filterby eq 'description' ) { @filtered_topics = (); $lc_filterstring = $filterstring; $lc_filterstring =~ tr/А-ЯЁЧ/а-яёч/; foreach $topic ( @topics ) { ($topicid, $topictitle, $lc_topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); $lc_topicdescription =~ tr/А-ЯЁЧ/а-яёч/; if( $lc_topicdescription =~ /$lc_filterstring/i ) { push @filtered_topics, $topic; } } @topics = @filtered_topics; } ##### Конец хака. | И поменяй Код: ##### ХАК. Фильтр топиков. by ivank. if( $filterby eq 'author' ) { $filterbyauthor = 'selected' } if( $filterby eq 'title' ) { $filterbytitle = 'selected' } $output .= qq~ <div align=right><form action="$forumsprog" method=get> <input type=hidden name=forum value="$inforum">Фильтр: <input type=text size=10 name=filterstring value="$filterstring"> по <select name=filterby> <option value=title $filterbytitle>названию темы <option value=author $filterbyauthor>автору</select> <input type=submit value="go"> ~; | На Код: ##### ХАК. Фильтр топиков. by ivank. if( $filterby eq 'author' ) { $filterbyauthor = 'selected' } if( $filterby eq 'title' ) { $filterbytitle = 'selected' } if( $filterby eq 'description' ) { $filterbydescriprion = 'selected' } $output .= qq~ <div align=right><form action="$forumsprog" method=get> <input type=hidden name=forum value="$inforum">Фильтр: <input type=text size=10 name=filterstring value="$filterstring"> по <select name=filterby> <option value=title $filterbytitle>названию темы <option value=author $filterbyauthor>автору <option value=description $filterbydescription>описанию темы</select> <input type=submit value="go"> ~; |
|