Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: next и prev

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: запрос получения id для next и prev - не правильная работа запроса.
MAXIMUS_XI
Отправлено: 08 Октября, 2017 - 22:49:51
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




Добрый день, коллеги!

У меня есть код для получения из базы 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 - тот же эффект.
Заранее спасибо.

(Отредактировано автором: 08 Октября, 2017 - 23:50:44)

 
 Top
andrewkard
Отправлено: 09 Октября, 2017 - 09:06:53
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Цитата:

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)
 
 Top
Vladimir Kheifets
Отправлено: 09 Октября, 2017 - 09:24:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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 в БД
 
 Top
MAXIMUS_XI
Отправлено: 09 Октября, 2017 - 13:32:02
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




Цитата:
Vladimir Kheifets
Цитата:
andrewkard


Спасибо! Каким то чудом после 4 днех поисков бага - оно само заработало правильно. Подозреваю что трабл был на стороне хостера. Надо где то бубен раздобыть ))))

(Отредактировано автором: 09 Октября, 2017 - 13:36:19)

 
 Top
LIME
Отправлено: 10 Октября, 2017 - 06:45:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




.

(Отредактировано автором: 10 Октября, 2017 - 06:48:22)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB