Збірник скриптів на php

Збірник скриптів на PHP

Голосування на РНР

Йтиметься про практичну роботу, яку ми з Вами разом проведемо і зрозуміємо. Голосування - це засіб дізнатися думку Ваших відвідувачів з різних питань. Самі питання можуть бути як корисними так і марними - цю тему ми розглядати не будемо. А для нашого прикладу візьмемо просте питання - Ваша думка про сайт? Припустимо, у Вас наприклад з'явилося бажання дізнатися, що думає більшість відвідувачів Вашого сайту. Варіанти відповідей надамо наступні:

Продовжити список Ви можете вже самі. Для роботи нам знадобиться деяке знання основ HTML, РНР версії 3 або вище і три файли. Три - тому що в першому будемо запитувати відвідувача про його думку, в другому зберігати результати, і в третьому - виводити їх і обробляти. Власне кажучи, немає потреби розносити всі ці функції в різні файли, але для простоти і зручності ми зробимо так. Перший файл матиме ім'я index.phtml, другий - golos.txt і третій - golos.phtml. Створити їх для Вас не складе особливих труднощів, і це те, з чого ми і почнемо. Коли Ви все зробите і заллєте готові файли до себе на сервер, не забудьте встановити атрибути файлу golos.txt таким чином, що б він був доступний для запису. Зазвичай, це атрибути 666 або 777. Зробити це можна в основному за рахунок Вашого FTP менеджера. Якщо немає, скористайтеся IE 5.0 і вище в режимі FTP, тоді потрібно просто подивитися властивості вже залитого на сервер файлу та установити всі галочки.







Ваша думка про сайт?
Круто!
нормально
Мені все одно
Це щось страшне!

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

Ось і дійшли ми до самого головного і цікавого. З самого початку я приведу весь код скрипта, а далі дам пояснення в його застосуванні і роботі.

if ($ answer! = "") <
echo "
Спасибі, Ваша думка врахована: ";
$ A [$ answer] ++; $ N ++;

Знову ж хочу попередити, що код не найкращий і простий, але зате логічний і працездатний. Варіантів реалізації маса, але мені не хотілося брати щось вже готове, і тому я, не особливо дбаючи про удобочитаемости і дизайні (це Ви і самі можете зробити :-), написав свій власний код, що зайняло разом з настроюванням і налагодженням буквально півгодини. Скрипт орієнтований на конкретно поставлене завдання, але Вам нічого не варто переробити його під своє кількість відповідей на питання. Нагадаю - наша головна задача на практичному прикладі навчитися створювати свої власні системи опитування та голосування. Тепер про те, як все працює.У перших рядках ми визначаємося з ім'ям файлу результатів і зчитуємо результати голосування в масив даних з ім'ям $ a. Далі йде цикл, в якому ми обробляємо отриманий масив таким чином, що б він не містив символів переведення каретки (введення рядка) і прогалин: $ a [$ i] = trim (str_replace ( "", "", $ a [$ i ])); Паралельно ведемо підрахунок кількості тих, хто проголосував, що не складно так як це просто сума значень нашого масиву. Видаляти символи введення та пробілу необхідно для перетворення лічених даних з символьного рядка в ціле число. Це можна зробити різними методами, але в цьому випадку просто віддаляються символи "" (що в РНР відповідає перекладу рядка) і обрізаються прогалини з початку і з кінця рядка функцією trim (). Результати заносяться назад в масив, але вже у вигляді цілочисельного значення, яке можна скласти, збільшити, ділити і т.д. Нас буде цікавити збільшення на одиницю певного елементу масиву, номер якого (його індекс) зберігається в змінній $ answer, яка в свою чергу, прийшла до нас у спадок з форми.

Після обробки отриманого масиву скрипт повинен прийняти рішення щодо обраного відвідувачем режиму - або просто показати результати, або додати голос у відповідну позицію. Досягається це перевіркою змінної $ answer, в якій зберігається значення обраного відвідувачем сайту варіанта голосування. Якщо ця змінна порожня, значить була натиснута кнопка показу результатів, і скрипт пропустить блок підрахунку голоси. Якщо змінна $ answer не порожня, в ній міститься номер обраного варіанту голосування, а значить, ми можемо просто збільшити на одиницю значення потрібної осередку масиву: $ a [$ answer] ++; Крім того потрібно збільшити значення кількості тих, хто проголосував для того, що б врахувати голос тільки що проголосував людини.

Коли потрібна комірка масиву збільшена, прийшла пора записати результати в файл. Для цього спочатку відкривається з'єднання з файлом: $ fp = fopen ($ file, "w"); Символ w вказує на необхідність очищення вмісту файлу перед записом. Якщо з'єднання не встановлено, виводиться повідомлення про помилку, якщо встановлено - попередньо відформатований значення змінної $ rez записується в файл. Змінна $ rez формується таким чином: значення всіх осередків масиву (крім найпершої - нульовий, яка не використовується) склеюється таким чином, що б роздільником був символ перекладу рядка. Це дозволить в подальшому коректно вважати отриманий таки чином файл. Для склеювання рядків у РНР застосовується роздільник - точка. Зверніть увагу, що наш масив з целочисленного перейшов в розряд символьних, і може використовуватися і оброблятися будь-яким доступним РНР способом.

І нарешті - прийшла пора вивести результати на екран. Не потрібно забувати про переведення рядка в HTML, що дещо інше, ніж в РНР. Робиться це простим виводом на екран (а значить і в код HTML) тега
. Коли відформатовані результати виведено, скрипт закінчує свою роботу. Цей блок можна організувати теж по-різному, а застосований тут метод найпростіший. Найкраще вкласти результати і пункти в табличку, тоді виведена інформація буде виглядати більш красиво. Якщо Ви звернули увагу, ця частина скрипта виконується в будь-якому випадку, як і зчитування даних з файлу. Таким чином досягається гарантований вивід результатів на екран.

Схожі статті