Перейти к содержимому



Помогите исправить код

#1 oduvan4ik

oduvan4ik
  • Пользователь
  • 45 сообщений
  • Репутация: 0
0

Отправлено 20 Июль 2008 - 19:57

помогите исправить код, чтобы результат поиска отображался на нескольких страницах ... например на одной странице 10 шт потом на второй 10 шт и так далее ... вот код

<html>
<head>
<title>WOweb.ru - Scripts - JavaScript - Site Search</title>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<META NAME="description" CONTENT="Коллекции CGI, PHP, JavaScript скриптов, Java апплеты, огромное количество документации по разным языкам программирования, анимированные гифы, фоны, полезные программы, форум, ссылки по теме.">
<META NAME="keywords" CONTENT="perl scripts, perl, cgi scripts, cgi, перл, java, java scripts, веб-программирование, web-programming,  html,  каталог ссылок, документация по веб-программированию, cgi скрипты, java скрипты, игры, java апплеты,  апплеты, гифы, скрипты, скрипт, книги по веб-программированию, форум по perl, CGI, Perl, script, HTML">
 <Style>
   A:Link{ Color: #000000; Text-decoration: underline}
   A:Visited{ Color: #000000; Text-decoration: underline}
   A:Hover{ Color: #000000; Text-decoration: none}
 td, body {font-family: verdana, arial, helvetica; font-size:11px;} 
 </Style>

<!-- HEAD START HERE -->

<script LANGUAGE="JavaScript">
<!-- Original:  Dion (biab@iinet.net.au) -->
<!-- Web Site:  http://www.iinet.net.au/~biab -->


<!-- Begin
var item = new Array();

/* Here is where all the magic happens. 
	Just enter as many additional pages that
	that you want to search, then fill in the
	additional listings for each page.
*/

// "Page Name","path","Page Title","Many,Key,Words","Descriptive Comments"

c=0; item[c]=new Array("index.html","","DemoSite","index,main,start,home,front","Demonstration search engine data about an imagined but probable internet site.");
c++; item[c]=new Array("about.htm","","About Me","about,author,contact,email,who","Contact details and general information about the creator of the site and what the site is about.");
c++; item[c]=new Array("links.htm","","Links page","links,more,where,similar,friends","Links to my favourite sites which I find interesting. Other friends sites which have similar interests to my own.");
c++; item[c]=new Array("main.htm","main/","Main Page","content,main,focus","The main part of my site which contains what you have come to see. Lots of stuff like that and more great things. All in a sub directory.");
c++; item[c]=new Array("logo.jpg","main/images/","Link Logo","link,image,logo,graphic","The logo.jpg is just a small image which you can place on your site as a link to me. It's in a second level subdirectory.");
c++; item[c]=new Array("","http://www.boom.cwx.ru","boom 2.0","каталог сайтов,link,image,logo,graphic","Новый каталог сайтов");
c++; item[c]=new Array("","http://www.boom.cwx.ru","boom 2.0","каталог сайтов,link,image,logo,graphic","Новый каталог сайтов");
c++; item[c]=new Array("","http://www.boom.cwx.ru","boom 3.0","каталог","Новый каталог сайтов");
c++; item[c]=new Array("","http://www.boom.cwx.ru","boom 4.0","кат","Новый каталог сайтов");
page="<html><head><title>Search Results</title></head><body bgcolor='white'><left><table border=0 cellspacing=10 width=100%>";


function search(frm) {
win = window.self;
win.document.write(page);

txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 4, 2, 3);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
n = 0; w = -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, win, n);
fnd[w] = 0;
}

win.document.write("</table>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Total found: "+total+"<br></body></html>");
win.document.close();
}
function show(which,wind,num,nom,n) {
n=1;
nom=which-4;
link = item[which][1] + item[which][0];
line = "<tr><td width=10 valign=top>"+nom+"</td><td><a href='"+link+"'>"+item[which][2]+"</a> Score: "+num+"<br>";
line += item[which][4] + "<br>"+link+"</td></tr>";
wind.document.write(line);
return n;
}
//  End -->
</script>


<!-- HEAD END HERE -->




</head>
<body bgcolor="#EDEDED" text="#000000" link="#000000" topmargin="0" leftmargin="0">
<center>

