21.09.2010, 02:54
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Прокомментировать пару непонятных мест
Расшифруйте пож. пару мест непонятных из этого кода, я написал в комментариях.
А именно вот эти строки:
Код:
|
1)$result = mysql_query("SELECT * from $table ORDER by id desc");
Этоо означает выбрать из таблицы все строки сортируя их в обратном порядке, это зачем делать? |
2)
Код:
|
$num_rows = mysql_num_rows($result); Зачем считать кол-во записей в таблице,я так понял это кол-во строк |
3)
Код:
|
$num_rows = round($num_rows/$chislo);
Зачем здесь функция раунд? И у меня 20 записей, почему на первой странице выводит 5 записей, а на 2 и 3 по 10? |
4)
Код:
|
($_GET['str'])) //Откуда взялась переменная str в глобальном массиве? |
5)
Код:
|
$nav = intval($nav); //Вот это место зачем писать? |
6)
Код:
|
for ($i=1; $i<$num_rows; $i++) { //А чему переменная num_rows равна,где она получает значения?
if ($i != $nav) { //А это что за проверка странная?
echo '<a href="'.$PHP_SELF.'?str='.$i.'">'.$i.'</a> ';//Вот этот кусок желательно растолкуйте понятней ?str и пхп_селф
}
else {
// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
echo '<span>'.$i.'</span> '; //Что это за вывод переменной $i и чему эта переменная будет равна?
}
} |
7)
Код:
|
if (!isset($_GET['str'])) { //Что это за проверка и откуда взялась переменная стр в глобальном массиве,что она делает? |
8)Последнее,непонятное вот это растолкуйте пож. подробней
Код:
|
'.substr($row['text'],0,100).'.. <a href="text.php?nomer='.$row['id'].'">>></a></p>'; |
Код:
|
<?
$server = 'localhost'; // ИМЯ СЕРВЕРА
$user = 'ptisa'; // ПОЛЬЗОВАТЕЛЬ
$pass = '12345'; // ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ
$db = 'video'; // БАЗА ДАННЫХ
$table = 'lessons'; // НАЗВАНИЕ ТАБЛИЦЫ
$chislo = 5; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ
// ДЛЯ УДОБСТВА ОБОЗНАЧИМ ПЕРЕМЕННУЮ С ТЕКСТОМ ОШИБКИ
$text_error = '<br />Ошибочка вышла!';
// СОЕДЕНИМСЯ С MySQL
$connect = mysql_connect ($server, $user, $pass);
if (!$connect) {
echo $text_error;
exit;
}
// СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ
$select = mysql_select_db($db);
if (!$select) {
echo $text_error;
exit;
}
// СОЗДАЁМ ЗАПРОС
$result = mysql_query("SELECT * from $table ORDER by id desc");
// СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
$num_rows = mysql_num_rows($result); // Это подсчёт из скольки строк состоит табл. зачем это делать?
// А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
$num_rows = round($num_rows/$chislo); //Зачем здесь функция round?
// ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ
if (isset($_GET['str'])) {
$nav = $_GET['str'];
}
else {
$nav = 0;
}
$nav = intval($nav); // Смысл этой строки, зачем? Что делает интвал с переменной nav?
echo 'Навигация: ';
// А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
for ($i=1; $i<$num_rows; $i++) { //Если у меня 20 записей в базе значит здесь будет от 1 до 4?
if ($i != $nav) { ..Что это за проверка и зачем?
echo '<a href="'.$PHP_SELF.'?str='.$i.'">'.$i.'</a> '; //прокомментируйте вот это место подробнее
}
else {
// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
echo '<span>'.$i.'</span> '; //Что это за вывод?
}
}
echo '<hr />'; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ
// НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :)
if (!isset($_GET['str'])) {
$str = 0;
}
else {
$str = $_GET['str']*$chislo - $chislo;
}
$nomer = $str + 5;
// ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ
$result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $nomer");
// ИНАЧЕ ВЫВОДИМ ОШИБКУ
if (!$result) {
echo $text_error;
exit;
}
echo '<div style="width: 40%;">';
while ($row = mysql_fetch_array($result)) {
echo '<p>'.$row['id'].' - <strong>'.$row['page'].'</strong>
<br />
'.substr($row['text'],0,100).'.. <a href="text.php?nomer='.$row['id'].'">>></a></p>';
}
echo '</div>';
mysql_close($connect);
?> |
|
|
21.09.2010, 07:26
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
вы лентяй, хамло и идиот.
ни малейшего желания вам помогать из-за этого
PS это не оскорбление, а логический вывод из вашего поста
Последний раз редактировалось Gvozd, 21.09.2010 в 07:28.
|
|
21.09.2010, 08:51
|
Новичок
|
|
Регистрация: 03.08.2010
Сообщений: 230
|
|
Слов нет... Может Вам книжечку хоть какую-нить по PHP и БД почитать?
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
|
|
21.09.2010, 10:02
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
а на других форумах ему с этим постом больше повезло.
|
|
21.09.2010, 11:03
|
Новичок
|
|
Регистрация: 03.08.2010
Сообщений: 230
|
|
Ничего не поделаешь))
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
|
|
21.09.2010, 18:07
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Решил опробовать другой,более правильный вариант, но он у меня не сработал.
По видеоуроку попробовал написать постраничную навигацию, для теста как там было указано создал 2 таблицы:
Таблица lessons.php
Код:
|
id cat text
1 1 Петя
2 1 Фрося
3 1 Борис
4 1 Анатолий
5 1 Банан
6 1 Тарзан
7 1 Макс
8 1 Министр
9 1 Факел
10 1 Природа
11 1 Листья
12 1 Друзья
13 1 Морковь
14 1 Титаник
15 1 Мел
16 1 Натрий
17 1 Вуглевод
18 1 Кислород
19 1 Дартаньян
20 1 Поезд |
Таблица options.php
Файл database.php
Код:
|
<?php
$server = 'localhost'; //Имя сервера
$user = 'privet'; //Логин
$password = '12345'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?> |
Код самой постраничной навигации, файл cat_view.php
Код:
|
<?php
include '../blocks/database.php'; /*Соединяемся с Базой Данных*/
$result77 = mysql_query("SELECT str FROM options", $connect);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data 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 id,text FROM lessons WHERE
cat='$cat' ORDER BY id LIMIT $start, $num",$connect);
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая
</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat=
'.$cat.'&page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat=
'.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page=
'. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page=
'. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page=
'. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page=
'. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat=
'.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.
'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?> |
Выдаёт ошибки:
Код:
|
Notice: Undefined variable: cat in z:\home\sitik.ru\www\blocks\view_cat.php on line 9
[Денвер: показать возможную причину ошибки]
Warning: mysql_fetch_array(): supplied argument is
not a valid MySQL result resource in z:\home\sitik.ru\www\blocks\view_cat.php on line 10
Notice: Undefined variable: cat in z:\home\sitik.ru\www\blocks\view_cat.php on line 27
Notice: Undefined variable: cat in z:\home\sitik.ru\www\blocks\view_cat.php on line 30
Notice: Undefined variable: cat in z:\home\sitik.ru\www\blocks\view_cat.php on line 30 |
Хотя я всё сделал по инструкции,как говорилось в видеоуроке.
Подскажите пож, что сделать чтоб сработало?
Последний раз редактировалось Golovastik, 21.09.2010 в 18:10.
|
|
21.09.2010, 18:12
|
Новичок
|
|
Регистрация: 03.08.2010
Сообщений: 230
|
|
Тут же все русским языком написано...
Переменная $cat не определена. Определите её и все ошибки пропадут сами собой )
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
|
|
21.09.2010, 18:21
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Написал так выше.
$cat = 1;
Странно но выдало такое:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\sitik.ru\www\blocks\view_cat.php on line 11
А в 11 строке такая строка:
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
|
|
21.09.2010, 18:27
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Да, точно, я не правильно сделал запрос sqlне с той таблицы выбираю, написал так:
$result00 = mysql_query("SELECT COUNT(*) FROM lessons WHERE cat='$cat'");
Сработало,но при нажатии на один из пунктов меню, навигации, ничего не выводится.
Что делать?
|
|
21.09.2010, 22:45
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Golovastik
|
Что делать?
|
сесть и подумать
и советую выкинуть ваши видео-уроки.
они не бывают хорошими как правило.это раз.
во-вторых они напсианы для идиотов. и пока вы будете ими пользоватся, умнее вы точно от них не станете
|
|
|
|