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

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

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

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

Это конечно если я вообще правильно понял, что тебе надо )))
 
Так я пробовал делать, да только споткнется алгоритм, когда дойдет до последней записи 1 факультета. Мне необходимо, чтобы осуществлялся переход с последней записи текущего факультета на первую запись следующего факультета.
 
Если твой алгоритм спотыкается, это значит только то, что он некорректен.
Напиши так, чтобы не спотыкалось. Десять запросов тут ни к чему.
 
Если бы я знал как написать... Ладно, буду пробовать.
 
Если я прально понял нуно тебе сделать отдельную табличку с fak'ам и в приведенной тобой таблице добавить поле parent, т.е. соотношение чего-то там к определенным факам. После это использовать вывод приведенный Виталием.
таким образом сначало выбираем нужный фак, потом делаем переходы с одного id на следующий или предыдущий id
 
я бы на месте автора вопроса не стал бы прислушиваться к этому мнению
 
dorfey
потому что нет никакой необходимости в дополнительной таблице для такого простого случая
 
[бред]
Автор оригинала: Aidar
Да, признаю, не умею я толком вопросы задавать. Что поделаешь. Если бы админ картинки разрешил было бы проще. А так уж извини, как могу.
Если бы я знал как написать... Ладно, буду пробовать.
Да, я дурак, таким уж уродился. Так сделай для меня хоть что-нибудь![/бред]
 
imho заведя таблицу изначально, в дальнейшем не будет возникать проблем если например буду добавляться и удаляться fak'и
 
Для первого факультета
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
По моему, общий смысл понятен.
 
Popoff
Себя дураком не считаю. Просто умею признавать свои ошибки.
XStudent
Спасибо, будем пробовать.
 
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 );
 
зачем тебе получать эти id?
просто проверяй, если нет нужного айди - то и ссылку не выводим.

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