$elements=45; //неважно
$nums=2; //неважно
$page = intval($_GET['page']);
$x=($page-1)*$nums;
while ($x<$nums*$page)
{
echo $x;
if ($x==$elements) break;
$subscrsubj=mysql_query("SELECT * FROM subj,users WHERE subj.author=users.login and sid='".$subscr[$x]."' ORDER BY rate LIMIT {$start}, {$nums} ");
}
все дело в самом запросе к бд - на второй и более странице он просто не выполняется, НО если выводить $x в цикле или даже $subscr[$x], то все ок, выводится и сам икс, и id темы, которую нужно выбрать :huh:
Почему же тогда сама выборка не осуществляется? На первой странице все нормально..
Спустя 24 минуты, 25 секунд (16.12.2010 - 08:48) twin написал(а):
А нфиг запрос в цикле то?
Спустя 11 минут, 52 секунды (16.12.2010 - 09:00) totje написал(а):
$subscr = explode(",", $sessionrow['subscr']);
ну а в самом поле id тем, на которые юзер подписан.
Спустя 3 часа, 56 минут, 26 секунд (16.12.2010 - 12:56) hellmin написал(а):
$x=($page-1)*$nums;
while ($x<$nums*$page)
//Это тоже самое что и
while (($page-1)*$nums<$nums*$page)
// тут левая часть всегда будет меньше правой
Спустя 7 минут, 9 секунд (16.12.2010 - 13:03) totje написал(а):
hellmin
забыл дописать, что в конце цикла $x++;
он не зацикливается, все нормально выводится, но в пределах первой страницы. почему? ведь при переходе на вторую page становится равно двум и соответственно с базы должны выбираться следующие записи, соответствующие $subscr[$x].
Сам же $subscr[$x] также правильно отображается на всех страницах, но почему выборка из бд то только в пределах первой страницы осуществляется??
забыл дописать, что в конце цикла $x++;
он не зацикливается, все нормально выводится, но в пределах первой страницы. почему? ведь при переходе на вторую page становится равно двум и соответственно с базы должны выбираться следующие записи, соответствующие $subscr[$x].
Сам же $subscr[$x] также правильно отображается на всех страницах, но почему выборка из бд то только в пределах первой страницы осуществляется??

