Jump to content
  • 0

Вывод постраничной навигации (из б/д)


vitaxastifler
 Share

Question

Парни,кто то может помочь в выводе постраничной навигации

Тоесть из вот этого сделать что бы на стр выводило только по 20 записей,ну и стрелочки например вперёд,назад...!

<?php	foreach ($this->result as $dbname=> $db) {		if($dbname !== 'needle') {			echo "<br><span style='font-size: 18px;background-color:#309603; color: #FFF;'>Знайдено записів: " . count($db) . ' ' . $dbname . " </span>";			foreach ($db as $field => $value) {				echo '<div class="item">';				foreach ($value as $key=> $r) {							$r = str_ireplace($this->result['needle'][0], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][0] . '</span>', $r);					$r = str_ireplace($this->result['needle'][1], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][1] . '</span>', $r);					$r = str_ireplace($this->result['needle'][2], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][2] . '</span>', $r);					$r = str_ireplace($this->result['needle'][3], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][3] . '</span>', $r);					if($key == 'author') {						echo $r . '<br />';					} else {						echo $r;					}				}				echo '</div>';			}			}			}			?>
Edited by vitaxastifler
Link to comment
Share on other sites

Recommended Posts

  • 0

извини что я полностью код пишу,просто я такой ляпа что могу натупить(

 

Давайте ещё раз полность,мб вы что то не допоняли.

Надо сделать вывод стр из б/д по 20 на страницу.

Сайт написан на джумле.

Мне кажется программист писал поиск и подкл через кодигнайтер.

Вот основные файлы:

1-й я так понял выводит результат поиска:

http://hostingkartinok.com/show-image.php?id=469ea06a719903253ef3db1e55c222de

 
<div id="new_search"><span class="open_search">Шукати ще!</span>
<div class="new_search_form">
<form method="post" action="<?php echo JRoute::_('index.php?option=com_katalog&task=search&page=1'); ?>">
<fieldset>
<legend><?php echo JText::_('COM_KATALOG_SEARCH_PARAM'); ?></legend>
<table>
<tr>
<td>
<select name="fields[]">
<option value="author">Автор</option>
<option value="title">Назва</option>
<option value="rubric">Рубрика</option>
<option value="keywords">Ключ. слова</option>
<option value="person">Персоналii</option>
<option value="publisher">Рiк</option>
<option value="geograf">Географ. назва</option>
<option value="sourse">Джерело</option>
</select>
</td>
<td>
<input type="text" name="search_words[]"/><br />
</td>
</tr>
<tr>
<td>
<select name="fields[]">
<option value="author">Автор</option>
<option value="title">Назва</option>
<option value="rubric">Рубрика</option>
<option value="keywords">Ключ. слова</option>
<option value="person">Персоналii</option>
<option value="publisher">Рiк</option>
<option value="geograf">Географ. назва</option>
<option value="sourse">Джерело</option>
</select>
</td>
<td>
<input type="text" name="search_words[]"/><br />
</td>
</tr>
<tr>
<td>
<select name="fields[]">
<option value="author">Автор</option>
<option value="title">Назва</option>
<option value="rubric">Рубрика</option>
<option value="keywords">Ключ. слова</option>
<option value="person">Персоналii</option>
<option value="publisher">Рiк</option>
<option value="geograf">Географ. назва</option>
<option value="sourse">Джерело</option>
</select>
</td>
<td>
<input type="text" name="search_words[]"/><br />
</td>
</tr>
<tr>
<td>
<select name="fields[]">
<option value="author">Автор</option>
<option value="title">Назва</option>
<option value="rubric">Рубрика</option>
<option value="keywords">Ключ. слова</option>
<option value="person">Персоналii</option>
<option value="publisher">Рiк</option>
<option value="geograf">Географ. назва</option>
<option value="sourse">Джерело</option>
</select>
</td>
<td><input type="text" name="search_words[]"/><br /></td>
</tr>
</table>
<input type="radio" name="search_type" checked="checked" value="similar" />Подiбний<br />
<input type="radio" name="search_type" value="exect" />Точний<br />
</fieldset>
<fieldset>
<legend><?php echo JText::_('COM_KATALOG_CHOOSE_DB'); ?></legend>
<table>
<tr>
<td><input type="checkbox" name="dbname[]" value="БД книг" id="book"/><label for="book"><?php echo JText::_('COM_KATALOG_BOOK'); ?></label></td>
<td><input type="checkbox" name="dbname[]" value="БД статей із періодики" id="bibl"/><label for="bibl"><?php echo JText::_('COM_KATALOG_BIBL'); ?></label></td>
<td><!--<input type="checkbox" name="db[]" value="period" id="period"/><label for="period"><?php echo JText::_('COM_KATALOG_PERIOD'); ?></label><br />--></td>
</tr>
<tr>
<td><input type="checkbox" name="dbname[]" value="БД аудіо-відео матеріалів" id="kffd"/><label for="kffd"><?php echo JText::_('COM_KATALOG_KFFD'); ?></label></td>
<td><input type="checkbox" name="dbname[]" value="БД краєзнавчих матеріалів" id="kray"/><label for="kray"><?php echo JText::_('COM_KATALOG_KRAY'); ?></label></td>
<td><input type="checkbox" name="dbname[]" value="БД методичних матеріалів" id="method"/><label for="method"><?php echo JText::_('COM_KATALOG_METHOD'); ?></label></td>
</tr>
</table>
</fieldset>
<input type="submit" value="Пошук" />
</form>
</div>
</div>
<?php
foreach ($this->result as $dbname=> $db) {
if($dbname !== 'needle') {
echo "<br><span style='font-size: 18px;background-color:#309603; color: #FFF;'>Знайдено записів: " . count($db) . ' ' . $dbname . " </span>";
foreach ($db as $field => $value) {
echo '<div class="item">';
foreach ($value as $key=> $r) {
$r = str_ireplace($this->result['needle'][0], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][0] . '</span>', $r);
$r = str_ireplace($this->result['needle'][1], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][1] . '</span>', $r);
$r = str_ireplace($this->result['needle'][2], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][2] . '</span>', $r);
$r = str_ireplace($this->result['needle'][3], '<span style="background-color:#FFFE4E;">' . $this->result['needle'][3] . '</span>', $r);
if($key == 'author') {
echo $r . '<br />';
} else {
echo $r;
}
}
echo '</div>';
}
}
 
}
 
?>
<a href="?option=com_katalog&task=search&page=1&word1=<?=$this->result['needle'][0]?>&word2=<?=$this->result['needle'][1]?>&word3=<?=$this->result['needle'][2]?>&word4=<?=$this->result['needle'][3]?>">1////</a>
<a href="?option=com_katalog&task=search&page=2&word1=<?=$this->result['needle'][0]?>&word2=<?=$this->result['needle'][1]?>&word3=<?=$this->result['needle'][2]?>&word4=<?=$this->result['needle'][3]?>">2////</a>
<a href="?option=com_katalog&task=search&page=3&word1=<?=$this->result['needle'][0]?>&word2=<?=$this->result['needle'][1]?>&word3=<?=$this->result['needle'][2]?>&word4=<?=$this->result['needle'][3]?>">3////</a>
</div>
 
 
 

 

2-й файл это я так понял отвечвает за вывод

http://hostingkartinok.com/show-image.php?id=46519351c40e5bf72d141f81c3d6e8c9

// No direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

class KatalogModelKatalog extends JModel
{
/**
* Gets the greeting
* @return string The greeting to be displayed to the user
*/
function getResult($post) {
$db =& JFactory::getDBO();

//get a dbfields and parameters
$first_field = $post['fields'][0];
$second_field = $post['fields'][1];
$third_field = $post['fields'][2];
$fourth_field = $post['fields'][3];
$first = $post['search_words'][0];
$second = $post['search_words'][1];
$third = $post['search_words'][2];
$fourth = $post['search_words'][3];
$search_type = $post['search_type'];

if($first !== '%') {
$first = "AND $first_field LIKE '$first'";
} else {
$first = '';
}

if($second !== '%') {
$second = "AND $second_field LIKE '$second'";
} else {
$second = '';
}

if($third !== '%') {
$third = "AND $third_field LIKE '$third'";
} else {
$third = '';
}

if($fourth !== '%') {
$fourth = "AND $fourth_field LIKE '$fourth'";
} else {
$fourth = '';
}

//search data in choosen db's
$result = array();
foreach($post['dbname'] as $dbname) {
$query = "SELECT author, title, pub_info, publisher, pages, seria, source FROM #__katalog WHERE dbname LIKE '$dbname'
$first $second $third $fourth";
$db->setQuery( $query );
$result[$dbname] = $db->loadObjectList();
}
return $result;
}
}

