X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Прокомментировать пару непонятных мест
people2010
people2010
Topic Starter сообщение 21.9.2010, 2:54; Ответить: people2010
Сообщение #1


Расшифруйте пож. пару мест непонятных из этого кода, я написал в комментариях.
А именно вот эти строки:
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);

?>
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 21.9.2010, 10:25; Ответить: LifeUP
Сообщение #2


Тут обьяснять толком нечего
1. Зачем нужна сортировка это вам виднее и автору, ненужна тупо убираете
2. Считается кол-во строк затронутых в запросе
3. Делит кол-во выбранных строк в запросе на $chislo затем округляет до целого числа
4. Например отсюда
http://mysite.ru/index.php?str=home

5. Приводит данные к числовому типу
6. Формирует номера страниц
7. Проверяет есть ли str в массиве $_GET
8. Обрезает текст до 100 символов, присваивает "nomer" идентификатор "id"

P.S берете гугл и вбиваете непонятные функции.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
people2010
people2010
Topic Starter сообщение 21.9.2010, 15:22; Ответить: people2010
Сообщение #3


Написал так, всё равно выводит на 1-ой странице 5, а на 2 и 3 по 10.
$num_rows = ceil($num_rows/$chislo);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 21.9.2010, 17:00; Ответить: Mulder_hb
Сообщение #4


О знакомый код. Жопов?
Вы на этом форуме уже полгода. За такой срок можно было уже научиться элементарным понятиям пхп...
(people2010 @ 21.9.2010, 18:22) *
Написал так, всё равно выводит на 1-ой странице 5, а на 2 и 3 по 10.
$num_rows = ceil($num_rows/$chislo);

А вы включите логику и все сразу станет ясно. Я выделяю лишь ваш код:
[PHP]$chislo = 5; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ
$result = mysql_query("SELECT * from $table ORDER by id desc");
// СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
$num_rows = mysql_num_rows($result);
// А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
$num_rows = round($num_rows/$chislo);[/PHP]
Ну давайте считать вместе.
$num_rows = round($num_rows/$chislo) = round(20/5);
Сколько же будет 20 делить на 5? Три или четыре? Наверное, четыре. Так почему у вас выводится только три? А я вам скажу почему. Потому что вы привели говнокод, в которым рунет просто тонет. Мало того, вы просто не разбираясь скопипастили его, абсолютно не понимая, что он делает. Каждую строчку вашего кода надо переписывать заново...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
people2010
people2010
Topic Starter сообщение 21.9.2010, 18:07; Ответить: people2010
Сообщение #5


Решил опробовать другой,более правильный вариант, но он у меня не сработал.
По видеоуроку попробовал написать постраничную навигацию, для теста как там было указано создал 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
d     str
1     3


Файл 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


Хотя я всё сделал по инструкции,как говорилось в видеоуроке.
Подскажите пож, что сделать чтоб сработало?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 21.9.2010, 23:35; Ответить: Mulder_hb
Сообщение #6


(people2010 @ 21.9.2010, 21:07) *
Хотя я всё сделал по инструкции,как говорилось в видеоуроке.

Посмотрели видео-урок, хорошо. А теперь включайте собственные мозги.
Первое, что нужно сделать, это составить алгоритм. Возьмите листок бумаги, ручку и опишите для себя простыми человеческими фразами, что должно происходить для того, что вывести текст на несколько страниц. Сколько должно быть таблиц, какие запросы делать в бд, как формировать число страниц и его содержание. На этом этапе вам не нужно знать ни php, ни sql. Просто напишите человеческим языком, как все должно работать. Как распишите, опубликуйте его здесь.

ЗЫ. Обрамляйте php-код тегами php. Так легче читать, ваш поток сознания.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) написать пару шаблонов ZennoPoster
0 Taylor 6016 20.6.2021, 3:25
автор: Taylor
Открытая тема (нет новых ответов) sails-brm - партнёрская программ - биржа рекламных мест
2 alex_pnet 1148 30.9.2020, 10:48
автор: alex_pnet
Открытая тема (нет новых ответов) Разыскиваю пару толковых разработчиков сайтов
2 vadosseo 1621 14.11.2019, 20:59
автор: qpPeW
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСделаю дёшево пару лэндингов
3 WebProf_mw 1509 18.6.2019, 10:32
автор: FIvYUr
Открытая тема (нет новых ответов) Пару вопросов про push-рассылки
12 Zhezkazganetcs 5152 12.6.2019, 8:36
автор: ExchangeRatesPro


 



RSS Текстовая версия Сейчас: 25.4.2024, 18:18
Дизайн