Спустя 6 минут, 1 секунда (16.12.2010 - 13:09) hellmin написал(а):
А как формируется $start
Спустя 10 минут, 15 секунд (16.12.2010 - 13:20) totje написал(а):
$nums = 2; // строк на страницу
if (isset($_GET['page'])) {
$page = intval($_GET['page']);
}
else {
$page = 1;
}
$elements = count($subscr); //строк всего
$pages = ceil($elements/$nums); //страниц всего
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$nums;
if ($start < 0) $start = 0;
вот весь кусок кода на всякий случай
Спустя 1 час, 49 минут, 34 секунды (16.12.2010 - 15:09) hellmin написал(а):
А на сколько тем подписан данный пользователь?..
И если можно то кода по-больше скинуть.
И если можно то кода по-больше скинуть.
Спустя 23 минуты, 20 секунд (16.12.2010 - 15:33) totje написал(а):
ну в данном случае на 5
окей, вот вообще весь. естественно, лишнее порезал:
окей, вот вообще весь. естественно, лишнее порезал:
$subscr = explode(",", $sessionrow['subscr']);
$nums = 2; // строк на страницу
if (isset($_GET['page'])) {
$page = intval($_GET['page']);
}
else {
$page = 1;
}
$elements = count($subscr); //строк всего
$pages = ceil($elements/$nums); //страниц всего
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$nums;
if ($start < 0) $start = 0;
$x=($page-1)*$nums;
while ($x<$nums*$page)
{
if ($x==$elements) break;
$subscrsubj=mysql_query("SELECT * FROM subj,users WHERE subj.author=users.login AND sid='".$subscr[$x]."' ORDER BY rate DESC LIMIT {$start}, {$nums} ");
$subscrsubjrow = mysql_fetch_array($subscrsubj);
echo $subscr[$x]; // выводит нужныйправильный айди на всех страницах, НО КАКИЕ-ТО НЕВЕДОМЫЕ СИЛЫ МЕШАЮТ выбрать по этому айди инфу с базы, если скрипт выполняется не на первой странице
echo $x; // само собой выводится
echo $subscrsubjrow['author']; //вывод только на 1-й странице, на остальных выборка не работает
echo $subscrsubjrow['subjtext']; //вывод только на 1-й странице, на остальных выборка не работает
$x++;
}
}
echo "<div id='navi'>";
$neighbours = 5; //кол-во соседних страниц
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;
$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;
if ($page > 1) {
print ' <div id="naviprev"><a href="?page=' . ($page-1) . '">‹‹ назад</a> (<a href="?page=1">1</a>)</div>';
}
else echo "<div id='naviprevnoway'>‹‹ назад (...)</div>";
for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
if ($i != $page) {
print ' <span id="navipages"><a href="?page=' . $i . '">' . $i . '</a></span> ';
}
else {
// выбранная страница
print ' <span id="navipage">' . $i . '</span> ';
}
}
if ($page < $pages) {
print ' <div id="navinext">(<a href="?page=' . $pages . '">' . $pages . '</a>) <a href="?page=' . ($page+1) . '">дальше ››</a></div> ';
}
else {echo "<div id='navinextnoway'>(...) дальше ››</div>";}
echo "</div>";
Спустя 1 час, 19 минут, 7 секунд (16.12.2010 - 16:52) hellmin написал(а):
А попробуй вместо второй части вставить вот такое....
$subscrsubj=mysql_query("SELECT * FROM subj,users WHERE subj.author=users.login AND FIND_IN_SET(sid, $sessionrow[subscr]) ORDER BY rate DESC LIMIT {$start}, {$nums} ");
while($subscrsubjrow = mysql_fetch_array($subscrsubj))
{
echo $subscrsubjrow['author']; //вывод только на 1-й странице, на остальных выборка не работает
echo $subscrsubjrow['subjtext']; //вывод только на 1-й странице, на остальных выборка не работает
}
Спустя 5 часов, 26 секунд (16.12.2010 - 21:52) totje написал(а):
hellmin
тогда результаты повторяются на каждой странице - например, на 1й все темы с id=123, на 2й с id=124 итд.. а если вместо $sessionrow[subscr] подставить $subscr[$x], то все также как и было
тогда результаты повторяются на каждой странице - например, на 1й все темы с id=123, на 2й с id=124 итд.. а если вместо $sessionrow[subscr] подставить $subscr[$x], то все также как и было
Спустя 11 часов, 16 минут, 42 секунды (17.12.2010 - 09:09) hellmin написал(а):
А можешь сделать print_r($sessionrow[subscr]) ?
Интересно что там хранится
Интересно что там хранится
Спустя 47 минут, 50 секунд (17.12.2010 - 09:57) totje написал(а):
338,339,341,323,321
id тем, которые должны выводиться
убрал условие выборки subj.author=users.login, и все нормально выводится, только без инфы о юзере.. видимо, дело в построении запроса
пока что поставил выборку инфы о юзере в цикл, все работает, но это извращение какое-то, потому любые идеи по решению этой беды приветствуются:)
id тем, которые должны выводиться
убрал условие выборки subj.author=users.login, и все нормально выводится, только без инфы о юзере.. видимо, дело в построении запроса
пока что поставил выборку инфы о юзере в цикл, все работает, но это извращение какое-то, потому любые идеи по решению этой беды приветствуются:)
$subscrsubj=mysql_query("SELECT sid,author,rate,subjtext,tag FROM subj WHERE sid='".$subscr[$x]."' ORDER BY rate DESC LIMIT {$start}, {$nums} ");
$subscrsubjava=mysql_query("SELECT avatar FROM users WHERE login='".$subscrsubjrow['author']."' ");
Спустя 26 минут, 1 секунда (17.12.2010 - 10:23) hellmin написал(а):
В какой еще цикл? Покажи
Спустя 25 минут, 13 секунд (17.12.2010 - 10:48) totje написал(а):
hellmin
ну в этот же, просто вместо одного запроса будет выполняться два.. но это не выход судя по всему
вся проблема была в LIMIT в запросе. он не только был бесполезен, но и мешал в моем условии вывода. достаточно было убрать и все вроде как работает так, как нужно)
ну в этот же, просто вместо одного запроса будет выполняться два.. но это не выход судя по всему
вся проблема была в LIMIT в запросе. он не только был бесполезен, но и мешал в моем условии вывода. достаточно было убрать и все вроде как работает так, как нужно)
Спустя 3 минуты, 22 секунды (17.12.2010 - 10:51) hellmin написал(а):
Так ведь убрали же цикл... откуда он снова появился?
И зачем ты в цикле вытаскиваешь аватарку?
И зачем ты в цикле вытаскиваешь аватарку?
Спустя 5 часов, 37 минут, 37 секунд (17.12.2010 - 16:29) totje написал(а):
hellmin
не заметил второй страницы.
все нормально уже) в пред сообщении отписался
не заметил второй страницы.
все нормально уже) в пред сообщении отписался