[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает поиск по сайту
babamarta
Здравствуйте. Я совершенно начинающий php-пользователь, и ни капли не программист. В мои руки попал сайт, который вполне нормально работает, немного править его получается, даже в БД смогла внести изменения.
Но вот поиск работать отказывается, и мой мозг тоже - мне не удалось его исправить. Может гуру помогут разобраться с проблемой???
http://cop.health-rights.org/search/ - что может быть не так?



Спустя 1 час, 30 минут, 11 секунд (5.12.2010 - 01:43) ИНСИ написал(а):
babamarta ты выложи файл, который отвечает за поиск по БД. И страницу, которая выводит информацию. По другому, тебе никак не смогут ответить.

Спустя 4 минуты, 27 секунд (5.12.2010 - 01:48) babamarta написал(а):
Похоже, у меня упал хостер - не могу зайти ни по фтп ни вообще на сайт.
Поэтому пока спрошу так - ФАЙЛ выложить? Или просто то, что в нем написано?

Спустя 5 минут, 19 секунд (5.12.2010 - 01:53) ИНСИ написал(а):
babamarta то, что в нем написано. И желательно не всю страницу, а именно те участки, которые отвечают за поиск.

P.S Начнем хотя бы с этого smile.gif И кстати, я тоже никак не мог открыть ваш сайт.

Спустя 1 день, 10 часов, 46 минут, 44 секунды (6.12.2010 - 12:40) babamarta написал(а):
Вот, весь документ search.php, так как я не знаю, что в нем главное:

<?php
class Action_Search extends Action {

function _common(){
Template::$TPL->CSS[] = 'main.css';
Template::$TPL->JS[] = 'main.js';

// datepick - displays Calendar
Template::$TPL->CSS[] = 'redmond.datepick.css';
Template::$TPL->JS[] = 'jquery.datepick.pack.js';
//Template::$TPL->JS[] = 'jquery.datepick-ru.js';
//--------------------

if( id() ){
Template::$TPL->LAYOUT = 'lc';
}
}


function index(){

$d = $this->_;
$section = Category::get_level(1);
tpl_var('section',$section);
$cat_id =0;
$flag_and =false;
$flag_or = false;
$lang = Language::get_current();
$docs= array();
if(isset($d['act']) && $d['act']== 'search'){

if(!empty($d['section'])){
$cat_id = (int) $d['section'];
tpl_var('subsection',Category::get_level(2,(int)$d['section']));
}
if(!empty($d['subsection'])){
$cat_id = (int) $d['subsection'];
tpl_var('category',Category::get_level(3,(int)$d['subsection']));
}

if(!empty($d['category']))
$cat_id = (int) $d['category'];

$pager = new Pager(10);



$srch =array();
if(!empty( $d['keywords'])){
$wordsArr = Search::get_words($d['keywords']);
$srch['text']['wids'] = Search::get_words_ids($wordsArr,true);

if(!empty($d['klog']) && $d['klog']== 'and'){
$srch['text']['logic'] = true;
}else
$srch['text']['logic'] = false;
}

if(!empty( $d['title'])){
$wordsArr = Search::get_words($d['title']);
$srch['title']['wids'] = Search::get_words_ids($wordsArr,true);
if(!empty($d['tlog']) && $d['tlog']== 'and'){
$srch['title']['logic'] = true;
}else
$srch['title']['logic'] = false;
}

if(!empty( $d['author'])){
$wordsArr = Search::get_words($d['author']);
$srch['author']['wids'] = Search::get_words_ids($wordsArr,true);
if(!empty($d['alog']) && $d['alog']== 'and'){
$srch['author']['logic'] = true;
}else
$srch['author']['logic'] = false;
}

foreach($srch as $k=>$v){
if(empty($v['wids'])){
if(!empty($v['logic']))
$flag_and = true;
unset($srch[$k]);
}else{
if(empty($v['logic']))
$flag_or = true;
}
}

if(!$flag_or && $flag_and){
tpl_var('query',$d);
tpl_var('sresult',array());
return 'search/index';
}
//$wh['_lang'] = $lang;
$wh=array();

if($cat_id){

$bush = Category::get_bush($cat_id,false,true);//$ids = array();

$ids = ids($bush, 'id');
$wh[] = "owner_id in ".array_values_str($ids);

}
if(!empty($d['from'])){
$wh[] = 'modified > "'.$d['from'].'"';
}
if(!empty($d['to'])){
$wh[] = 'modified < "'.$d['to'].'"';
}

if(!empty($srch)){
$wh['_lang'] = $lang;
$docs = Search::search_by_ids($pager,$srch,$wh);
}elseif(!empty($wh)){
$wh['_lang'] = $lang;
$docs = Media_Document::S()->listing($pager,$wh, '*',false,'all_hash');
}
$str='';
foreach($d as $key=>$val)
if(!empty($val))
$str .='&'.$key.'='.$val;
tpl_var('page_links', $pager->page_links('/search/?'.$str));
}

tpl_var('bush_teaching',Category::get_bush(Media_Document::$category['teaching'],$lang,true));
tpl_var('bush_trainings',Category::get_bush(Media_Document::$category['trainings'],$lang,true));
tpl_var('bush_media',Category::get_bush(Media_Document::$category['media'],$lang,true));

tpl_var('sresult',$docs);
tpl_var('query',$d);
return 'search/index';
}

function a_subsection($id=0,$level=1){
if(empty($id))
return '';

$res = Category::get_level($level,$id);
$d= array();
if(!empty($res)){
foreach($res as $v){
$d[$v['id']] = $v['name'];
}
}
echo json_encode($d);
}

}
?>

Спустя 1 минута, 17 секунд (6.12.2010 - 12:41) babamarta написал(а):
И еще я нашла что-то связанное с поиском в другом документе, именуемом dvp.php


function search_index(){
Search::setup_index(C('db.main').'document','text','id','text' ;);
Search::setup_index(C('db.main').'document','title','id','title&# 39;);
Search::setup_index(C('db.main').'document','author','id','author ');


echo 'Done';
return 0;
}

Спустя 3 часа, 15 минут, 40 секунд (6.12.2010 - 15:57) babamarta написал(а):
и вот еще страница поиска - search.phtml

<?php
$q = (!empty($VARS['query']))?$VARS['query']:'';
$lurl= lurl();
?>
<div class="m_b10 bord10 padd10">
<h2><?php echo __('Search'); ?></h2>


<form method="get" action="">
<input type="hidden" name="act" value="search">

<table cellspacing="5" border="0">
<tr>
<td colspan="2">

<table width="330" border="0" cellspacing="5" cellpadding="0">
<tr>
<td class="txtright bold w75"><?php echo __('Keywords'); ?></td>
<td><input class="orangeinput bord_blue silver w180" type="text" name="keywords" value="<?php echo (!empty($q['keywords']))?$q['keywords']:''?>" /></td>
<td>
<select name="klog" class="bord_blue silver">
<option value="and" <?php echo (!empty($q['klog']) && $q['klog']=='and')?'selected':''?>><?php echo __('and'); ?></option>
<option value="or" <?php echo (!empty($q['klog']) && $q['klog']=='or')?'selected':''?>><?php echo __('or'); ?></option>
</select>
</td>
</tr>
<tr>
<td class="txtright bold"><?php echo __('Title'); ?></td>
<td><input class="orangeinput bord_blue silver w180" type="text" name="title" value="<?php echo (!empty($q['title']))?$q['title']:''?>" /></td>
<td>
<select name="tlog" class="bord_blue silver">
<option value="and" <?php echo (!empty($q['tlog']) && $q['tlog']=='and')?'selected':''?>><?php echo __('and'); ?></option>
<option value="or" <?php echo (!empty($q['tlog']) && $q['tlog']=='or')?'selected':''?>><?php echo __('or'); ?></option>
</select>
</td>
</tr>
<tr>
<td class="txtright bold"><?php echo __('Author'); ?></td>
<td><input class="orangeinput bord_blue silver w180" type="text" name="author" value="<?php echo (!empty($q['author']))?$q['author']:''?>" /></td>
<td>
<select name="alog" class="bord_blue silver">
<option value="and" <?php echo (!empty($q['alog']) && $q['alog']=='and')?'selected':''?>><?php echo __('and'); ?></option>
<option value="or" <?php echo (!empty($q['alog']) && $q['alog']=='or')?'selected':''?>><?php echo __('or'); ?></option>
</select>
</td>
</tr>
</table>

</td>
</tr>
<tr>
<td class="w75">&nbsp;</td>
<td class="padd5"><?php echo __('and/or specify which part of the site you would like to search'); ?>:</td>
</tr>
<tr>
<td class="txtright w80 bold"><?php echo __('Section'); ?>:</td>
<td>
<select name="section" id='section_id' class="bord_blue silver w_100">
<option value="0">&nbsp;</option>
<?php
foreach($VARS['section'] as $val){
echo '<option value="'.$val['id'].'" '.((!empty($q['section']) && $q['section'] == $val['id'])?'selected':'').'>'.$val['name'].'</option>';
}
?>
</select>

</td>
</tr>
<tr id="subsection_tr" style="display:<?php echo (empty($q['section']) || empty($VARS['subsection']) )?'none':'';?>">
<td class="txtright bold"><?php echo __('Sub-Section'); ?>:</td>
<td>
<select name="subsection" id='subsection_id' class="bord_blue silver w_100">
<option value="0">&nbsp;</option>
<?php
if( !empty($VARS['subsection']) ){
foreach($VARS['subsection'] as $val){
echo '<option value="'.$val['id'].'" '.((!empty($q['subsection']) && $q['subsection'] == $val['id'])?'selected':'').'>'.$val['name'].'</option>';
}
}
?>
</select>
</td>
</tr>
<tr id="category_tr" style="display:<?php echo (empty($q['subsection']) || empty($VARS['category']))?'none':'';?>">
<td class="txtright bold"><?php echo __('Category'); ?>:</td>
<td>
<select name="category" id='category_id' class="bord_blue silver w_100">
<option value="0">&nbsp;</option>
<?php
if( !empty($VARS['category']) ){
foreach($VARS['category'] as $val){
echo '<option value="'.$val['id'].'" '.((!empty($q['category']) && $q['category'] == $val['id'])?'selected':'').'>'.$val['name'].'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td class="w75">&nbsp;</td>
<td class="padd5"><?php echo __('and/or specify upload date of you document'); ?>:</td>
</tr>
<tr>
<td colspan="2">

<table width="330" border="0" cellspacing="5" cellpadding="0">
<tr>
<td class="txtright bold w75"><?php echo __('Date Range'); ?></td>
<td>
<input id="date0" class="orangeinput bord_blue silver w80" type="text" name="from" value="<?php echo (!empty($q['from']))?$q['from']:'';?>" />
<?php echo __('to'); ?>
<input id="date1" class="orangeinput bord_blue silver w80" type="text" name="to" value="<?php echo (!empty($q['to']))?$q['to']:'';?>" />
</td>
</tr>
<tr>
<td class="w75">&nbsp;</td>
<td style="padding: 10px 0 0 0;">
<input class="sumitbtn_blue w180" type="submit" value="<?php echo __('Search'); ?>"/>
</td>
</tr>
</table>

</td>
</tr>

</table>
</form>
<br/>


<?php
if(!empty($VARS['sresult'])){

foreach($VARS['sresult'] as $item){
$url ='#';
if(!empty($VARS['bush_teaching'][$item['owner_id']]))
$url = $lurl.'/teaching/'.$item['owner_id'].'/'.$item['url'];
elseif(!empty($VARS['bush_trainings'][$item['owner_id']]))
$url = $lurl.'/trainings/'.$item['owner_id'].'/'.$item['url'];
elseif(!empty($VARS['bush_media'][$item['owner_id']]))
$url = $lurl.'/media/'.$item['owner_id'].'/'.$item['url'];

?>
<div>
<div class="bold size13 bgarrow paddlr10"><a href="<?php echo $url;?>"><?php echo qh($item['title'])?></a></div>
<div class="bold"><?php echo substr($item['modified'],0,10)?>&nbsp;&nbsp;&nbsp;<?php echo qh($item['author'])?></div><br/>
<div><?php echo qh(cut(strip_tags($item['summary']),200));?></div>
</div>
<div>&nbsp;</div>
<?php
}
}else{
if( !empty($VARS['query']) ){
echo '<div style="text-align:center; font-weight:bold;">',__('Result not found'),'</div>';
}
}
?>

<?php
include T('inc/pager');
?>

<script type="text/javascript">
$(document).ready(function() {
$("#date0").datepick({dateFormat: 'yy-mm-dd'});
$("#date1").datepick({dateFormat: 'yy-mm-dd'});

$('#section_id').change(function(){
id = $('#section_id').val()
$('#subsection_id').val(0);
$('#category_id').val(0);
if(id != 0){
$.get("<?php echo $lurl; ?>/search/a.subsection",{id:id,level:2},
function(d){

if (d == 0) {
$('#category_tr').css("display",'none');
$('#subsection_tr').css("display",'none');
return;
} else {

output ='<option value="0">&nbsp;</option>';
for(el in d){
output +='<option value="'+el+'">'+d[el]+'</option>';
}
$('#subsection_id').html(output);
}
},'json');
$('#subsection_tr').css("display",'')
}else{
$('#category_tr').css("display",'none');
$('#subsection_tr').css("display",'none');
}
})

$('#subsection_id').change(function(){
id = $('#subsection_id').val()
if(id != 0){
$.get("<?php echo $lurl; ?>/search/a.subsection",{id:id,level:3},
function(d){
$('#category_id').val(0);
if (d == 0) {
$('#category_tr').css("display",'none');
return;
} else {
output ='<option value="0">&nbsp;</option>';;
for(el in d){
output +='<option value="'+el+'">'+d[el]+'</option>';
}
$('#category_id').html(output);
}
},'json');
$('#category_tr').css("display",'')
}else{
$('#category_tr').css("display",'none');
}
})

});
</script>

Спустя 6 минут, 26 секунд (6.12.2010 - 16:03) ИНСИ написал(а):
babamarta ты какую cms используешь? Просто то, что ты даешь, это лишь функции, которые вызывают определенные скрипты.

Спустя 3 минуты, 14 секунд (6.12.2010 - 16:06) babamarta написал(а):
Это какая-то самописная cms, если я не ошибаюсь. Человек, который ее сделал не хочет принимать участие в исправлении ошибок. В частности с поиском. Поиск собственно работает только если выбирать из выпадающих меню Section:,
Sub-Section:, Category. По словам он не работает. И где и что исправить, чтоб он показывал все документы по заданным словам (имени автора) я не могу понять.

Спустя 2 минуты, 51 секунда (6.12.2010 - 16:09) ИНСИ написал(а):
babamarta прости, но я пас, потому что не знаю даже как помочь. Просто когда это самописная cms, может быть всякое. Подожди ответ от других.

Спустя 15 секунд (6.12.2010 - 16:09) inpost написал(а):
babamarta
А не легче либо самому написать, либо заказать рабочий, либо найти более рабочий?

Спустя 4 минуты, 19 секунд (6.12.2010 - 16:14) babamarta написал(а):
Это международная организация, руководителям которой трудно объяснить что проще было воспользоваться чем-то готовым, чем заказывать разработку новой cms. И еще труднее уговорить переделать все заново. Месяц переговоров привел только к одному результату: надо править ошибки, мы, мол, на ветер что ли деньги выкинули?

Спустя 10 минут, 4 секунды (6.12.2010 - 16:24) inpost написал(а):
Ничего не понятно. ТЗ, если что-то не так сделали, то требуете вернуть назад деньги или переделать. Утверждать стоит то, что сделали нерабочий скрипт, ещё можно судом припугнуть, если международная, то деньги должны быть не маленькие. И, вообще, надо уметь сформулировать требования. Когда заказываете пиццу, вы же не говорите: "да вкусную хочу", а чётко утверждаете, что должно входить в пиццу! Так и тут: "форма поиска, такие и такие варианты поиска".

А проще сделать самому, чем править чужой корявый код.

Спустя 23 минуты, 45 секунд (6.12.2010 - 16:48) ИНСИ написал(а):
Цитата
А проще сделать самому, чем править чужой корявый код.

тут согласен smile.gif но если сможешь сам smile.gif

babamarta просто наверное тебе сложно будет помочь, так как мы та не видим все файлы + там разбираться надо, врятли кто-то бесплатно это будет делать.

Цитата
ТЗ, если что-то не так сделали, то требуете вернуть назад деньги или переделать

на 100% согласен. Я делаю заказы, не сдаю проект, пока полностью не будет готов. Если что-то не работает, то это мои проблемы и я должен их решить.

Как сказал inpost лучше запугать судом. Так как вы наверное подписали договор.... Но тут может быть нюанс, если в ТЗ не было этого поиска, то будет сложно доказать что вы правы.

Спустя 8 минут, 10 секунд (6.12.2010 - 16:56) babamarta написал(а):
сложность в том, что заказчики американцы, исполнили украинцы, сайт передан в россию, управлять им будем мы smile.gif

ок, спасибо, наверное я и правда если что, обращусь за платной помощью. А сколько это может стоить, устранение конкретного бага?

Спустя 39 минут, 36 секунд (6.12.2010 - 17:35) ИНСИ написал(а):
babamarta все программисты по разному берут. Есть те, которые возьмут за это 20$, а есть и те, кто 200$. Если решите, просто создайте тему в нужном разделе на этом форуме.... и там отпишется, если кто захочет.

Спустя 3 часа, 33 минуты, 26 секунд (6.12.2010 - 21:09) babamarta написал(а):
Спасибо большое!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.