Link in progress
Обо мне
require_once и ORDER BY. Уроки PHP

Require_once и ORDER BY.
План:1. require_once – совместное использование данных;
2. ORDER BY – сортировка средствами SQL;
3. Форматирование списка с помощью CSS и HTML.

1. require_once – совместное использование данных;
require_once – функцию можно считать как «вставить». Также можно использовать require. Отличия между require_once и require в том, что первая функция проверяет, была ли вставка ранее на странице, если да – тогда повторно вставка не производится. Я решил переместить в отдельные файлы такие данные:
— подключение к базе данных в connect.php (хостинг, логин, пароль, имя БД0);
— путь к папке с загруженными файлами и их настройки в vars.php (размер, тип и т.д.).

Мой вид config.php:

1
2
3
4
5
6
<?php
define ('BDHost','host);
define ('BDLogin','login');
define ('BDPass','pass');
define ('BDName','dbname');
?>

И vars.php:

1
2
3
4
5
<?php
define ('IMAGE_PAPH','upload/');
define ('MAX_PIX','150px');
define ('MAX_file_size','512000');
?>

Все это я поместил в папку «config». Теперь осталось изменить файл страниц рейтинга и добавление в рейтинг используя функцию require_once. Этот код я вставил в начала всех php файлов:

1
2
3
4
<?php
require_once('config/config.php');
require_once('config/vars.php');
?>

Все отлично работает. Теперь нам не нужно будет вносить данные во все файлы php, если у нас изменятся данные о подключение к БД или уменьшить размер изображение, достаточно будет исправить один файл.

2. ORDER BY – сортировка средствами SQL;
Сейчас у нас рейтинг показывается как попало. Будет намного лучше, если с самого верху будут атлеты, которые подняли больше всех. Для этого мы может воспользоваться средствами сортировки SQL — ORDER BY:

1
$query = "SELECT * FROM sport ORDER BY weight DESC, date ASC";

Мы просто немного дописали запрос выборки в БД, и теперь мы сортируем по колонке weight с самого большого к меньшему, а если будут совпадения в колонке weight, то мы дополнительно сортируем эти записи по дате в порядке «первый тот, кто раньше добавился». Например: Рома поднял 100кг. 25.02.2016г. и Вася поднял 100кг 22.02.2016г. Результат сортировки будет таким: Вася будет выше Ромы.
Основные типы сортировки SQL ORDER BY :
ASC – от меньшего к большему;
DESC – от большего к меньшему.
Применяем эту сортировку в файле rank.php и проверяем его работоспособность.

3. Форматирование списка с помощью CSS и HTML.
Рейтинг выводит лучших в самый верх, но он можно первого кандидата выделить, например так, как на скриншоте.reyting Что было сделано. В файле rank.php был дописан код, который выводит самой большой рейтинг:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$query = "SELECT * FROM sport ORDER BY weight DESC, date ASC";
$result = mysqli_query($connect, $query);
$top = 0;
while ($rank = mysqli_fetch_array($result)) {
    if ($top == 0) {
        echo '<div class="topbilder">Наибольше поднял: ' . $rank['name'] . ' ' . $rank['weight'] . 'кг.</div>';
    };
    echo '<b>Поднял:</b><span class="rank"> ' . $rank['weight'] . 'кг.</span><br />';
    echo '<b>Имя:</b> ' . $rank['name'] . '<br />';
    echo '<b>Дата добавления:</b> ' . $rank['date'] . '<br />';
    if (is_file(IMAGE_PAPH . $rank['photo']) && filesize(IMAGE_PAPH . $rank['photo']) > 0) {
        echo '<b>Фото:</b><br /> <img src="' . IMAGE_PAPH . $rank['photo'] . '" width="' . MAX_PIX . '"  />';
    } else {
    echo '<b>Фото:</b><br /> <img src="' . IMAGE_PAPH . 'Nophoto.jpg" width="' . MAX_PIX . '" />';
    }
    echo '<br /><br />';
    $top ++;
};

Что тут происходит. Создается переменная $top = 0. Далее в цикле while мы проверяем, пуста ли переменная $top: if ($top == 0). Если пуста — вывести контейнер div с данными в нем: имя и поднятые кг. В конце цикла мы добавляем к переменной $top ++; что равно $top = $top + 1;. У нас будет эта переменная получать +1 после каждого прохода цикла, результат которого не будет удовлетворять условия if ($top == 0). Ах да, чуть не забыл о свойстве CSS:

1
2
3
4
5
6
height: 30px;
line-height: 30px;
background-color: grey;
color: white;
text-align: center;
font-size: 24pt;

На этом урок закончен. В следующем уроке ми поговорим о том, как проверять загружаемые файлы на тип и модерировать еще на этапе загрузки.

С уважение, ProIN. До скорой встречи.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Max quality, min price, min time expenditure
Send me a message to: work@glogla.net
Portfolio