Пишемо модуль міні новини для нашої cms

Я використовую Данвер. інструкція по установки є на офіційному сайті, так що якщо у Вас ще не варто локальний сервер, то поставте його, дуже потрібна річ (До речі, перепрошую що не згадав про нього = ()

Ну що ж, спробую пояснити логіку роботи нашого блогу. В адмін панелі ми додаємо яку нитку нову статтю, при завантаження головної сторінки нашого блогу, з'являється невеликий опис нашої статті (поста) нижче буде розташована кнопочка "читати далі" (Про думки про створення такої кнопки, можна почитати тут) Власне як буде працювати наш "модуль" При звернення сервера до файлу index.php підключається наш модуль (news.php) в якому визначена наступна логіка:

Пишемо модуль міні новини для нашої cms

Для початок нам знадобиться таблиця в базі даних, створимо її:

Далі по намальованій мною схемою, правимо файл index.php, на початку файлу вставляємо ось ці рядки

Для генерації html коду нам знадобиться шаблон, розмітка шаблону для новин береться з файлу index.html який ми верстали в попередній статті

Ось вирізка з файлу index.html

Тут ми бачимо повторюється блог

Це і є наш шаблончик міні новин, копіюємо його, і вставляємо в файл news.html який збережемо в папці templates. Наступним кроком буде заміна тексту на ідентифікатори. ось готовий код шаблону news.html

Всі файли для виконання кроку "підключення модуля news.php" у нас є, так що підключаємо. Для цього треба внести в index.php такі зміни, перед

вставляємо наступний код

І останнім нашим кроком, є підключення шаблону index.html. так як цей крок ми зробили в попередній статті то його пропускаємо, але! Нам ще потрібно відредагувати index.html. Так що виправляємо ось цей код

Все, наш модуль готовий. При заповнення бази даних, новини будуть виводиться на екран, ось скрін

update: Якщо після запуску Ви спостерігається не адекватну картину у вигляді каракозябр, або незрозумілих символів в верху (типу ось таких - п »їп" ї), то переходите ось до цього посту "Правильна кодування у нашого движка". Ця проблема пов'язана з кодуванням, так що її, просто, необхідно змінити, і все =)

Розширення ваших файлів в папці templates - HTM, а повинні бути HTML. Або міняйте розширення файлів, або в коді, замість (файл news.php)

$ Sm_read = file ( "templates / news.html"); //. підключаємо шаблон

$ Sm_read = file ( "templates / news.htm"); //. підключаємо шаблон

Так само доведеться переправити index.php поміняти там рядок

Але мій Вам рада, краще поміняйте розширення з HTM на HTML, інакше далі за матеріалом Вам доведеться всюди робити поправки, а це зайвий геморой.

Так само я помітив що в файлі index.php рядки

// Поки що ми вводимо значення змінних в ручну
$ Header_title = "Документ HTML";
$ Header_metaD = "Опис сторінки";
$ Header_metaK = "Ключові слова сторінки";

Це не правильно. Рядок

Повинна знаходиться в самому низу файлу index.php (ну природно перед "?>" =))

Ну не знаю, зараз побачив цей код в SVN, волосся стало дибки.

замість
$ Date = date ( "d / m / Y H: i");

написано:
$ Date_day = date ( "d"); // Визначаємо день
$ Date_month = date ( "m"); // Визначаємо місяць
$ Date_year = date ( "Y"); // Визначаємо рік
$ Date_time = date ( "H: i"); // Визначаємо годинник і хвилини
$ Date_comm = $ date_day. "/". $ Date_month. "/". $ Date_year. "". $ Date_time; // Склеїмо всі змінні в одну

Хоча навіть конкатенація працює на багато порядків швидше.

набагато швидше працює:
(Int) $ id_comm;

варто:
$ Txt_comm = str_replace ( "\\ n", "
", $ Txt_comm); // Замінюємо переноси рядки на тег

// Позбавляємося від лапки
$ Id_comm = str_replace ( "\ '", "# 039", $ id_comm);
$ Txt_comm = str_replace ( "\ '", "# 039", $ txt_comm);
$ Author_comm = str_replace ( "\ '", "# 039", $ author_comm);
якщо проганяли раніше через htmlspecialchars можна було прапор задати щоб він лапки прибрав, якщо це типу захист від sql - injection, то потрібно mysql_real_escape_string, лапками sql-injection не закінчується.

написано
$ Sm_read = file ( "templates / news.html"); //. підключаємо шаблон
$ Sm_read = implode ( "", $ sm_read); // функція file () повертаємо масив, тому склеюємо його
Робиться однією функцією ЕМНІП file_get_contents

Ніхто не сперечається, що у моїх прикладів дуже багато за все не хорошого. Я не одноразово говорив, що код не досконалий. і, що писав все це в блог не для того що б навчити. а для себе самого. Кому цікаво, читають, повторюють, а після розуміють, що код далекий не ідеальний.
Даний движок лише одна з моїх (і моїх читачів) ступенів в програмування, не більше того.

Ну не знаю, зараз побачив цей код в SVN, волосся стало дибки.

Буває =) чесно кажучи, сам лякаюся коли бачу код своєї попередній роботи =) Але прибирати даний матеріал, думаю зайве, хтось дивлячись на цей приклад все ж може чогось навчиться. А якщо є голова на плечах, то дана інформація буде лише стартом, а не еталоном
P.S. Але це лише моя думка про цінність матеріалу на моєму блозі.

