Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Простой поиск с постраничным выводом

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

 
 автор: akmal   (17.10.2010 в 17:12)   письмо автору
 
   для: gghh   (17.10.2010 в 17:07)
 

Моё мыло linux_09@mail.ru

  Ответить  
 
 автор: gghh   (17.10.2010 в 17:07)   письмо автору
 
   для: akmal   (17.10.2010 в 16:56)
 

Не вопрос соки "Садочок" или "Одеського заводу" то что надо. Да если не трудно киньте мне на gg_hh@inbox.ru свою аську или мыло. Нужно с Вами переговорить с глазу на глаз об одном проекте, если Вы конечно заинтересованы и владеете свободным временем. Деньги там небольшие.

  Ответить  
 
 автор: akmal   (17.10.2010 в 16:56)   письмо автору
 
   для: gghh   (17.10.2010 в 16:47)
 

Незачто....)))))
ЗЫ: Спасибо, но мне пива-то есче нельзя мне ток 14 стукнуло...

  Ответить  
 
 автор: gghh   (17.10.2010 в 16:47)   письмо автору
 
   для: akmal   (17.10.2010 в 15:50)
 

Спасибо уважаемый akmal. Вы меня очень выручили. Будете проездом в г. Львове (Украина) с меня большая пицца и много львовского пива, оно у нас вкусное.

Еще раз спасибо

  Ответить  
 
 автор: akmal   (17.10.2010 в 15:50)   письмо автору
 
   для: gghh   (17.10.2010 в 15:14)
 

Поменяйте все на следующее
<?php
// Проверяем нужны ли стрелки назад   
if ($page != 1$pervpage 
<a class="paginator" href= ./s.php?page='
.($pages).'&search1='.$search1.'&search2='.$search2.'> << </a>&nbsp;  
<a class="paginator" href= ./s.php?page='
.($page 1).'&search1='.$search1.'&search2='.$search2.'> < </a>&nbsp;';   
// Проверяем нужны ли стрелки вперед   
if ($page != $total$nextpage =  
'<a class="paginator" href= ./s.php?page='.($page 1).'&search1='.$search1.'&search2='.$search2.'> ></a>&nbsp;   
<a class="paginator" href= ./s.php?page=' 
.$total'&search1='.$search1.'&search2='.$search2.'> >></a>&nbsp;';   

// Находим две ближайшие станицы с обоих краев, если они есть   
if($page 0$page2left 
<a class="paginators" href= ./s.php?page='
. ($page 2) .'&search1='.$search1.'&search2='.$search2.'>'. ($page 2) .'</a>&nbsp;';   
if(
$page 0$page1left 
<a class="paginators" href= ./s.php?page='
. ($page 1) .'&search1='.$search1.'&search2='.$search2.'>'. ($page 1) .'</a>&nbsp;';   
if(
$page <= $total$page2right '&nbsp;  
<a class="paginators" href= ./s.php?page='
. ($page 2) .'&search1='.$search1.'&search2='.$search2.'>'. ($page 2) .'</a>&nbsp;';   
if(
$page <= $total$page1right '&nbsp;  
<a class="paginators" href= ./s.php?page='
. ($page 1) .'&search1='.$search1.'&search2='.$search2.'>'. ($page 1) .'</a>&nbsp;';  
?>

  Ответить  
 
 автор: gghh   (17.10.2010 в 15:14)   письмо автору
 
   для: gghh   (13.10.2010 в 20:24)
 

Извиняюсь я зря похвалился. Скрипт не работает. Так как я его переделал, он при нажатие на следующую страницу выводит все записи с базы, вместо того что б выводить только те, что отвечают параметрам. Народ помогите доделать скрипт, в этой части где-то ошибка, помогите найти


<?php
// Проверяем нужны ли стрелки назад  
if ($page != 1$pervpage '<a href= ./page?page=1&search1=$search1&search2=$search2><<</a>  
                               <a href= ./page?page='
. ($page 1) .'&search1=$search1&search2=$search2><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total$nextpage ' <a href= ./page?page='. ($page 1) .'&search1=$search1&search2=$search2>></a>  
                                   <a href= ./page?page=' 
.$total'&search1=$search1&search2=$search2>>></a>';  

// Находим две ближайшие станицы с обоих краев, если они есть  
if($page 0$page2left ' <a href= ./page?page='. ($page 2) .'&search1=$search1&search2=$search2>'. ($page 2) .'</a> | ';  
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'&search1=$search1&search2=$search2>'. ($page 1) .'</a> | ';  
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'&search1=$search1&search2=$search2>'. ($page 2) .'</a>';  
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'&search1=$search1&search2=$search2>'. ($page 1) .'</a>';  
?>

  Ответить  
 
 автор: gghh   (13.10.2010 в 20:24)   письмо автору
 
   для: Николай2357   (13.10.2010 в 19:36)
 

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

  Ответить  
 
 автор: Николай2357   (13.10.2010 в 19:36)   письмо автору
 
   для: gghh   (13.10.2010 в 19:27)
 

Вот о чем и говорила Лена в (04.10.2010 в 17:24)
Скрипт как был дырявым, так и остался...

  Ответить  
 
 автор: gghh   (13.10.2010 в 19:27)   письмо автору
 
   для: gghh   (08.10.2010 в 20:48)
 

Всем привет
Еще раз хочу поблагодарить всех кто мне помог с решением задачи. Особення благодарность akmalu за подсказку в каком направлении двигаться. После некоторых доработок вот что получилось:

здесь форма для поиска:

<form action="s.php" method=POST target="_blank">
Pole1
<input type="text" name="search1" />
Pole2
<input type="text" name="search2" />
<input type="submit" value="search">
</form>


здесь дапм базы:

use image;
CREATE TABLE `tables` (
  `id` tinyint(4) NOT NULL auto_increment,
  `pole1` char(60) collate cp1251_bin NOT NULL default '',
  `pole2` char(60) collate cp1251_bin NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;

INSERT INTO `tables` (`id`, `pole1`, `pole2`) VALUES
(7,    'pole',    'pole3'),
(6,    'pole',    'pole2'),
(3,    'pole',    'pole'),
(4,    'pole',    'pole'),
(5,    'pole1',    'pole'),
(8,    'pole',    'pole'),
(9,    'pole1',    'pole2'),
(10,    'pole1',    'pole1'),
(11,    'pole',    'pole'),
(12,    'pole',    'pole'),
(13,    'pole',    'pole'),
(14,    'pole',    'pole'),
(15,    'pole',    'pole'),
(16,    'pole',    'pole'),
(17,    'pole',    'pole'),
(18,    'pole',    'pole'),
(19,    'pole',    'pole'),
(20,    'pole',    'pole');




и сам скрипт, немного переработаный, возможно кому-то пригодится. Конечно его нужно доработать, добавить фильтрацию
полей и защиту от иньекций и фильтрацию. Но это не трудно реализировать. Вот сам переработанный скрипт


html><head><style>
a.paginator {text-decoration:none;font-size:12pt;color:blue;border:solid 1px lightgray;padding:3px;}
a.paginators {text-decoration:none;font-size:13pt;color:blue;border:solid 1px lightgray;padding:3px;}
</style></head>
<?php
$host
="localhost";
$user="root";
$passw="";
$dbase="image";
$table="tables";
/*зєднання з БД*/
$db=mysql_connect($host,$user,$passw) or die ("<font color='red'>Error.</font>");
/*вибір БД*/
mysql_select_db($dbase) or die ("<font color='red'>Error.</font>");
$pages=1;
$search1=$_REQUEST['search1'];
$search2=$_REQUEST['search2'];
//Число строк которые отвечают параметрам
$str=mysql_query("SELECT * FROM $table WHERE pole1 LIKE '%".$search1."%' AND pole2 LIKE '%".$search2."%'");
$num_p=mysql_num_rows($str);
echo 
"<p style='font-size:14pt;'>Всього знайдено&nbsp;&nbsp;".$num_p."&nbsp;&nbsp;запис(ів), що відповідають даному критерію.</p>";
echo 
"<br />";
// Переменная хранит число сообщений выводимых на станице  
$num 2;  
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM tables WHERE pole1 LIKE '%".$search1."%' AND pole2 LIKE '%".$search2."%'");  
$posts mysql_result($result0);  
// Находим общее число страниц  
$total intval(($posts 1) / $num) + 1;  
// Определяем начало сообщений для текущей страницы  
$page intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page 0$page 1;  
  if(
$page $total$page $total;  
// Вычисляем начиная к какого номера  
// следует выводить сообщения  
$start $page $num $num;  
// Выбираем $num сообщений начиная с номера $start 

$query=mysql_query("SELECT * FROM tables WHERE pole1 LIKE '%".$search1."%' AND pole2 LIKE '%".$search2."%' LIMIT $start$num);
$num=mysql_num_rows($query);

echo 
"<table border=1><tr>";
echo 
"<td>ID</td>";
echo 
"<td>POLE 1</td>";
echo 
"<td>POLE 2</td>";
echo 
"</tr>";
while (list (
$id,$pole1,$pole2) = mysql_fetch_row($query))

echo 
"<tr>";
echo 
"<td>".$id."</td>";
echo 
"<td>".$pole1."</td>";
echo 
"<td>".$pole2."</td></tr>";
}
echo 
"</table><br /><br />";

// Проверяем нужны ли стрелки назад  
if ($page != 1$pervpage '
<a class="paginator" href= ./s.php?page='
.($pages).'search1=$search1||search2=$search2> << </a>&nbsp; 
<a class="paginator" href= ./s.php?page='
.($page 1).'search1=$search1||search2=$search2> < </a>&nbsp;';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total$nextpage 
'<a class="paginator" href= ./s.php?page='.($page 1).'search1=$search1||search2=$search2> ></a>&nbsp;  
<a class="paginator" href= ./s.php?page=' 
.$total'search1=$search1||search2=$search2> >></a>&nbsp;';  

// Находим две ближайшие станицы с обоих краев, если они есть  
if($page 0$page2left '
<a class="paginators" href= ./s.php?page='
. ($page 2) .'search1=$search1||search2=$search2>'. ($page 2) .'</a>&nbsp;';  
if(
$page 0$page1left '
<a class="paginators" href= ./s.php?page='
. ($page 1) .'search1=$search1||search2=$search2>'. ($page 1) .'</a>&nbsp;';  
if(
$page <= $total$page2right '&nbsp; 
<a class="paginators" href= ./s.php?page='
. ($page 2) .'search1=$search1||search2=$search2>'. ($page 2) .'</a>&nbsp;';  
if(
$page <= $total$page1right '&nbsp; 
<a class="paginators" href= ./s.php?page='
. ($page 1) .'search1=$search1||search2=$search2>'. ($page 1) .'</a>&nbsp;'

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<span style="font-size:16pt;color:blue;border:solid 1px lightgray;padding:3px;font-weight:bold;">'.$page.'</span>'.$page1right.$page2right.$nextpage
?> 


Еще раз всем спасибо за помощь

  Ответить  
 
 автор: gghh   (08.10.2010 в 20:48)   письмо автору
 
   для: akmal   (08.10.2010 в 17:00)
 

Уважаемый akmal
просто доработать скрипт который я привел в первом сообщение. Сделать его максимально защищенным от иньекций. А навороты и красивости мне не нужны, главное чтоб искал и выводил результаты с постраничной навигацией.

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования