Как правильно сделать логику в php?

Есть маленький сайтик с несколькими десятками страниц. На главной странице есть лента объявлений, которые подгружаются с помощью endless scroll js.
Эта штука использует db.php
<?php

mysql_connect('localhost', 'login', "pass") or die();
mysql_select_db('itests_mobile');
mysql_query("SET NAMES UTF8");
mysql_query("SET CHARACTER SET UTF8");

$offset = is_numeric($_POST['offset']) ? $_POST['offset'] : die();
$postnumbers = is_numeric($_POST['number']) ? $_POST['number'] : die();


$run = mysql_query("SELECT * FROM listings ORDER BY `id` DESC LIMIT ".$postnumbers." OFFSET ".$offset);

while($row = mysql_fetch_array($run)) {
	
	$content = substr(strip_tags($row['body']), 0, 500);
	echo "<div class='row'>
		<div class='col-md-4 boxes'>
				<p>". $content. "</p>
				<p><a class='btn btn-default' href='#' role='button'>Толук маалымат &raquo;</a></p>
			</div>
		</div>";

}

?>


jquery.js с кучей кодов

и

pagination.js
// Extend the options so they work with the plugin
		if(options) {
			$.extend(settings, options);
		}
		
		// For each so that we keep chainability.
		return this.each(function() {		
			
			// Some variables 
			$this = $(this);
			$settings = settings;
			var offset = $settings.offset;
			var busy = false; // Checks if the scroll action is happening 
			                  // so we don't run it multiple times
			
			// Custom messages based on settings
			if($settings.scroll == true) $initmessage = 'Scroll for more or click here';
			else $initmessage = 'Click for more';
			
			// Append custom messages and extra UI
			$this.append('<div class="content"></div><div class="loading-bar">'+$initmessage+'</div>');
			
			function getData() {
				
				// Post data to ajax.php
				$.post('db.php', {
						
					action        : 'scrollpagination',
				    number        : $settings.nop,
				    offset        : offset,
					    
				}, function(data) {
						
					// Change loading bar content (it may have been altered)
					$this.find('.loading-bar').html($initmessage);
						
					// If there is no data returned, there are no more posts to be shown. Show error
					if(data == "") { 
						$this.find('.loading-bar').html($settings.error);	
					}
					else {
						
						// Offset increases
					    offset = offset+$settings.nop; 
						    
						// Append the data to the content div
					   	$this.find('.content').append(data);
						
						// No longer busy!	
						busy = false;
					}	
						
				});
					
			}	
			
			getData(); // Run function initially
			
			// If scrolling is enabled
			if($settings.scroll == true) {
				// .. and the user is scrolling
				$(window).scroll(function() {
					
					// Check the user is at the bottom of the element
					if($(window).scrollTop() + $(window).height() > $this.height() && !busy) {
						
						// Now we are working, so busy is true
						busy = true;
						
						// Tell the user we're loading posts
						$this.find('.loading-bar').html('Башка жарнамаларды чыгаруу');
						
						// Run the function to fetch the data inside a delay
						// This is useful if you have content in a footer you
						// want the user to see.
						setTimeout(function() {
							
							getData();
							
						}, $settings.delay);
							
					}	
				});
			}
			
			// Also content can be loaded by clicking the loading bar/
			$this.find('.loading-bar').click(function() {
			
				if(busy == false) {
					busy = true;
					getData();
				}
			
			});
			
		});
	}

})(jQuery);


и в индекс.php



Мне нужно использовать эту пагинацию и на других страницах. Но в моем случае придется создавать копии этих файлов для каждой страницы что не приемлемо для меня. Как переписать все это так чтобы я мог пользоваться одним файлом или классом? У меня идей пока нет(
  • Вопрос задан
  • 2454 просмотра
Решения вопроса 1
@Kjuri
а где хранятся данные этой ленты? в таблице бд listings ?
и откуда берутся данные о номере $_POST['number'] и $_POST['offset'] ? Какие-то формы на странице?
ну вот соответственно везде подключить эти файлы db.php и js, + на страницах, на которых должна быть пагинация подключать форму, чтобы получить $_POST['number'] и $_POST['offset']
а в db.php вместо таблицы listings вставить переменную присваивать ей значение в зависимости от типа страницы.

$run = mysql_query("SELECT * FROM ".$mytablebd." ORDER BY `id` DESC LIMIT ".$postnumbers." OFFSET ".$offset);
$run = mysql_query("SELECT * FROM listings ORDER BY `id` DESC LIMIT ".$postnumbers." OFFSET ".$offset);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dind Автор вопроса
на других страницах данные будут браться из других таблиц
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы