Форумы портала PHP.SU » » Работа с СУБД » next и prev

Страниц (1): [1]
 

1. MAXIMUS_XI - 08 Октября, 2017 - 22:49:51 - перейти к сообщению
Добрый день, коллеги!

У меня есть код для получения из базы id для кнопок next и prev соответственно. Вот он:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if(isset($_GET['id'])) {
  4.         $id_wiew = $_GET['id'];
  5. };
  6.  
  7. $result = mysql_query("SELECT * FROM `b_baza` WHERE id='$id_wiew'", $db);      
  8. $myrow[] = mysql_fetch_array ($result);
  9.  
  10. $nextres = mysql_query("SELECT * FROM `b_baza` WHERE (showid = 1 AND id > $id_wiew) ORDER BY id LIMIT 1", $db);
  11. $nextmyrow[] = mysql_fetch_array ($nextres);
  12. $next = $nextmyrow[0];
  13.  
  14. $prevres = mysql_query("SELECT * FROM `b_baza` WHERE (showid = 1 AND id < $id_wiew) ORDER BY id DESC LIMIT 1", $db);
  15. $prevmyrow[] = mysql_fetch_array ($prevres);
  16. $prev = $prevmyrow[0];
  17.  
  18.  


При это id для $next - работает как надо и идет к следующему в базе id. а id для $prev выдает первый в базе - то есть кнопка prev отправляет в самое начало в не зависимости на каком id_wiew ты сейчас. отличие запросов только в знаках < и >.

Подскажите, что я не так делаю? Огорчение Огорчение Огорчение
Проверял на уровне запроса в phpMyAdmin - тот же эффект.
Заранее спасибо.
2. andrewkard - 09 Октября, 2017 - 09:06:53 - перейти к сообщению
Цитата:

If you combine LIMIT row_count with ORDER BY, MySQL stops sorting as soon as it has found the first row_count rows of the sorted result, rather than sorting the entire result.

MySQL не будет сортировать всю таблицу, Вы хотите 1 результат, он Вам его и вернет.
Наверное нужно сделать запрос на max(id) WHERE (showid = 1 AND id < $id_wiew)
3. Vladimir Kheifets - 09 Октября, 2017 - 09:24:59 - перейти к сообщению
MAXIMUS_XI пишет:
Добрый день, коллеги!

У меня есть код для получения из базы id для кнопок next и prev соответственно. Вот он:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if(isset($_GET['id'])) {
  4.         $id_wiew = $_GET['id'];
  5. };
  6.  
  7. $result = mysql_query("SELECT * FROM `b_baza` WHERE id='$id_wiew'", $db);      
  8. $myrow[] = mysql_fetch_array ($result);
  9.  
  10. $nextres = mysql_query("SELECT * FROM `b_baza` WHERE (showid = 1 AND id > $id_wiew) ORDER BY id LIMIT 1", $db);
  11. $nextmyrow[] = mysql_fetch_array ($nextres);
  12. $next = $nextmyrow[0];
  13.  
  14. $prevres = mysql_query("SELECT * FROM `b_baza` WHERE (showid = 1 AND id < $id_wiew) ORDER BY id DESC LIMIT 1", $db);
  15. $prevmyrow[] = mysql_fetch_array ($prevres);
  16. $prev = $prevmyrow[0];
  17.  
  18.  


При это id для $next - работает как надо и идет к следующему в базе id. а id для $prev выдает первый в базе - то есть кнопка prev отправляет в самое начало в не зависимости на каком id_wiew ты сейчас. отличие запросов только в знаках < и >.

Подскажите, что я не так делаю? Огорчение Огорчение Огорчение
Проверял на уровне запроса в phpMyAdmin - тот же эффект.
Заранее спасибо.

Доброе утро!
Проверял на уровне запроса в phpMyAdmin в своей БД
SELECT * FROM bestellung WHERE (rechnung_nummer != "" AND auftragsnummer <10) ORDER BY auftragsnummer DESC LIMIT 1
Результат запроса:
auftragsnummer rechnung_nummer ..........
9 05/0010-17 ..........


Поробуйте проверить в PHP значение $id_wiew и showid в БД
4. MAXIMUS_XI - 09 Октября, 2017 - 13:32:02 - перейти к сообщению
Цитата:
Vladimir Kheifets
Цитата:
andrewkard


Спасибо! Каким то чудом после 4 днех поисков бага - оно само заработало правильно. Подозреваю что трабл был на стороне хостера. Надо где то бубен раздобыть ))))
5. LIME - 10 Октября, 2017 - 06:45:56 - перейти к сообщению
.

 

Powered by ExBB FM 1.0 RC1