<!-- BODY START HERE -->

<form method=get action="java script:void(0)" onsubmit="search(this); return false;">
<tr><td><input type=text name=srchval value=""><input type=submit value="Search"></td></tr>
</form>

<!-- BODY END HERE -->






</body>
</html>

 

 

  • 0

#2 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 20 Июль 2008 - 21:15

а еще чтобы в верху отображалось количество ссылок на странице например 1-10 10-20 и запрос ( результаты 1-10 по запросу google ) - что то подобное

и неплохо если конечно можно сделать отобразить время запроса
  • 0

#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 20 Июль 2008 - 22:56

Вам легче использовать SOAP-клиент, для обращаения к Google серверу поиска, у них есть для этого своя API
Вот посмотрите тут http://code.google.c...eatured-android
  • 0

#4 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 20 Июль 2008 - 22:57

просто я хочу изменить код под их дизайн
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 20 Июль 2008 - 23:10

Это вам не только дизайн придётся править... Тут придётся проделать очень много работы с кодом! Я вам уже предложил вариант... Тока нужна поддержка php_soap.dll у сервера
  • 0

#6 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 21 Июль 2008 - 09:34

ну ладно а можно хотя бы страницы сделать ???
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Июль 2008 - 11:21

Вот вам PHP класс постраничного навигатора... Посмотрите как он сложен. И вы думаете что здесь надо вставить 2-3 строчки?
<?php
////////////////////////////////////////////////////////////////////
class pages{
	//data members
	var $pagename;
	var $totalpages;
	var $recordsperpage;
	var $maxpagesshown;
	var $currentstartpage;
	var $currentendpage;
	var $currentpage;
	//first and last inactive
	var $firstinactivespan;
	var $lastinactivespan;	
	//must match $_GET['offset'] in calling page
	var $firstparamname="p";
	//use as "&name=value" pair for getting
	var $params;
	//text for navigation
	var $strfirst = "[В начало]";
	var $strlast = "[В конец]";
  //for error reporting
	var $errorstring;	

   function pages($pagename, $totalrecords, $recordsperpage, $recordoffset, $maxpagesshown=4){
	$this->pagename=$pagename;
	  $this->recordsperpage=$recordsperpage;	
		$this->maxpagesshown=$maxpagesshown;
		//already urlencoded
	if(!$this->checkRecordoffset($recordoffset, $recordsperpage)){
	   echo $this->errorstring;
	   exit;
	}
	  $this->setTotalPages($totalrecords, $recordsperpage);
		$this->calculateCurrentPage($recordoffset, $recordsperpage);
		$this->createInactiveSpans();	
		$this->calculateCurrentStartPage();
		$this->calculateCurrentEndPage();
  }

   function setInactiveSpanName($name){
	  $this->inactivespanname=$name;
		//call function to rename span
		$this->createInactiveSpans();	
  }

   function getInactiveSpanName(){
	  return $this->inactivespanname;
  }

   function setPageDisplayDivName($name){
	  $this->pagedisplaydivname=$name;		
  }

   function getPageDisplayDivName(){
	  return $this->pagedisplaydivname;
  }

   function setDivWrapperName($name){
	  $this->divwrappername=$name;		
  }

   function getDivWrapperName(){
	  return $this->divwrappername;
  }

   function setFirstParamName($name){
	  $this->firstparamname=$name;		
  }

   function getFirstParamName(){
	  return $this->firstparamname;
  }

	 function getNavigator(){
		//wrap in div tag
		$strnavigator= "<div>";
		//loop through displayed pages from $currentstart
		$strnavigator.=$this->getPageNumberDisplay();
		for($x=$this->currentstartpage;$x<$this->currentendpage;$x++){
			//make current page inactive
			if($x==$this->currentpage){
				$strnavigator.= " <span><b>";
				$strnavigator.= $x+1;
				$strnavigator.= "</b></span> ";
			}else{
				$strnavigator.= $this->createLink($x, $x+1);
			}
		}
		$strnavigator.="<br>";
		//output movefirst button		
		if($this->currentpage == 0){
			$strnavigator.=$this->firstinactivespan;			
		}else{
			$strnavigator.= $this->createLink(0, $this->strfirst);
		}
		$strnavigator.=" <b>: :</b> ";
		//move last button
		if($this->currentpage==$this->totalpages-1){
			$strnavigator.= $this->lastinactivespan;			
		}else{
			$strnavigator.=$this->createLink($this->totalpages -1, $this->strlast);
		}
		$strnavigator.= "</div>";		
		return $strnavigator;
	}

	 function createLink($offset, $strdisplay ){
		$strtemp= "<a href=\"?$this->pagename&$this->firstparamname=";
		$strtemp.= $offset;
		$strtemp.= "$this->params\">$strdisplay</a>\n";
		return $strtemp;
	}

	 function getPageNumberDisplay(){
		$str= "<span>Страницы ($this->totalpages) &rarr; </span>";
		return $str;
	}

   function setTotalPages($totalrecords, $recordsperpage){
	  $this->totalpages=ceil($totalrecords/$recordsperpage);
  }

	 function checkRecordoffset($recordoffset, $recordsperpage){
		$bln=true;
		//if recordoffset=0 won't show error
		if($recordoffset%$recordsperpage!=0){
			$this->errorstring="Error - Offset not a multiple of records per page.";
			$bln=false;	
		}
		return $bln;
	}
	
	 function calculateCurrentPage($recordoffset, $recordsperpage){
		$this->currentpage=$recordoffset/$recordsperpage;
	}

	 function createInactiveSpans(){
		$this->lastinactivespan="<span>$this->strlast</span>\n";
		$this->firstinactivespan="<span>$this->strfirst</span>\n";
	}

	 function calculateCurrentStartPage(){
		$this->currentstartpage = $this->currentpage - $this->maxpagesshown;
		if($this->currentstartpage < 0)
			$this->currentstartpage = 0;	
	}

	 function calculateCurrentEndPage(){
		$this->currentendpage = $this->currentpage + $this->maxpagesshown;
		if($this->currentendpage > $this->totalpages)
			$this->currentendpage = $this->totalpages;	
	}
}
?>
А вот я его использую
$perpages = 10; //Количество элементов в постраничном выводе
$page = @intval($_GET['p']);
  if (empty($page)){ // Если отсутствует номер страницы в GET
	$page = 1;
	$record = 0;
  } else {
	$record = $page * $perpages; // Номер записи, с которой начинаем выводить
  }
Вот SQL запрос для вывода из БД с LIMIT
SELECT * FROM articles WHERE id_cat=".intval($_GET['id_cat'])." AND is_take=1 ORDER BY date DESC LIMIT $record, $perpages

А вот оснавная часть...
$totalrecords = $rs->getUnlimitedNumberRows(); // общее количество записей
  $numpages = ceil($totalrecords/$perpages); // Общее количество страниц
  if($numpages > 1){ // Если кол-во страниц > 1
  
  /*Постраничный навигатор*/

	$nav = new pages("act=article&id_cat=".intval($_GET['id_cat']),$totalrecords, $perpages, $record, 3); // создаём объект-навигатор и передаём ему первоначальные параметры
	echo $nav->getNavigator(); // Выводим навигатор на печать
  }


Поэтому я вам и советую воспользоваться SOAP системой, там всё очень просто настраивается.
И ещё вопрос тогда... Если вы хотите выодить постранично... Скажите мне пожайлуста, откуда вы берёте информацию, которую хотите выводить постранично?
Просто на JS подобных вещей не делают, если только с использованием AJAX-технологий.
  • 0

#8 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 22 Июль 2008 - 09:30

из текстового файла
  • 0

#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Июль 2008 - 10:00

Код конечно просто ужасный... Я понял его технологию... Но чтобы разделить найденное на страницы, здесь нужно будет переписать всё 100 раз...
Я так понял, данные вы биоётне не из текстового файла... А прямо из массива item, и делаете по нему поиск.
Это же не вы писали?! Просто код ну времён так этак 90-х годов, когда ещё не знали поиска по шаблону, по вхождению... А так же не знали что такое узел(node), как добавить найденное в div... Я просто охренел от такого тупого кода ;)
  • 0

#10 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 23 Июль 2008 - 20:58

да из массива ... я перепутал просто ... хм какой скрипт был такой и скачал ))) а есть ссылка на похожий скрипт ???
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru