Задать вопрос

Как правильно сделать логику в 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 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 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 Автор вопроса
на других страницах данные будут браться из других таблиц
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
23 янв. 2025, в 12:08
10000 руб./за проект
23 янв. 2025, в 12:07
20000 руб./за проект