Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: HELP! Постраничная навигация.
 
 автор: bags   (15.02.2009 в 22:56)   письмо автору
 
 

Встраиваю код постраничной навигации.
Как только дело доходит до строки $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>

  Ответить  
 
 автор: Yuriev   (15.02.2009 в 23:16)   письмо автору
 
   для: bags   (15.02.2009 в 22:56)
 

Потому, что Undefined variable: cat, а к этому месту должна быть

  Ответить  
 
 автор: bags   (15.02.2009 в 23:19)   письмо автору
 
   для: Yuriev   (15.02.2009 в 23:16)
 

Да есть к этому месту путь, пишу полный текст Notice: Undefined variable: cat in z:\home\localhost\www\cmk\instryksii.php on line 34

  Ответить  
 
 автор: Slo_Nik   (15.02.2009 в 23:34)   письмо автору
 
   для: bags   (15.02.2009 в 23:19)
 

переменная не определена, определи переменную и ошибка должна уйти

  Ответить  
 
 автор: mihdan   (15.02.2009 в 23:30)   письмо автору
 
   для: bags   (15.02.2009 в 22:56)
 

Откуда вообще в коде берется переменная $cat
Её просто нет - вот интерпретатор вам об этом и говорит

  Ответить  
 
 автор: bags   (15.02.2009 в 23:32)   письмо автору
 
   для: mihdan   (15.02.2009 в 23:30)
 

Из таблицы базы данных. И она там точно есть

  Ответить  
 
 автор: mihdan   (15.02.2009 в 23:34)   письмо автору
 
   для: bags   (15.02.2009 в 23:32)
 

Не вижу в коде ее определение где-либо

  Ответить  
 
 автор: Slo_Nik   (15.02.2009 в 23:37)   письмо автору
 
   для: bags   (15.02.2009 в 23:32)
 

насколько я понимаю, что этот пример из видео уроков "PHP MySQL для начинающих".
В БД хранится значение переменной, которая отвечает за кол-во выводимых статей за-раз.
а тебе надо определить переменную, которая передаётся через GET.
попробуй исправить на "....WHERE cat='".$_GET['cat']."'"
ещё можно попобовать определить переменную cat сделав следующее

<?php
$cat 
$_GET_['cat']
?>

вписать это до вставки кода постраничной навигации, а в запросе оставить всё как ты написал.

  Ответить  
 
 автор: bags   (15.02.2009 в 23:44)   письмо автору
 
   для: 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']

  Ответить  
 
 автор: Slo_Nik   (15.02.2009 в 23:47)   письмо автору
 
   для: bags   (15.02.2009 в 23:44)
 

проверь кавычки и аппострофы, вроде на них указывает ошибка.
запутался ты видать в чередовании этих знаков.
если ты скопировал, то что я написал, убери в конце кавычки
попробуй вот так

cat = '".$_GET['cat']."'

  Ответить  
 
 автор: bags   (15.02.2009 в 23:54)   письмо автору
 
   для: Slo_Nik   (15.02.2009 в 23:47)
 

cat = '".$_GET['cat']."' 
Пишит туже самую ошибку :(

  Ответить  
 
 автор: mihdan   (15.02.2009 в 23:59)   письмо автору
 
   для: bags   (15.02.2009 в 23:54)
 

27 линия. Что там? Если $cat = $_GET_['cat'] , то поставьте в конце ;

  Ответить  
 
 автор: bags   (16.02.2009 в 00:20)   письмо автору
 
   для: mihdan   (15.02.2009 в 23:59)
 

Поставил точку с запятой, выводит Notice: Undefined variable: _GET_ in z:\home\localhost\www\cmk\instryksii.php on line 27

  Ответить  
 
 автор: Trianon   (16.02.2009 в 00:44)   письмо автору
 
   для: bags   (16.02.2009 в 00:20)
 

парни хватит уже смешить
переменная эта пишется $_GET

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 00:47)   письмо автору
 
   для: Trianon   (16.02.2009 в 00:44)
 

ни кто не смешит, но при копировании надо смотреть что копируешь. ни кто не застрахован от опечеток и т.д.
p.s. тоже подумал об этом, сразу не обратил внимание, но ты меня опередил...

  Ответить  
 
 автор: bags   (16.02.2009 в 00:52)   письмо автору
 
   для: Trianon   (16.02.2009 в 00:44)
 

Исправил подчёркивание. Не помогает пишет что в этой строчке переменная cat опять не инециализирована

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 00:58)   письмо автору
 
   для: bags   (16.02.2009 в 00:52)
 

тогда напиши как у тебя составлена ссылка, по которой ты делаешь переход между категориями
по идее должно быть так
http://index.php?cat=1 или после cat должно стоять другое значение, соответствующее номеру категории....
короче, напиши всё

  Ответить  
 
 автор: bags   (16.02.2009 в 01:20)   письмо автору
 
   для: 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 тут же выводится ошибка.

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 01:38)   письмо автору
 
   для: 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 это и должно поступать из базы
тогда должно быть у тебя так как писали выше

  Ответить  
 
 автор: bags   (16.02.2009 в 01:46)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 01:38)
 

Спасибо ошибки ушли что то стало прояснятся, но код не работает как вываливал при загрузке страницы 23 описания документов из базы так и продолжает вываливать : )

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:00)   письмо автору
 
   для: 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("путь/к твоему/скрипту/с постраничной навигацией");
?>

если же это один скрипт целиком, то попробуй убрать вышеуказаный запрос

  Ответить  
 
 автор: bags   (16.02.2009 в 02:06)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 02:00)
 

Убрал! И в строке ниже исправил
$temp = mysql_fetch_array($result00);
на
$temp = mysql_fetch_array($result);
ошибок не выводит, но и описания на странице опять в количестве 23.
Код постранички убрал в отдельный файл. На странице на него сослался. Описания на странице в количестве 23.

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:08)   письмо автору
 
   для: bags   (16.02.2009 в 02:06)
 

сделай как я выше написал

  Ответить  
 
 автор: bags   (16.02.2009 в 02:15)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 02:08)
 

Сделал.
<?php include ("blocks/navinstruk.php");?>

установил на странице.

Создал новый файл navinstruk.php в него сложил код постраничной навигации.
Не помогает

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:28)   письмо автору
 
   для: 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'>
....................................................................
?>

вот так сделал?

  Ответить  
 
 автор: bags   (16.02.2009 в 02:37)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 02:28)
 

Всё сделал как рекомендуеш!

На странице в место 23 появилась одна запись и ниже ёё ошибка в цикле на строке

while ($myrow = mysql_fetch_array ($result));

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:41)   письмо автору
 
   для: bags   (16.02.2009 в 02:37)
 

а кто за тебя будет писать что содержится в сообщении об ошибке? :)

  Ответить  
 
 автор: bags   (16.02.2009 в 02:43)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:51)   письмо автору
 
   для: bags   (16.02.2009 в 02:43)
 

ну ты же менял имена переменных
$result00 на $result
вот верни обратно и помотри что будет

  Ответить  
 
 автор: bags   (16.02.2009 в 03:13)   письмо автору
 
   для: 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"];

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 03:26)   письмо автору
 
   для: bags   (16.02.2009 в 03:13)
 

если все ошибки ушли, присвой значение переменной $num = 3 или какое тебе надо, и отключи запрос к БД, который выводит значение переменной.
посмотри что получится.
зачем ради одного значения создавать таблицу в БД?

  Ответить  
 
 автор: bags   (16.02.2009 в 03:33)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 03:26)
 

Убрал запрос. Вместо него поставил
$num = 3;

Ни чего не изменилось

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 03:38)   письмо автору
 
   для: bags   (16.02.2009 в 03:33)
 

смотри.вот строки где имена переменных совпадают!!! может в этом ошибка?

$myrow = mysql_fetch_array ($result);

while ($myrow = mysql_fetch_array ($result));?>

эти строки выполняют разные задачи, а имена одинаковые.
проверь,что бы имена не совпадали ни где.

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 02:36)   письмо автору
 
   для: bags   (16.02.2009 в 02:15)
 

а ты вернул назад $temp = mysql_fetch_array($result00);?
ты же тут что то менял?

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 01:41)   письмо автору
 
   для: bags   (16.02.2009 в 01:20)
 

"...Далее код обращается к базе данных в таблицу instruk к оператору cat..." это не оператор, а имя столбца в таблице данных

  Ответить  
 
 автор: bags   (16.02.2009 в 01:47)   письмо автору
 
   для: Slo_Nik   (16.02.2009 в 01:41)
 

Да это имя столбца в таблице.

  Ответить  
 
 автор: Slo_Nik   (16.02.2009 в 00:03)   письмо автору
 
   для: bags   (15.02.2009 в 23:54)
 

можно попробовать так
if (isset($_GET['cat'])) $cat = $GET_['cat'];
как ты пишешь ссылку, по которой переходишь по категориям?
вообще то правильно, как написал mihdan не забывай о точке с запятой.

  Ответить  
 
 автор: malerok   (16.02.2009 в 10:39)   письмо автору
 
   для: bags   (15.02.2009 в 22:56)
 

bags, ты делаешь точно по инструкции? Просто я сам вчера делал постраничную навигацию на движок php-fusion дак там нет категорий я просто убрал эти переменные можешь посмотреть что получилось) www.planetfini.ru/filmoteka/films.php (скрипт написал сам)

  Ответить  
 
 автор: mall   (16.02.2009 в 19:51)   письмо автору
 
   для: 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:52)   письмо автору
 
   для: mall   (16.02.2009 в 19:51)
 

taitl


возможно TITLE ?

  Ответить  
 
 автор: malerok   (16.02.2009 в 20:15)   письмо автору
 
   для: mall   (16.02.2009 в 19:51)
 

После небольших манипуляций своими пальцами вродь все работает)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования