След и пред. запись

Фанат

oncle terrible
Команда форума
Не надо оправдываться.
Вы, ребята, никак не вырастете из школьной формы, и думаете, что здесь завуч сидит.
который в угол поставит.

Нету тут завуча. Тут есть люди, которые пытаются тебя заставить понять свою проблему.
И всё.

я бы на втоём сесте взял, да завёл совершенно новый топик, про сортировку.
поскольку вопрос про постраничку - решён.
 

Vital_N

Новичок
Aidar
если тебе необходимо выбрать следующую и предыдущую запись - в пределах факуультета - то просто еще одно условие добавляется - просто немного логически порассуждай - т.е тебе не просто надо выбрать запись id которой больше или меньше - но и добавить Where fac=текущий факультет

Это конечно если я вообще правильно понял, что тебе надо )))
 

Aidar

Guest
Так я пробовал делать, да только споткнется алгоритм, когда дойдет до последней записи 1 факультета. Мне необходимо, чтобы осуществлялся переход с последней записи текущего факультета на первую запись следующего факультета.
 

fixxxer

К.О.
Партнер клуба
Если твой алгоритм спотыкается, это значит только то, что он некорректен.
Напиши так, чтобы не спотыкалось. Десять запросов тут ни к чему.
 

Aidar

Guest
Если бы я знал как написать... Ладно, буду пробовать.
 

dorfey

Guest
Если я прально понял нуно тебе сделать отдельную табличку с fak'ам и в приведенной тобой таблице добавить поле parent, т.е. соотношение чего-то там к определенным факам. После это использовать вывод приведенный Виталием.
таким образом сначало выбираем нужный фак, потом делаем переходы с одного id на следующий или предыдущий id
 

Фанат

oncle terrible
Команда форума
я бы на месте автора вопроса не стал бы прислушиваться к этому мнению
 

Tor

Новичок
dorfey
потому что нет никакой необходимости в дополнительной таблице для такого простого случая
 

Popoff

popoff.donetsk.ua
[бред]
Автор оригинала: Aidar
Да, признаю, не умею я толком вопросы задавать. Что поделаешь. Если бы админ картинки разрешил было бы проще. А так уж извини, как могу.
Если бы я знал как написать... Ладно, буду пробовать.
Да, я дурак, таким уж уродился. Так сделай для меня хоть что-нибудь![/бред]
 

dorfey

Guest
imho заведя таблицу изначально, в дальнейшем не будет возникать проблем если например буду добавляться и удаляться fak'и
 

Фанат

oncle terrible
Команда форума
ответ не имеет ни малейшего отношения к вопросу
 

XStudent

Новичок
Для первого факультета
select id from таблица where факультет='fak1' order by id asc
Для второго факультета
select id from таблица where факультет='fak2' order by id asc
Таблица сформирована.

Вывод информации: знаем id, желательно передавать факультет, в крайнем случае можно найти в таблице.
Предыдущая страница:
select id from таблица where факультет='fak1' and id<текущий id order by id desc limit 1
Если вернет пустой - значит находимся на самом раннем значении. Здесь надо смотреть, если ты хочешь дать ему ссылку на последнюю страницу другого факультета, то делать дополнительный запрос:
select id from таблица where факультет='fak2' order by id desc limit 1

Следущая страница:
select id from таблица where факультет='fak1' and id>текущий id order by id asc limit 1
Если вернет пустой, значит мы на последней странице, надо менять факультет. Меняем факультет:
select id from таблица where факультет='fak2' order by id asc limit 1
По моему, общий смысл понятен.
 

Aidar

Guest
Popoff
Себя дураком не считаю. Просто умею признавать свои ошибки.
XStudent
Спасибо, будем пробовать.
 

Aidar

Guest
Popoff
Хватит флейма, для этого другой раздел есть.

-~{}~ 28.04.05 18:55:

PHP:
        $current_fak = $_GET['Fak']; //получаем номер текущего факультета 
        $current = $_GET['id']; //получаем id текущей записи
        //Следующая страница
        $next_result = mysql_query( "SELECT Fak,Id FROM specialty WHERE Id>$current AND Fak=$current_fak ORDER BY Id ASC LIMIT 1" );
        if( mysql_num_rows( $next_result ) == 1 ) { // проверяем, вернул ли запрос необходимые значения, если да, то....
          if( $next_pages = mysql_fetch_assoc( $next_result ) ) {
            $next_page = $next_pages['Id'];
          }
        } else { //если запрос ничего не вернул, переводим ссылку на первую запись следующего факультета
          $next_result1 = mysql_query( "SELECT Fak,Id FROM specialty WHERE Fak>$current_fak ORDER BY Id ASC LIMIT 1" );
          if( $next_pages1 = mysql_fetch_assoc( $next_result1 ) ) {
            $next_page = $next_pages1['Id'];
          }
        }
        //Предыдущая страница
        $prev_result = mysql_query( "SELECT Fak,Id FROM specialty WHERE Id<$current AND Fak=$current_fak ORDER BY Id DESC LIMIT 1" );
        if( mysql_num_rows( $prev_result ) == 1 ) { // проверяем, вернул ли запрос необходимые значения, если да, то....
          if( $prev_pages = mysql_fetch_assoc( $prev_result ) ) {
            $prev_page = $prev_pages['Id'];
          }
        } else { //если запрос ничего не вернул, переводим ссылку на последнюю запись предыдущего факультета
          $prev_result1 = mysql_query( "SELECT Fak,Id FROM specialty WHERE Fak<$current_fak ORDER BY Id DESC LIMIT 1" );
          if( $prev_pages1 = mysql_fetch_assoc( $prev_result1 ) ) {
            $prev_page = $prev_pages1['Id'];
          }
        }
        ?>
ВЫводим ссылки

<a class="btn1" href="?mod=spec&action=info&id=<?=$prev_page?>">&nbsp;Предыдущая специальность&nbsp;</a><a class="btn2" href="?mod=spec&action=show">&nbsp;К списку&nbsp;</a><a class="btn3" href="?mod=spec&action=info&id=<?=$next_page?>">&nbsp;Следующая специальность&nbsp;</a>

Проблема осталась в том, если запись самая первая в таблице, то не отображать ссылку на предыдущую запись, и наоборот, если запись самая последняя - не выводить ссылку на следующую запись.
Знаю только, что надо получить максимальное и минимальное значение поля Id в таблице, а вот как связать...
PHP:
        $max_result = mysql_query( "SELECT MAX(Id) AS Id FROM specialty" );
        $max_page = mysql_num_rows( $max_result );
        $min_result = mysql_query( "SELECT MIN(Id) AS Id FROM specialty" );
        $min_page = mysql_num_rows( $min_result );
 

Фанат

oncle terrible
Команда форума
зачем тебе получать эти id?
просто проверяй, если нет нужного айди - то и ссылку не выводим.

дальше.
почему бы тебе не делать один запрос вместо двух?
почему не добавить фак в условие?
 
Сверху