2012-03-11 4 views
-1

Мне интересно, что такое команда для запроса базы данных, которая запрашивает данные вперед или назад между строками? Также как кнопка вперед и назад. Может ли кто-нибудь дать мне пример? Благодарю.Запрос Mysql вперед и назад

Для examp:

$sql_xxxx = mysql_query("SELECT * FROM xxxx WHERE id='$xxx'") or die (mysql_error()); 
$row_xxxx = mysql_fetch_array($sql_xxxx); 

Теперь мне нужно два же запрос, но для одного вперед и в других отсталых данных.

+1

Думаю, вам нужно немного разъяснить этот вопрос. –

+0

Вам нужна команда MySQL, которая получит строку после определенной строки или функцию PHP, которая получит следующую строку в результате запроса или что-то еще? – Ynhockey

+0

объясните больше, вы хотите переключиться между запросами? – hamed

ответ

0

Поскольку вы помечено PHP и MySQL Я думаю, что я могу предположить, что вы пытаетесь сделать;

Обычно вы можете контролировать это с идентификатором записи в MySQL, например:

SELECT * FROM MYTABLE WHERE ID = 1; 

В PHP, вы можете построить динамические запросы, чтобы получить разные результаты, а просто изменить значение переменной.

Допустим, теперь мы хотим взять тот же запрос и сделать его динамичным:

$id = 1; 
$query = "SELECT * FROM MYTABLE WHERE ID = $id "; 

до тех пор, как вы выполнить этот запрос, он даст вам строку с ID = 1, вызывает в настоящее время оно принимает значение из переменной $ id.

Если вы хотите следующую строку, то вы выполняете тот же запрос, но теперь значение $ id должно иметь следующее значение.

$id = 2; 

Имея и кнопку «ДАЛЕЕ» «НАЗАД» может быть дело просто добавляя или вычитая 1 к переменной $ ид. Тем не менее, это только пример. В большинстве случаев вам не следует играть с такими идентификаторами, потому что вы не должны предполагать, что все id существуют, помните, что существует «DELETE»;

Таким образом, вы можете попробовать выполнить более маленький запрос, чтобы найти следующее значение, как это:

идти перемещение вперед:

$query= "SELECT MIN(ID) FROM MYTABLE WHERE ID > $id" 
// This will get you for sure the closest id next to the current one 

and to go back: 
$query= "SELECT MAX(ID) FROM MYTABLE WHERE ID < $id" 

Я надеюсь, что это помогает,

С уважением

+0

Спасибо большое, это то, что я ищу. С уважением, человек. –

+0

Я рад, не забудьте оценить. Мне не нравится помогать людям, я здесь только для ставок. лол – Adrian

0

В запросе можно указать LIMIT, что приводит к определенному количеству строк. Например, когда вы закончите свой запрос LIMIT 100, 10, вы получите 10 результатов, начиная со строки 100.

Таким образом, вы можете создать предыдущие/следующие кнопки, которые при нажатии получат предыдущую или следующую страницу результатов.

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

0

Если вы используете ключевое слово LIMIT, база данных с радостью вернет «страницу» данных, например;

SELECT * FROM posts ORDER BY post_time LIMIT 40,20; -- will return rows 41-60. 

Вы можете использовать, что с PHP, просто установив первый LIMIT номер для page number * page size и второй номер для page size (с номером страницы, являющегося 0 для первой страницы). В этом примере размер страницы будет равен 20, а номер страницы будет 2 (третья страница), а результатом будут все сообщения с третьей страницы.

Нет ничего больше от базы данных, вам просто нужно хорошо использовать его с PHP.

+0

да что-то в этом роде, дело в том, что скрипту нужно идти на один вперед или на один обратно –

+0

@Reddwarf MySQL не будет отслеживать, какую страницу просматривает каждый пользователь, вам придется обрабатывать это на PHP. Например, вы можете создать URL-адрес, например 'http: //mysite/viewposts.php? Page = 1', и прочитать параметр страницы из коллекции' $ _GET [] 'в PHP и передать его как номер страницы в базу данных, как упомянутое выше. Если кто-то нажимает «следующую страницу», просто перейдите по этой ссылке в 'http: //mysite/viewposts.php? Page = 2'. –

+0

Спасибо, что снят мой взгляд на это :) –

0

, если я правильно понять вопрос, это звучит, как вы пытаетесь осуществить нумерацию страниц в запросах, и вы бы использовать «предел» положение, например, так:

SELECT * FROM `your_table` LIMIT 5, 5 

Это покажет запись 6, 7, 8, 9, и 10

вот еще documentation

+0

Да, вы меня поняли, но мне нужна только одна запись вперед, а в другом запросе одна запись назад –