Мови програмування Лекції 5 -6
Форми в РНР Веб-програмування, здебільшого, являє собою обробку різних даних, введених користувачем, тобто, обробку форм. РНР – мова, що пропонує один з найпростіших способів обробки та розробки форм, що надходять від браузера. Справа у тому, що в мову на найнижчому рівні вбудовані всі необхідні можливості, що дозволяє не задумуватися над особливостями протоколу HTTP.
Передача параметрів сценарію lec_5_f 1. php
Тег INPUT Елемент INPUT є найбільш поширеним тегом, оскільки, за його допомогою реалізуються основні функції форм. Він дозволяє створювати всередині форми поля вводу рядків, імені файлу, пароля і т. д. Особливість тегу INPUT – він не має закриваючого тегу. Однорядкові поля вводу (lec_5_1. html) Даний тег створює поле вводу з максимально допустимою довжиною тексту maxlen та розміром size знакомісць. Якщо задано атрибут value, то у полі за замовчуванням буде відображатися вказаний рядок. Квадратні дужки вказують необов’язкові атрибути.
Тег INPUT Поле вводу пароля (lec_5_2. html) Будь-який серозний проект передбачає можливість авторизації. Звичайно, ім’я користувача можна ввести за допомогою звичайного текстового поля, але залишається питання, що роботи з паролем. Принцип роботи даного тегу точно такий же, як і текстового. Відмінність полягає у тому, що інформація, яка вводиться у полі не відображається, а замінюється “зірочками”. Не рекомендується встановлювати значення value з міркувань безпеки. Звичайно, у вікні браузера дане значення не відображається, але якщо переглянути HTML–код, то пароль буде відомим.
Тег INPUT Приховане текстове поле lec_5_3. html Для передачі службової інформації (про яку користувач навіть не повинен підозрювати) можуть використовуватися приховані поля. За допомогою таких полів, наприклад, можуть передаватися параметри настройки. Такі поля передаються серверу, але на веб-сторінці не відображаються.
Тег INPUT Незалежні перемикачі lec_5_4. html Часто, користувачеві, що заповнює форму в браузері, необхідно надати можливість вказати свої налаштування за допомогою вибору визначених значень. При цьому, приводяться самі ці значення, а поряд з ними розташовується невелике квадратне поле, у якому можна встановити, чи прибрати галочку. Якщо перемикач був ввімкнений на момент натиснення кнопки відправки даних, то сценарію буде передано параметр ім’я=значення. Якщо перемикач вимкнено, то сценарію взагалі нічого не буде передано (ніби перемикач відсутній). Перемикач може за замовчуванням бути ввімкненим, чи вимкненим. Для того, щоб він був ввімкненим вказується атрибут checked. Перемикач checkbox називається незалежним, оскільки, його стан не залежить від стану інших перемикачів checkbox. Таким чином, у одній формі можна одночасно вибрати декілька перемикачів.
Тег INPUT Залежні перемикачі lec_5_5. html Залежний перемикач, як і незалежний, може бути ввімкненим, чи вимкненим. При цьому перемикач radio є залежним, оскільки на формі може бути тільки один ввімкнений перемикач типу radio. При виборі одного перемикача всі однойменні залежні перемикачі автоматично вимикаються. У якості імені перемикачів сприймається значення атрибуту name.
Тег INPUT Кнопка відправки форми lec_5_4. html, lec_5_5. html Кнопка відправки слугує для відправки сценарію введених у форму значень. Його синтаксис наступний: Атрибут value визначає текст, який буде написано на кнопці. Атрибут name визначає ім’я кнопки і є необов’язковим. Якщо значення цього атрибуту не вказувати, то скрипту буде передано введені у форму значення і все. Якщо ж атрибут name для кнопки буде вказано, то додатково до даних форми буде відправлена пара ім’я=значення від самої кнопки.
Тег INPUT Кнопка RESET Окрім кнопки submit є ще кнопка reset, що обнуляє значення форми – встановлює для всіх елементів форми значення за замовчуванням. Бажано, щоб форма обов’язково містила таку кнопку. Це полегшує обробку даних, якщо було введено помилкові параметри.
Тег INPUT Кнопка відправки з індивідуальним малюнком Замість кнопки submit можна використовувати малюнок для відправки даних. При натисканні на цьому малюку відбудеться те ж, що при натисканні на кнопку. Однак, крім того, сценарію буде передано координати місця кліку по рисунку. Координати буде передано у форматі: ім’я. х=коор_Х, ім’я. y=коор_Y
Тег TEXTAREA Поле, що створюється тегом TEXTAREA, дозволяє вводити та відправляти не один рядок, а відразу декілька. lec_5_6. html Параметри cols та rows є необов’язковими, однак, їх варто вказувати. Перший з них задає кількість символів у рядку, а другий – кількість рядків у області. Атрибут wrap визначає, як буде виглядати текст у полі вводу. Virtual – справа від текстового поля виводиться смуга прокрутки. Текст, що вводиться користувачем, виглядає розбитим на рядки, а символ нового рядка вставляється при натисканні клавіші Enter. Physical – цей тип залежиться від браузера, у різних браузерах може поводити себе по різному. None – текст виглядає у полі у тому вигляді, у якому користувач його вводить. Якщо текст не поміщається у один рядок, з’являється горизонтальна смуга прокрутки.
Тег SELECT Списки з єдиним вибором lec_5_7. html При роботі з даними у вигляді списку потрібно передбачити можливість вибору (тег SELECT). Можна було б використовувати залежні перемикачі radio, але це не є раціональним (єдиний список займає набагато менше місця, аніж перемикачі). Варіанти вибору задаються тегами option. При відправленні форми сценарію буде надіслано значення value вибраного елемента списку. Атрибут name визначає ім’я параметра, котрий буде переданий сценарію. Якщо атрибут size рівний 1, то список буде випадаючим. У іншому випадку список буде займати n рядків та матиме смугу прокрутки. Значення, обране у списку за замовчуванням, можна вказати за допомогою атрибута selected для відповідного тега option. Атрибут value є необов’язковим. Якщо його не вказати, то буде передано рядок, включений у тег option.
Тег SELECT Списки множинного вибору lec_5_8. html За допомогою тегу SELECT можна створювати списки з множинним вибору. У таких списках можна обирати не один, а відразу декілька значень. Щоб створити список з множинним вибором, необхідно для тегу SELECT вказати атрибут multiple. Якщо користувач обере декілька варіантів, то сценарію будуть передані у формі ім’я=значення&… ім’я=значення
Передача даних Коли користувач натисне кнопку go, браузер передасть сценарію наступні параметри: 1. txt – значення текстового поля 2. pswd – значення поля вводу пароля 3. hid - значення прихованого поля 4. Параметри var 1 та var 2 будуть передані тільки, якщо відповідні їм перемикачі є активними (може бути передане одне з двох значень, обидва значення чи жодне з них) 5. state – значення групи незалежних перемикачів (буде передане одне зі значень – male 6. t-area – вміст текстової області 7. month – значення звичайного списку 8. month[ ] – значення множинного списку.
Передача даних Параметри txt, pswd, hid і t_area обробляється легко. Інтерпретатор створює для кожного параметра змінну з відповідним іменем. Наприклад, для відображення значення параметра txt достатньо написати echo “$txt”. Для перемикачів var 1 та var 2 ситуація складніша. Якщо перемикач не активний, то параметри взагалі не будуть передані на сервер. Відповідно, не буде створена глобальна змінна і при зверненні до неї ми отримаємо повідомлення, що змінна не існує. Тому, перед командою echo потрібно перевірити, чи існує така змінна. if (isset($var 1)) echo “var 1: $var 1”; if (isset($var 2)) echo “var 1: $var 2”; Параметр state (залежний перемикач) обробляється командою echo $state, оскільки, браузр передає тільки одне із значень. Так же обробляється параметр $month – це звичайний список без можливості множинного вибору, тому, його можна представити як набір з 12 залежних перемикачів.
Передача даних Найскладніше обробляти список з множинним вибором. При стандартному підході змінна $name буде містити тільки останнє значення (value. N). Однак, множинний список можна представити у вигляді масиву, а обробити його елементи можна за допомогою циклу foreach. Нам не потрібно навіть знати кількість переданих елементів списку. Попередньо потрібно заявити, що буде передаватися масив.
Поняття масиву l l l Масив – це впорядкований набір даних. Кожен елемент масиву має індекс чи ключ, що служить для однозначної ідентифікації елемента всередині масиву. У одному масиві не може бути двох елементів з однаковими індексами. У РНР довжину масиву не потрібно задавати при його оголошенні; довжина буде автоматично збільшена при додаванні нового елемента у масив. РНР дозволяє створювати масиви будь-якої складності безпосередньо у тілі програми (сценарію). Це корисно, у ситуації, коли потрібно створити масив, на основі деяких, не відомих раніше параметрів.
Поняття масиву Масив у РНР створюється за допомогою ключового слова array(). Він заповнюється певною кількістю розділених комою пар key=>value. Array ([key=>] value, …], де value – довільна змінна. Ключ має тип іnteger або string. За відсутності цілочисельного індекса ключ=0.
Поняття масиву Ініціалізація масиву (lec_5_1_mas. php): ( $People[0]=“Аня"; $People[1]=“Саша"; $People[2]=“Володя"; $People[3]=“Таня"; У квадратних дужках вказується ключ окремого елемента. Звернення до масиву здійснюється за іменем масиву та індексом елемента (як до окремих елементів, так і у циклі). for ($i=0; $i<3; $i++) echo "$People[$i] "; Якщо точна кількість елементів масиву невідома, то можна використовувати функцію count. for ($i=0; $i
Поняття списку Масиви, індексами яких є числа, що починаються з нуля без попусків, будемо називати списками. З технічної точки зору різниці між масивами та списками немає. Справа у тому, що можна створювати списки без вказання індексів – це здійснює РНР. При цьому, виключається ситуація, коли вказується вже існуючий індекс. Також, автоматичне створення масивів зручне при запису текстового файлу у масив для подальшої обробки. $People[]=“Аня"; (lec_5_2_mas. php) ( $People[]=“Саша"; $People[]=“Володя"; $People[]=“Таня";
Поняття списку При цьому РНР почне нумерацію з найменшого значення, що є незайнятим. Якщо змінна $People тільки ініціалізована, то нумерація розпочнеться з нуля. У подальшому, з кожним новим елементом масиву індекс буде збільшуватися на одиницю. Це якраз і є ситуація, коли точна кількість елементів масиву невідома. Тому, доцільно використовувати функцію count. Приклад – зчитування текстового файлу в масив. Функція fopen() використовується для відкриття файлу, функція feof() істинна, якщо досягнуто кінця файлу, а функція fgets() читає рядок з файла. У РНР можна додати як завгодно багато елементів до масиву, причому, вони додадуться у кінець.
Асоціативні масиви Масиви, індексами яких є числа, що починаються з нуля, називаються списками. Однак у РНР індексом масиву може бути і рядок. Причому, на цей рядок не накладається жодних обмежень: він може містити пробіли, спеціальні символи, також немає обмежень на довжину рядка. Масиви, індексами яких є рядки, називаються асоціативними. Індекси асоціативних масивів називаються ключами. Доступ до асоційованих масивів здійснюється так, як і до звичайних, і називається доступом за ключем. $People[“Smith”] = “John”; $People[“Piterson”] = “Piter”;
Інструкція list() Нехай маємо елемент, що складається з трьох елементів. $People[0]=”Іван” $People[1]=”Петро” $People[2]=”Микола” Припустимо, що нам потрібно передати значення всіх трьох елементів масиву, трьом змінним, відповідно, $Ivan, $Petro, $Mykola. list($Ivan, $Petro, $Mykola)=$People Можна: list($Ivan, , $Mykola)=$People
Інструкція array() Використовується для створення масивів. При цьому, вона дозволяє створювати пусті масиви. $A=array(); - створює пустий масив $A=array(“Іванов”=>”Іван”, “Петров”=>”Петро”); створює асоціативний масив $A=array(“Іванов”, “Петров”); - створює список з індексами, що нумеруються з нуля
Інструкція array() Використовується також для створення багатовимірних масивів. Тобто, можна створити масив, елементами якого будуть асоціативні масиви. Приклад, $A [“Ivanov”] = array (“name” => ”Ivanov I”, “age” => ” 25”, “email” => ”ivanov@ukr. net”); $A [“Petrov”] = array (“name” => ”Petrov P”, “age” => ” 33”, “email” => ”petrov@ukr. net”); Добути елементи масиву можна наступним чином: echo $A[“Ivanov”][“name”]; // виведе Ivanov I echo $A[“Ivanov”][“email”]; // виведе ivanov@ukr. net
Операції над масивами Видалення масивів: Un. Set($People); Використовується для звільнення пам’яті при дуже великих масивах.
Злиття масивів Злиття (конктенація) – це операція створення масиву, що складається з елементів декількох інших масивів. Злиття реалізується за допомогою оператора +. $A = array(“ 1”=>”first”, “ 2”=>”second”); $B = array(“ 3”=>”third”, “ 2”=>”fourth”); lec 6_1. php
Злиття масивів При злитті масивів, у яких містяться елементи з однаковими індексами (ключами), у результуючому масиві залишиться елемент першого масиву, причому на тому ж місці. Функція array_merge() З’єднує масиви, що передані їй у якості аргументів, у один великий масив. Якщо у масивах, що з’єднуються зустрічаються однакові ключі (ключ=>значення), то у результуючий масив записується пара ключ=>значення з масиву, що стоїть правіше, у списку аргументів функції array_merge(). Однак, це правило не стовується списків, тобто масивів з числовими індексами. У цьому випадку, елементи з індексами, що повторюються розташовуються у кінці результуючого масиву в будьякому випадку.
Сортування масивів Для сортування масивів РНР має досить багато функцій. Основними є: asort() i arsort() – сортування за значеннями ksort() – сортування за ключами sort() – сортування списку array_reverse() – “перевертання” масиву shuffle() – перемішування списку.
asort(), arsort() Функція asort() виконує сортування масиву за значеннями елементів. При цьому, вона розташовує елементи масиву таким чином, що їх значення ідуть в алфавітному порядку (якщо це рядок) чи за зростанням (якщо це числа). Функція arsort() виконує сортування у зворотньому порядку.
ksort(), krsort() Для сортування за ключами використовується функція ksort(). Сортування здійснюється як у попередньому випадку, але не за значеннями, а за ключами. Усі описані функції НЕ РОЗРИВАЮТЬ пари ключ=>значення.
Сортування списку Використовується функція sort(). Вона розриває пари ключ=>знчення, тому її потрібно використовувати тільки для списків. $List = array(“name”, ”Address”, ”Email”); sort($List) 0 =>Address 1 => Email 2 => Name
Обернення масиву. Перемішування списку Функція array_reverse() повертає масив, елементи якого розташовані у зворотному порядку, відносно вихідного масиву. Функція shuffle() розташовує значення результуючого списку у довільному порядку. Перед її викликом потрібно ініціалізувати генератор випадкових чисел, використовуючи функцію mt_srand().
Класи в РНР-програмі Для створення класів використовується ключове слово class. Клас є шаблоном для створення об’єктів. Він містить дані і методи для їх опрацювання. Для позначення наслідування використовується ключове слово extends.
Класи в РНР-програмі php class Cart { var $item //предмети function add_item($artnr, $num) //додати $num предметів $this->item[$artnr]+=$num; } function remove_item ($artnr, $num) // забрати предмети { if ($this->items[$artnr] > $num) { $this->items[$artnr]= $num; return true; } else { return false; } } } ? >
l. Клас cart містить асоціативний масив товарів та дві функції. Для доступу до змінних класу і функцій всередині класу використовується псевдозмінна $this. Об’єкти (змінні) класу створюються оператором new, а елементи масиву заносяться функцією: php функцією: l$cart = new Cart; l$cart->add_item("10", 1); l// АБО $cart->items = array("10" => 1); l? >


