|
|
|
| Встраиваю код постраничной навигации.
Как только дело доходит до строки $result00 = mysql_query("SELECT COUNT(*) FROM instruk WHERE cat='$cat'"); на странице выводится ошибка Notice: Undefined variable: cat in .
Чего я только не делал, отказывается SELECT COUNT считать хоть убей. Подскажите в чём проблема.
<?php
include ("blocks/bd.php"); /*Соединяемся с базой данных*/
$result = mysql_query ("SELECT taitl,meta_d,meta_k,text FROM settings WHERE stranica='instryksii'", $db);
$myrow = mysql_fetch_array ($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow ['meta_d'];?>">
<meta name="keywords" content="<?php echo $myrow ['meta_k'];?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Инструкции</title>
<link href="stayl.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="700" border="1" align="center" bgcolor="#FFFFFF" class="main_border">
<!--Подключаем шапку сайта-->
<?php include("blocks/header.php");?>
<tr>
<td><table width="900" border="1">
<!--Подключаем левый блок-->
<?php include("blocks/lefttd.php");?>
<td width="640">
<?php echo $myrow ['text']; ?>
<?php
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM instruk WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM instruk WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
?>
<?php
$result = mysql_query ("SELECT * FROM instruk", $db);
$myrow = mysql_fetch_array ($result);
do{
printf ("<table align='center' class='teibl'>
<tr>
<td class='teibl_title'>
<p class='teibl_name'>%s</p>
<p class='teibl_adss'>Дата размещения: %s</p>
<p class='teibl_adss'>Автор документа: %s</p></td>
</tr>
<tr>
<td><p class='teibl_zametka'>%s</p></td>
</tr>
</table><br><br>",$myrow ["gol"], $myrow ["data"], $myrow ["autor"], $myrow ["deskription"]);
}
while ($myrow = mysql_fetch_array ($result));?>
</td>
</tr>
</table></td>
</tr>
<!--Подключаем нижний блок-->
<?php include("blocks/footer.php");?>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 22:56)
| | Потому, что Undefined variable: cat, а к этому месту должна быть | |
|
|
|
|
|
|
|
для: Yuriev
(15.02.2009 в 23:16)
| | Да есть к этому месту путь, пишу полный текст Notice: Undefined variable: cat in z:\home\localhost\www\cmk\instryksii.php on line 34 | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:19)
| | переменная не определена, определи переменную и ошибка должна уйти | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 22:56)
| | Откуда вообще в коде берется переменная $cat
Её просто нет - вот интерпретатор вам об этом и говорит | |
|
|
|
|
|
|
|
для: mihdan
(15.02.2009 в 23:30)
| | Из таблицы базы данных. И она там точно есть | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:32)
| | Не вижу в коде ее определение где-либо | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:32)
| | насколько я понимаю, что этот пример из видео уроков "PHP MySQL для начинающих".
В БД хранится значение переменной, которая отвечает за кол-во выводимых статей за-раз.
а тебе надо определить переменную, которая передаётся через GET.
попробуй исправить на "....WHERE cat='".$_GET['cat']."'"
ещё можно попобовать определить переменную cat сделав следующее
<?php
$cat = $_GET_['cat']
?>
|
вписать это до вставки кода постраничной навигации, а в запросе оставить всё как ты написал. | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.02.2009 в 23:37)
| | Правильно понимаете именно из них. исправил, теперь в место страницы выводит ошибкуParse error: parse error, unexpected '"' in z:\home\localhost\www\cmk\instryksii.php on line 34 и всё в тойже строке кода.
Попробовал второй вариант выводит ошибку Notice: Undefined variable: _GET_ in z:\home\localhost\www\cmk\instryksii.php on line 27 и ссылается на $cat = $_GET_['cat'] | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:44)
| | проверь кавычки и аппострофы, вроде на них указывает ошибка.
запутался ты видать в чередовании этих знаков.
если ты скопировал, то что я написал, убери в конце кавычки
попробуй вот так
cat = '".$_GET['cat']."' | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.02.2009 в 23:47)
| | Пишит туже самую ошибку :( | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:54)
| | 27 линия. Что там? Если $cat = $_GET_['cat'] , то поставьте в конце ; | |
|
|
|
|
|
|
|
для: mihdan
(15.02.2009 в 23:59)
| | Поставил точку с запятой, выводит Notice: Undefined variable: _GET_ in z:\home\localhost\www\cmk\instryksii.php on line 27 | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 00:20)
| | парни хватит уже смешить
переменная эта пишется $_GET | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 00:44)
| | ни кто не смешит, но при копировании надо смотреть что копируешь. ни кто не застрахован от опечеток и т.д.
p.s. тоже подумал об этом, сразу не обратил внимание, но ты меня опередил... | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 00:44)
| | Исправил подчёркивание. Не помогает пишет что в этой строчке переменная cat опять не инециализирована | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 00:52)
| | тогда напиши как у тебя составлена ссылка, по которой ты делаешь переход между категориями
по идее должно быть так
http://index.php?cat=1 или после cat должно стоять другое значение, соответствующее номеру категории....
короче, напиши всё | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 00:58)
| | Вот так выглядит ссылка на страницу в которой мне необходимо реализовать постраничную навигацию. http://localhost/cmk/instryksii.php
Потребность в постраничной навигации возникает так как в базе данных таблицы instruk хранится 23 описания к документам, и соответственно все 23 описания выводятся в цикле, страница растягивается на метры.
Судя по коду в базе данных я создал таблицу options в которой с помощью переменной str определил количество документов которые будут выводится на страницу.
Далее код обращается к базе данных в таблицу instruk к оператору cat, и с помощью SELECT COUNT должен посчитать 23 хранящихся описания документов.
Что он отказывается делать.
Так же грешу на phpMyAdmin 2.5.6 MySQL 3.23.53-max, а точнее на работу в них оператораSELECT COUNT так как с помощью выше названного пробовал реализовать рейтинг документов, эффект был такой же как только код доходит до строки с операторомSELECT COUNT тут же выводится ошибка. | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 01:20)
| | ты тут что то напутал.
если у тебя одна страница,instryksii.php, и у тебя нет категорий/навигации по сайту, то попробуй убрать из запроса
<?php $result00 = mysql_query("SELECT COUNT(*) FROM instruk WHERE cat='$cat'");?>
|
и
<?php $result = mysql_query("SELECT * FROM instruk WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db); ?>
|
условие WHERE cat='$cat'
если у тебя на сайте, к примеру, есть разделы первый, второй , третий и т.д., то тогда надо сортировать по id раздела или по какомуто пругому признаку.
если ты воводишь все записи на одну страницу, не сортируешь по темам/категориям, то нет необходимости в WHERE cat='$cat'
я столкнулся с такой фигнёй, когда все статьи надо было вывести на главную страницу сайта, не сортирую по темам
если всё таки у тебя идёт вывод по категориям/темам, то в ссылке http://localhost/cmk/instryksii.php?cat= чему? вот чему равна $cat это и должно поступать из базы
тогда должно быть у тебя так как писали выше | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 01:38)
| | Спасибо ошибки ушли что то стало прояснятся, но код не работает как вываливал при загрузке страницы 23 описания документов из базы так и продолжает вываливать : ) | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 01:46)
| | вот этот запрос по моему лишний.
<?php $result = mysql_query ("SELECT * FROM instruk", $db); ?>
|
ты же чуть выше уже вывел из БД записи и отсортировал, а теперь опять выводишь этиже данные, но только без сортировки
если в своём первой сообщении ты привёл все свои скрипыт в куче, то
<?php
$result = mysql_query ("SELECT * FROM instruk", $db);
$myrow = mysql_fetch_array ($result);
?>
|
замени на
<?php
include("путь/к твоему/скрипту/с постраничной навигацией");
?>
|
если же это один скрипт целиком, то попробуй убрать вышеуказаный запрос | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 02:00)
| | Убрал! И в строке ниже исправил
$temp = mysql_fetch_array($result00);
| на
$temp = mysql_fetch_array($result);
| ошибок не выводит, но и описания на странице опять в количестве 23.
Код постранички убрал в отдельный файл. На странице на него сослался. Описания на странице в количестве 23. | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 02:06)
| | сделай как я выше написал | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 02:08)
| | Сделал.
<?php include ("blocks/navinstruk.php");?>
|
установил на странице.
Создал новый файл navinstruk.php в него сложил код постраничной навигации.
Не помогает | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 02:15)
| |
<?php
..................................................
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM instruk WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
?>
<?php
//$result = mysql_query ("SELECT * FROM instruk", $db); убрать
//$myrow = mysql_fetch_array ($result); убрать
do{
printf ("<table align='center' class='teibl'>
....................................................................
?>
|
вот так сделал? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 02:28)
| | Всё сделал как рекомендуеш!
На странице в место 23 появилась одна запись и ниже ёё ошибка в цикле на строке
while ($myrow = mysql_fetch_array ($result));
|
| |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 02:37)
| | а кто за тебя будет писать что содержится в сообщении об ошибке? :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 02:41)
| | Исправляюсь
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\cmk\instryksii.php on line 48 | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 02:43)
| | ну ты же менял имена переменных
$result00 на $result
вот верни обратно и помотри что будет | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 02:51)
| | Все ошибки ушли. Запись на странице одна, а должно быть 3, так как в базе options строка str имеет значение 3. В коде ниже я это значение и вытаскиваю. Или я опять не прав : )
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
|
| |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 03:13)
| | если все ошибки ушли, присвой значение переменной $num = 3 или какое тебе надо, и отключи запрос к БД, который выводит значение переменной.
посмотри что получится.
зачем ради одного значения создавать таблицу в БД? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 03:26)
| | Убрал запрос. Вместо него поставил
Ни чего не изменилось | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 03:33)
| | смотри.вот строки где имена переменных совпадают!!! может в этом ошибка?
$myrow = mysql_fetch_array ($result);
while ($myrow = mysql_fetch_array ($result));?>
эти строки выполняют разные задачи, а имена одинаковые.
проверь,что бы имена не совпадали ни где. | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 02:15)
| | а ты вернул назад $temp = mysql_fetch_array($result00);?
ты же тут что то менял? | |
|
|
|
|
|
|
|
для: bags
(16.02.2009 в 01:20)
| | "...Далее код обращается к базе данных в таблицу instruk к оператору cat..." это не оператор, а имя столбца в таблице данных | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.02.2009 в 01:41)
| | Да это имя столбца в таблице. | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 23:54)
| | можно попробовать так
if (isset($_GET['cat'])) $cat = $GET_['cat'];
как ты пишешь ссылку, по которой переходишь по категориям?
вообще то правильно, как написал mihdan не забывай о точке с запятой. | |
|
|
|
|
|
|
|
для: bags
(15.02.2009 в 22:56)
| | bags, ты делаешь точно по инструкции? Просто я сам вчера делал постраничную навигацию на движок php-fusion дак там нет категорий я просто убрал эти переменные можешь посмотреть что получилось) www.planetfini.ru/filmoteka/films.php (скрипт написал сам) | |
|
|
|
|
|
|
|
для: malerok
(16.02.2009 в 10:39)
| |
Warning: Cannot modify header information - headers already sent by (output started at /home/planetf1/public_html/filmoteka/films.php:6) in /home/planetf1/public_html/filmoteka/maincore.php on line 188
|
ЖЕСТЬ :D | |
|
|
|
|
|
|
|
для: mall
(16.02.2009 в 19:51)
| |
возможно TITLE ? | |
|
|
|
|
|
|
|
для: mall
(16.02.2009 в 19:51)
| | После небольших манипуляций своими пальцами вродь все работает) | |
|
|
|