|
|
|
| Как осуществить вывод следующего id определенного user_id и как определить есть ли предыдущая или последовательная запись?
Допустим в таблице есть:
1 Петя
2 Маша
3 Маша
4 Маша
5 Петя
6 Петя
7 Маша
8 Маша
9 Петя
Заранее благодарен | |
|
|
|
|
|
|
|
для: clubxaliav
(29.06.2011 в 16:06)
| | Правильно ли я понимаю, что у нас на входе есть слово "Маша" и цифра, например, 4, и нужно имея эти данные выдать 3 и 7? Тогда можно начать отталкиваться от следующих двух запросов (для предыдущей записи)
SELECT user_id FROM name
WHERE
name = 'Маша' AND
user_id < 4
ORDER BY user_id DESC
LIMIT 1
| и (для следующей записи)
SELECT user_id FROM name
WHERE
name = 'Маша' AND
user_id > 4
ORDER BY user_id
LIMIT 1
|
| |
|
|
|
|
|
|
|
для: cheops
(29.06.2011 в 17:42)
| | Правильно ли я понимаю, что у нас на входе есть слово "Маша" и цифра, например, 4, и нужно имея эти данные выдать 3 и 7?
я надеюсь эти цифры никакого отношения к id строки не имеют
___
автору вопроса:
хотелось всетаки увидеть все значимые поля таблицы (надеюсь речь о базе данных)
а id строки - это всегда главное поле | |
|
|
|
|
|
|
|
для: cheops
(29.06.2011 в 17:42)
| | да!
я вроде понял как сделать, только не знаю на сколько это правильно и практично! И выдает то что нужно!
$query = ("SELECT * FROM tables WHERE userid = '$userid' AND id = ($id - 1)");
$result = mysql_query( $query );
$n = mysql_num_rows ( $result );
if ( 0 < $n ) {
while ($row = mysql_fetch_array( $result )) {
$filename[] = $row['id'];
}
for($i = 0; $i < $n; $i++)
{
echo "<a href=\"запись".$filename[$i].".html\"><< Предыдущая запись</a>";
}
}
|
И так же WHERE userid = '$userid' AND id = ($id + 1) чтоб вывод сделать для следующей!
Есть ли запрос поменьше и нужен ли он? | |
|
|
|
|
|
|
|
для: clubxaliav
(29.06.2011 в 17:53)
| | id = ($id + 1)
этого никогда не должно быть в запросе!!!
мои подозрения все-таки оправдались... цифры - это id :( | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 17:55)
| | Почему не должно быть? | |
|
|
|
|
|
|
|
для: clubxaliav
(29.06.2011 в 17:59)
| | Можно, но проще вычислить это новое значение в PHP, а тут у вас получается MySQL считает - скорее всего во время первого прогона оптимизатор вычислит это значение, но проще наверное его в PHP сформировать - проще будет отследить появление 0 и отрицательных значений и принять решение без обращения к базе данных. | |
|
|
|
|
|
|
|
для: clubxaliav
(29.06.2011 в 17:59)
| | можно - если Вы никогда не будете удалять ни одной строки из таблицы
можно - если Вы никогда не будете менять местами Петю и Машу
можно - если...
так вот лучше никогда не предпринимать таких операций с id а сразу грамотно проектировать базу с заделом на будущее, не вгоняя себя изначально в такие ограничения. | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 19:28)
| | Спасибо всем за урок, очень помогло! | |
|
|
|
|
|
|
|
для: cheops
(29.06.2011 в 17:42)
| | Игорь, заметил ошибку, не пойму где она... вроде сделал все как у вас, а кнопка следующие фото отправляет на последнюю а не на следующюю.
Блин разобрался, DESC лишний был! извиняюсь. | |
|
|
|