Edited by vitaxastifler
Link to comment
Share on other sites

  • 0

Switch)) посмотри внимательно тот код))) Он вцикле запросы делает

по прежнему - потому что мы в запрос не вставили $limit, а вставить его можно будет поняв для чего $first $second $third $fourth

 

посмотри внимательно на код на первой странице.  там что то типа формы поиска у него

 

Впринципе можно и просто через LIMIT .. N сделать, как я уже писал....   ))))

вообщем я другое решение немного вам дал))) попытайтесь разобраться. легче конечно через просто LIMIT ... но не нравится мне

      if($limit !== '%') {            $limit = "AND $limit_field LIKE '$limit'";        } else {            $limit = '';        }

вы какой то ерунды наделали)))))   

вам другое предлагают - посмотрите внимательно тогда что вам Switch предложил

LIMIT - это другое. попытайтесь вникнуть, почитать документацию.... У меня сейчас подозрение складывается, что вы многих вещей просто недопонимаете пока что))

Link to comment
Share on other sites

  • 0

В общем пробовал,ничего не получилось у меня.

Дошёл к тому что при нажатии на следующую стр у меня всё сбивается.

Как то тут всё оч сложно,надо что бы кто то смотрел.

Link to comment
Share on other sites

  • 0

выведенные 20 книг


Вот,так будет понятней)

Один знакомый говорит что надо сделать что бы форма и поиск был на 1-й стр тогда всё должно сработать.

Edited by vitaxastifler
Link to comment
Share on other sites

  • 0

ок, теперь по порядку:

1. после того, как вы сделали поиск по Шевченко, как выглядит адрес страницы - интересует какие переменные передаются в GET

2. при переходе на другую страницу какой адрес получается?

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

Я бы посоветовал сделать страницу поиска и вывод результата на одной странице - меньше страниц, больше удобства

  • Like 1
Link to comment
Share on other sites

  • 0

Тот "программист" который дал мне это задание не сделал это!

И говорит что сайт будет падать,если залить новые базы.

Я вот решил протестить,сейчас сделаю копию сайта и поробую перенести всю базу!

Мы ж не будем выводить абсолютно все книги,поэтому я думаю что не должен падать!

А вы как думаете?

 

Сам лично правда локально я выводил 800 книг на одной стр.

Или хостинг может не выдержать?

Edited by vitaxastifler
Link to comment
Share on other sites

  • 0

Вы говорили вроде у вас в базе 24000 строки, подозреваю что это 24000 книг, выводя столько строк:

1. это будет равняться приблизительно 1мб при условии, что вы будете выводить по 40 символов на книгу в среднем - Автор и название книги + теги верстки

2. таблица получится очень длинной и листать ее будет не очень удобно, особенно на медленных старых компах

 

хостинг может быть и выдержит формирование данной странички, но

3. хостинг у вас скорее всего виртуальный, а это значит, что у вас в распоряжении не 1 компьютер, а в лучшем случае 1/10 от компьютера, т.е. практически калькулятор :)

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy