Для скачивания готового кода щелкните по ссылке ниже. Готовый код самописного движка с блогом на PHP
Видео к уроку 5.
Видео к уроку 6.

Для скачивания готового кода щелкните по ссылке ниже. Готовый код самописного движка с блогом на PHP
Видео к уроку 5.
Видео к уроку 6.

Файлы прикрепил к следующему уроку.

Код урока для скачивания.

Архив файлов урока можно скачать по ссылке ниже.
engine.com
Видео с урока.
<?
//1. Задаем переменные
$items=430;
$items_per_page=25;
$pages_in_paginator=11;
$paginator_offset=floor($pages_in_paginator/2);
//2. Рассчитываем количество страниц.
$page_count=ceil($items/$items_per_page);
//3. Если не задана страница в гет параметре то мы ее приравниваем к нулю.
if(!isset($_GET['page']))
$_GET['page']=0;
$cur_page=intval($_GET['page']);
if($cur_page>=$page_count)$cur_page=$page_count-1;
//4. Рассчет первой страницы для вывода в пагинаторе
$start_page_pagination=$cur_page-$paginator_offset;
if($start_page_pagination<0)$start_page_pagination=0;
//5. Рассчет последней страницы для вывода в пагинаторе
$end_page_pagination=$start_page_pagination+$pages_in_paginator;
if($end_page_pagination>=$page_count)$end_page_pagination=$page_count-1;
if($end_page_pagination-$start_page_pagination<$pages_in_paginator && $page_count>$pages_in_paginator)
{
$end_page_pagination=$page_count-1;
$start_page_pagination=$end_page_pagination-$pages_in_paginator;
}
?>
<a href='?page=0'><<</a> |
<?if($cur_page-1>=0){?>
<a href='?page=<?=$cur_page-1?>'><</a> |
<?
}
for($i=$start_page_pagination;$i<=$end_page_pagination;$i++)
{
$style="";
$i1=$i+1;
if($i==$cur_page)
$style="style='color:red;'";
echo "<a href='?page=$i' $style> $i1</a> | ";
}
if($cur_page+1<$page_count-1)
{
?>
<a href='?page=<?=$cur_page+1?>'>></a> |
<?}?>
<a href='?page=<?=$page_count-1?>'>>></a>
index.php
<link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css»><link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css»> <script src=»https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js»></script> <script src=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js»></script> <script type=»text/javascript»>function loadXMLDoc(q) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == XMLHttpRequest.DONE) { // if (xmlhttp.status == 200 && xmlhttp.readyState==4) { document.getElementById(«mydiv»).innerHTML = xmlhttp.responseText; } } }; xmlhttp.open(«GET», «ajax/getfruit.php?q=»+q, true); xmlhttp.send();}
function save_fruit(id,text) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == XMLHttpRequest.DONE) { // if (xmlhttp.status == 200 && xmlhttp.readyState==4) { } } }; xmlhttp.open(«GET», «ajax/savefruit.php?id=»+id+»&text=»+text, true); xmlhttp.send();}</script><input onkeyup=»loadXMLDoc(this.value)»>
<?
mysql_connect(«localhost»,»root»,»»);mysql_select_db(«ajax»);$_GET[‘q’]=urldecode($_GET[‘q’]);$data=mysql_query(«select * from `fruits`»);while($res=mysql_fetch_array($data)) { echo «<div id=’id_{$res[‘id’]}’ data-toggle=’modal’ onclick=’setdata(\»{$res[‘fruit’]}\»,\»{$res[‘id’]}\»)’ data-target=’#myModal’ class=’btn btn-success’>».$res[‘fruit’].»</div>»; }?>
<div class=»container»>
<!— Trigger the modal with a button —>
<!— Modal —> <div class=»modal fade» id=»myModal» role=»dialog»> <div class=»modal-dialog»> <!— Modal content—> <div class=»modal-content»> <div class=»modal-header»> <button type=»button» class=»close» data-dismiss=»modal»>×</button> <h4 class=»modal-title»>Введите имя нового фрукта</h4> </div> <div class=»modal-body»> <p> <input id=’fruit’ placeholder=»Введите имя фрукта»> <input id=’fruitid’ type=’hidden’> </p> </div> <div class=»modal-footer»> <button type=»button» class=»btn btn-success» onclick=»save()»>Сохранить</button> <button type=»button» class=»btn btn-default» data-dismiss=»modal»>Закрыть</button> </div> </div> </div> </div> </div><script>function save(){ text=document.getElementById(«fruit»).value; id=document.getElementById(«fruitid»).value; document.getElementById(«id_»+id).innerHTML=text; save_fruit(id,text); $(‘#myModal’).modal(‘hide’); }function setdata(text,id){ document.getElementById(«fruit»).value=text; document.getElementById(«fruitid»).value=id;}</script>
savefruit.php
<?
mysql_connect(«localhost»,»root»,»»);
mysql_select_db(«ajax»);
mysql_query(«update `fruits` set `fruit`='{$_GET[‘text’]}’ where `id`='{$_GET[‘id’]}’»);
?>

Задания на одномерные массивы.
1. Заполнить массив числами от 1 до 100 и вывести его в консоль.
2. Заполнить массив числами от 100 до 1 и вывести его в консоль.
3. Заполнить массив числами от -50 до 50 и вывести его в консоль.
4. Заполнить массив случайными числами и вывести его в консоль.
5. Заполнить массив случайными числами и найти максимальное значение.
6. Заполнить массив случайными числами и найти минимальное значение.
7. Заполнить массив случайными числами и удалить из него все элементы в которых записано число 2.
8. Заполнить массив случайными числами и выполнить его сортировку.
9. Заполнить массив случайными числами и найти в нем все значения которые повторяются более одного раза.
10. Заполнить два массива случайными числами и найти значения которые не повторяются в обоих массивах. Если число находится в обоих массивах то его не нужно выводить. Вывести нужно только те значения которые есть только в одном массиве.
Задания на двумерные массивы.

Задание:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0
1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1

Большинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два числовых аргумента, но возвращающие логическое значение.