PHP: function yandex_link_bar($page, $count, $pages_count, $show_link) { if ($pages_count == 1) return false; $sperator = ' '; $style = 'style="color: #808000; text-decoration: underline;"'; $style2 = 'style="color: #000000; text-decoration: none; font-size: 20px;"'; $style3 = 'style="color: #000000; text-decoration: none; font-size: 20px;"'; $begin = $page - intval($show_link / 2); unset($show_dots); if ($pages_count <= $show_link + 1) $show_dots = 'no'; if (($begin > 2) && ($pages_count - $show_link > 2)) { echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page=1&id='.$id.'> |< </a> '; } for ($j = 0; $j <= $show_link; $j++) { $i = $begin + $j; if ($i < 1) continue; if (!isset($show_dots) && $begin > 1) { echo ' <a '.$style3.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'&id='.$id.'></a> ... '; $show_dots = "no"; } if ($i > $pages_count) break; if ($i == $page) { echo ' <a '.$style2.' >'.$i.'</a> '; } else { echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.'&id='.$id.'>'.$i.'</a> '; } if (($i != $pages_count) && ($j != $show_link)) echo $sperator; if (($j == $show_link) && ($i < $pages_count)) { echo ' <a '.$style3.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'&id='.$id.'></a> ... '; } } if ($begin + $show_link + 1 < $pages_count) { echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'&id='.$id.'> >| </a>'; } return true; } $perpage = 12; if (empty($_GET['page']) || ($_GET['page'] <= 0)) { $page = 1; } else { $page = (int) $_GET['page']; } $result2 = mysql_query("SELECT * FROM product_info WHERE parent_categorie = $id"); $count = mysql_num_rows($result2); $pages_count = ceil($count / $perpage); if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; $id я получаю через GET, поэтому в ссылках мне необходимо, чтобы значение id передавалось, чтобы остаться в рамках нужной категории списка. Но когда я добавляю &id='.$id.' почему значение $id не видно когда навожу на ссылку, а если перейти по ссылке, то получаю ошибку В вышеприведенном коде строка имеется в виду строка 48. Что я делаю не так?
1)В функции function yandex_link_bar используется переменная $id и значение этой переменной неопределено. Поэтому параметр в ссылке будет равен ''. 2) При нажатии на такой ссылке запрос будет равен $result2 = mysql_query("SELECT * FROM product_info WHERE parent_categorie ="); что является неверным запросом. Поэтому у тебя и выводится сообщение об ошибке.
runner Она у меня определена. Просто я не стал писать весь код, он длинный. Более того, эта переменная участвует в других местах кода и все работает и определяется. А вот именно в показанном участке она почему-то не работает. Я привел только этот кусок кода, потому что он целиком ответственнен за постраничную нумерацию. PHP: $id = $_GET ['id'];
Отсюда у меня единственный вывод- переменная $id неопределена или $id='' или просто в браузере не видно параметра ссылки. Для выяснения причины нужно ответить на несколько вопросов: 2)Поскольку переменная $id не передается в качестве параметра, то возникает вопрос- а что $_GET ['id'] всегда определена? Даже в самом начале работы скрипта? 2) В HTML коде страницы чему равно id ссылки? 3)чему равно значение $id прямо перед формированием ссылок? 4) чему равно $_GET ['id'] перед формированием запроса?
runner id определяется в самом начале и имеет постоянное значение на протяжении всего кода. есть код списка категорий PHP: $group_list = mysql_query('SELECT * FROM groups') or die('Фигня!'); $categorie_list = mysql_query('SELECT * FROM categories ORDER BY position') or die('Фигня!'); while ($group = mysql_fetch_array($group_list)) {if ($group['onoff_g'] == 1) { echo "<p><span class='group_name'><big>".$group['group_name']."</big></span></p>";} while ($categorie = mysql_fetch_array($categorie_list)) {$products_exist = mysql_query ("SELECT parent_categorie FROM product_info WHERE parent_categorie = '".$categorie['id']."'"); $exist = mysql_num_rows($products_exist); if ($categorie['parent_group']==$group['id'] AND $categorie['onoff_c'] == 1 AND $categorie['id'] == $id AND $exist > 0) echo "<span class='cat_menu_active'>• ".$categorie['categorie_name']."</span><br>"; elseif ($categorie['parent_group']==$group['id'] AND $categorie['onoff_c'] == 1 AND $exist > 0) echo "• <a href='listofgoods.php?id=".$categorie['id']."' class='cat_menu'>".$categorie['categorie_name']."</a><br>";} mysql_data_seek($categorie_list, 0);} в 14 строке задается значение id. Но в самом начале есть PHP: if (isset($_GET['id'])) {$id = $_GET ['id'];} else $id = 1 т.е. либо id будет равно 1, либо что передаст GET. id определенно - это факт, т.к. я специально в разных местах кода вставлял echo $id; и везде есть одинаковое значение. Кроме случая, который я описал выше.
Kreker Блин, "вон оно чё Михалыч!" Огромное спасибо! А я даже и не знал, что такое может быть! Заработало!!! runner Спасибо за участие!!!