Ви звичайно все правильно написали, матеріалу має бути багато і на різний рівень.
Сам регулярно дивлюся інформацію мало не про кожну функції в офіційній документації.
Моя думка, що краще спочатку вчитися правильно, довго перевчатися :(

На практиці знаю, що вчиться відразу правильно писати, можна мозок зламати. (Не рахуючи звичайно якщо Ви здобуваєте освіту в даній області.) Це зараз я розумію як працюють, наприклад ті ж неймспейси. З рівнем який у мене був рік тому, я б давно кинув спроби навчиться програмувати.

Ну не знаю, зараз побачив цей код в SVN, волосся стало дибки.

До речі, дивно, що Ви знайшли код в SVN. Я як бе вже давно не веду роботи по поліпшенню RS-BLOG'а

У себе в продакшн побачив :(

Чим Ви займаєтеся якщо не секрет?

ось така помилка що це базу прописую правильно

Однозначно проблема в БД. Якщо вірити помилку проблема в паролі.
У Вас є phpmyadmin? Пригадується подібна помилка, коли mysql сервер визначав, що створено два користувача root. Таке відбувалося при не коректною перевстановлення mysql сервера.

і що тепер робити що корректіривать

Так у Вас є phpmyadmin? Якщо є зайдіть на нього. Якщо там така ж помилка, то потрібно думати в бік скидання пароля у root. А якщо немає такої помилки, то я не знаю в чому може бути проблема.

Дякую вам за ваші статті, можете підказати як виводити не останні записи, а випадкові?

Привіт, чи не підкажете в чому справа, сайт на hostline.ru, створив піддомен головного сайту, поставив цей движок (даної статті), а у мене білий екран :( пхп в піддомені включено.

Спробуйте у index.php. в самому вгорі поставити ось ці два рядки:

Думаю це допоможе побачити не білий екран, а помилку.

А чому Ви не використовуєте функцію file_get_contents ()
Думаю такий код буде менше і зручніше, він виконує відразу 2 функції file () і implode =)


Якщо не правий, виправте мене)

Якщо не правий, виправте мене)

Ви маєте рацію. Коли писав код не знав про існування даної функції =)

У файлі menu.html на засланні прямий слеш, на мій погляд, є зайвим.

після закінчення процедур, описаних в даній статті, тестую проект, (в БД записів немає) отримую порожню сторінку ( "Немає записів в базі даних"), поки все нормально, проте в самому верху сторінки (Warning: mysql_fetch_array () expects parameter 1 to be resource, boolean given in Z: \ сервер \ наш блог \ www \ moduls \ news.php on line 5). що це означає?

Що передається параметр у функцію mysql_fetch_array () не є ресурсом (функція mysql_query повернула булевий результат, а не ресурс, як очікувалося). Таке відбувається, зазвичай, через невірно складеного запиту. Ну або будь-яких проблем з БД.

Олексій, підкажіть будь ласка по БД (я створив БД і таблицю але нічого не відображається), після того як я поставив сайт на хостинг, рядок $ host = "localhost"; повинна змінитися? якщо так, то що треба написати замість localhost

У більшості випадків у хостера БД лежить на тій же машині що і сервер, тому змінна host повинна мати значення localhost (Повторюся, в більшості випадків)

$ News. = $ Edd_tamp; - це ж виходить не оголошена змінна? її не треба через IsSet?

Доброго часу всім!
Коротше хлопці запарився я з цієї кодуванням що не зробиш "краказябри" з. чесно кажучи.
Вирішив я цю проблему зберігаю все в utf-8 все норм працює і не треба не де проставляти windows-1251 годину на скільки мені відомо всюди за замовчуванням utf-8 йде. Та й Notepad ++ і NetBeans теж з utf-8 працюють особисто у мене так не знаю у кого як.
Тільки що заради інтересу створив на Денвері ще один проект, крім того над яким працюю, все зберіг в utf-8, все відмінно все норм працює не якихось "краказябр".
Так як я вирішив цю проблему, просто створив в директорій проекту на якому працюю, файл .htaccess він так і називається без всякого розширення (раптом якщо хто не знає, то є і назва і розширення .htaccess) і прописав наступні рядки (раптом якщо знову хто не знає).

Так що ось так хлопці може кому допоможе.
Удачі Всім і спасибі ВЕЛИЧЕЗНЕ Олексію!

Олексій!
Ось все виводить відмінно, але в кінці сторінки, тобто в самому низу пише:

лається на рядок 33

че за проблема може бути.
Спасибі заздалегідь.

при додавання поста видає "Warning: Can not modify header information - headers already sent by (output started at Z: \ home \ bd.uz \ www \ index.php: 10) in Z: \ home \ bd.uz \ www \ index .php on line 25 "при кодуванні utf-8, при оновленні сторінки список постів відображається. При кодуванні ansi помилки не видає але не працює з рус текстом

Так у Вас файл в UTF-8? Напевно UTF-8 з BOM. Пере збережіть файл без BOM

Схожі статті