предыдущее и последуйщее значение АйДи

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
предыдущее и последуйщее значение АйДи

всё было б хорошо, если б Ай-ди шли по порядку

сортировка по дате (база Мускула)

выводится текущая новость (например под 50 ай-ди)
предыдущая новость может иметь как больший, так и меньший Ай-ди
как поступить в таком случае?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
выводится текущая новость
внизу
<<предыдущая новость следуйщая новость>>
как взять не id-1 и соответственно id+1
а действительно предыдущу новость с базы (сортировка по дате)

дело в том, что я вбиваю новости хаотично
например выводим новость время 12.00 id=50
вдруг я решил добавить новость за 11.00, соответственно ай-ди будет 51 и она не будет уже "предыдущей"...
как поступать в таком случае?

select id from news where date<$даты текущей новости LIMIT 1?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
а что делать, если в базе (не новостной) id нумерация — хаотична...
ой, сори, торможу...
понял
конец рабочего дня, голова, как........
спасибо
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ой
нет
не выходит
короче говоря
база истории,
поля айди, имя, врубка, текст
сортировка происходит по имени (ну типа чтоб в алфавитном порядке)
как взять из базы предыдущее и следуйщее имя?
 

RomikChef

Guest
select id from table where $name > '$name' limit 1
select id from table where $name < '$name' limit 1
 

RomikChef

Guest
кхмм, да. если иена совпадают, то надо сортировку вводить.
от геморрой...

select id from table where $name > '$name' and id > '$id' order by name limit 1
select id from table where $name < '$name' and id < '$id' order by name desc limit 1
 

Larson

Новичок
Ну конечно, не нужен - нужен.
Только не по айди, а по наме.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
спасибо, но...
ниче не происходит

вот кусок скрипта


if (isset($n))
{
$sql = "SELECT name FROM history WHERE id=$n";
$result = mysql_query($sql);
while($data=mysql_fetch_array($result))
{
$name=$data[name];
}
$sql = "SELECT * FROM history WHERE name>'$name' LIMIT 1";
$result = mysql_query($sql);
while($data=mysql_fetch_array($result))
{?>
<a class="top" href="<? echo $PHP_SELF."n=".$data[id];?>"><?echo $data[name];?></a></td>
<?}?>
<?}?>
 

RomikChef

Guest
Дорогой мистер.
Кстати.
Ты уж определись
Сначала тебе были нужны айди по порядку, а потом ты вдруг поменял резко ориентауию и решил сортировать по имени.

дальше. выкини ты этот вайл на помойку.
while - это ЦИКЛ. абстрактный цикл!
а не специальная конструкция для доставания данных из базы.
Если ты достаешь только одну строчку, то он не нужен
PHP:
<?
if (isset($n)) {
  $sql = "SELECT name FROM history WHERE id='$n'";
  $result = mysql_query($sql);
  $data=mysql_fetch_array($result);
  $name=$data[name];

  $sql = "SELECT * FROM history WHERE name>'$name' LIMIT 1";
  $result = mysql_query($sql);
  $data=mysql_fetch_array($result);
?>
<a class="top" href="<? echo $PHP_SELF."n=".$data[id];?>"><?echo $data[name];?></a></td>
<? } ?>
Вот теперь, когда это выглядит нормально, объясняй, ЧТО ИМЕННО у тебя не получается.
Телепаты, как ты, уже, наверное, знаешь - в отпуску.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
если нейм число, то выводится, если не число, а буквочки, то нет :((((
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
дело в том, что в таблице история есть только поля
ай-ди, имя, врубка, текст
имя - буквенное, а не цифровое
 

RomikChef

Guest
а ты можешь объяснить, почему тред начался с неразрывности id?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
потому, что сначала я ссылался на новостной скрипт, а там всё просто, можно "опереться" на дату

а вот как доступить с "историческим" скриптом....
 

RomikChef

Guest
только что проверил.
прекрасно сравнивает строки.
где-то ты что-то напутал.
отлаживай свой скрипт.
повыводи переменные на экран
запускай запросы в mysql
 
Сверху