ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.08.2020
Просмотров: 1887
Скачиваний: 3
$mass ["Один"] = 1;
$mass ["Два"] = 2;
$mass["Три"] = 3;
echo $mass ["Один"]; //Виведе число 1
Для ініціалізації асоціативних масивів можна також використовувати інструкцію array():
$mass = array ("Один" => 1, "Два" =>, "Три" => 3);
echo $mass["Один"]; //виведе число 1
Функції array_keys() і array_values() дозволяють одержати всі ключі і всі значення асоціативного масиву відповідно.
Припускається використання багатовимірних масивів. Наприклад, кожному елементу одномірного масиву можна привласнити інший масив, у результаті одержимо двовимірний масив:
$A["Ivanov"] = array("name"=>"Іванов И.И.", "age"=>"25",
"email"=>"ivanov@mail.ru");
$A["Petrov"] = array("name"=>"Петров П.П.", "age"=>"34",
"email"=>"petrov@mail.ru");
$A["Sidorov"] = array("name"=>"Сидоров С.С.", "age"=>"47",
“email"=>"sidorov@mail.ru");
4.4 Оператори
Оператори дозволяють виконувати різні дії зі змінними, константами і виразами. Далі наведені основні групи операторів.
Арифметичні оператори
Таблиця 4.1
|
+ |
Додавання |
|
- |
Віднімання |
|
* |
Множення |
|
/ |
Ділення |
|
% |
Обчислення залишку по модулю (наприклад: 5 % 2=1) |
Порозрядні оператори
Ця група операторів працює з бітовими зображеннями значень цілочисельних операндів
Таблиця 4.2
|
& |
Порозрядна кон’юнкція (AND) |
|
| |
Порозрядна диз’юнкція (OR) |
|
^ |
Порозрядне виключне АБО (XOR) |
|
~ |
Порозрядне заперечення (NOT) |
|
<< |
Зсув вліво бітового значення лівого цілочисельного операнда на кількість розрядів, що дорівнюють значенню правого цілочисельного операнда |
|
>> |
Зсув вправо бітового значення лівого цілочисельного операнда на кількість розрядів, що дорівнюють значенню правого цілочисельного операнда |
Логічні оператори
Таблиця 4.3
|
OR або || |
АБО (диз’юнкція) |
|
XOR |
АБО (виключна диз'юнкція) |
|
AND або && |
І (кон’юнкція) |
|
! або NOT |
НЕ (заперечення) |
Оператори цієї групи, на відміну від порозрядних, працюють із логічними змінними (boolean) і використовуються для побудови логічних виразів.
Оператори рівності
Таблиця 4.4
|
Приклад |
Назва |
Результат |
|
$a==$b |
Перевірка рівності |
Істина, якщо $а й $b рівні |
|
$а != $b |
Перевірка нерівності |
Істина, якщо $а й $b не рівні |
|
$а === $b |
Перевірка ідентичності |
Істина, якщо $а й $b рівні й мають однаковий тип |
Оператори порівняння
Оператори порівняння (табл. 4.5), як і логічні оператори, дозволяють управляти логікою програми й приймати рішення при порівнянні двох і більше змінних.
Таблиця 4.4
|
Приклад |
Назва |
Результат |
|
$a<$b |
Менше |
Істина, якщо змінна $а менше $b |
|
$a>$b |
Більше |
Істина, якщо змінна $а більше $b |
|
$a <= $b |
Менше або дорівнює |
Істина, якщо змінна $а менше або дорівнює $b |
|
$a >= $b |
Більше або дорівнює |
Істина, якщо змінна $а більше або дорівнює $b |
|
($a=12)?5: -1 |
Тернарний оператор |
Якщо змінна $а дорівнює 12, вертається значення 5, а якщо не дорівнює — вертається 1 |
Зверніть увагу: оператори порівняння призначені для роботи тільки із числовими значеннями.
Інкремент і декремент
-
$a++ повертає старе значення $a і збільшує $a на 1
-
++$a збільшує $a на 1 і повертає нове значення $a
-
$a-- повертає старе значення $a і зменшує $a на 1
-
-і$a зменшує $a на 1 і повертає нове значення $a
Оператори присвоєння
Для присвоєння змінній нового значення використовується оператор "=":
$a = $b + $c - 127;
Також існують скорочені оператори присвоєння (+=, -=, /=, *=, %=):
$a = $a + 1; рівнозначно $a += 1;
Логічний оператор if ...else
Оператор if дозволяє формувати структури, що розгалужуються. Існує декілька форм оператора
a)if (вираз) {блок операторів для виконання}
б) if (вираз) {блок1} else {блок2}
в) if (вираз1) {блок1}
elseif (вираз2) {блок2}
else {блок3}
Робота оператора не вимагає пояснень, оскільки аналогічні конструкції присутні в багатьох мовах програмування.
Приклад:
<?php
if($a>$b ) { print "a більше b"; $c=$b; }
elseif($a==$b) { print "a дорівнює b"; $c=$a; }
else { print "a менше b"; $c=$a; }
?>
Оператор switch
Оператор switch (перемикач) зручний, коли потрібне значення змінної або виразу порівнювати з певними величинами й виконувати той або інший фрагмент коду залежно від результатів порівняння. Приклад:
<?php
$x=2;
switch($x){
case 1:
echo"x дорівнює 1";
break;
case 2:
echo"x дорівнює 2";
break;
case 3:
echo"x дорівнює 3";
break;
}
?>
Оператор циклу із передумовою
Синтаксис оператора
While ( логічний вираз ){тіло циклу }
Цикл продовжує виконуватися, поки логічний вираз залишається правдивим. Якщо логічний вираз з самого початку має значеня false, тіло циклу жодного разу не виконається.
Приклад:
<?
//ця програма надрукує всі парні цифри
$i = 1;
while ($i < 10) {
if ($i % 2 == 0) print $i;
// друкуємо цифру, якщо вона парна
$i++;
// і збільшуємо $i на одиницю
}
?>
Оператор циклу з післяумовою
На відміну від циклу while, цей цикл перевіряє значення виразу не до, а після кожного проходу. Таким чином, тіло циклу виконується хоча б один раз. Виглядає оператор так:
do {
тіло циклу;
} while(логічний вираз);
Універсальний цикл for
Цей цикл дозволяє вказати явно закон зміни параметрів циклу. Формат конструкції такий:
For(ініціалізуючі_команди;умова_виходу із циклу; команди_після_проходу){тіло_циклу;}
Приклад:
<?php
// друкуємо парні числа від 0 до 8
for ($i=0; $i<10; $i++)
{ if ($i % 2 == 0) print $i;}
?>
Якщо тіло циклу не містить команд або містить тільки одну команду, фігурні дужки можна не писати.
4.5 Функції РНР
Функції використовуються для неодноразового виконання однієї й тієї ж послідовності дій, але над різними вихідними даними й у різних місцях скрипта. Функції бувають користувальницькими й системними. Користувальницькі функції (як свідчить назва) програміст пише самостійно. Системні функції завжди доступні з будь-якого місця скрипта й оголошувати їх не треба. У старих версіях PHP функція повинна була бути оголошена до першого використання, але в PHP версії 4.3 і вище порядок оголошення й використання функції може бути довільним. Синтаксис користувальницької функції
function Ім'я_функції (параметр1, параметр2, ... параметр)
{ Тіло функції
return "значення, що повертає_ функція";
}
Для передачі результату роботи користувальницьких функцій в основну програму (скрипт) використовується конструкція return. Якщо функція нічого не повертає, конструкцію return не вказують. Конструкція return може повертати все, що завгодно, у тому числі й масиви.
Наведемо приклади використання користувальницьких функцій:
<?php
function funct()
{ $number = 123;
return $number;
}
$a = funct();
echo $a;
?>
У розглянутому прикладі функція funct повертає за допомогою конструкції return число 123.
Перелік системних функцій можна знайти в спеціальних довідниках. Для наших завдань буде потрібно лише декілька функцій у контексті взаємодії з MySql, які будуть розглянуті в наступному розділі.
5 ВЗАЄМОДІЯ PHP І MYSQL
5.1 РНР функції для роботи з MySql
Однією з найважливіших особливостей РНР є зручність взаємодії з базами даними. Зокрема, для взаємодії з MySQL нам будуть потрібні такі функції:
mysql_connect(string hostname, string username, string password);
Створити з'єднання з MySQL.
Параметри:
Hostname - ім'я хоста, на якому перебуває база даних.
Username - ім'я користувача.
Password - пароль користувача.
Функція повертає параметр типу int, який більше 0, якщо з'єднання відбулося успішно, і дорівнює 0 у протилежному випадку.
mysql_select_db(string database_name, int link_identifier);
Вибрати базу даних для роботи.
Параметри:
Database_name - ім'я бази даних.
link_identifier - ідентифікатор з'єднання, що отримано у функції mysql_connect. (параметр необов'язковий, якщо він не вказується, то використовується ID від останнього виклику mysql_connect).
Функція повертає значення true або false
mysql_query(string query, int link_identifier);
Функція виконує запит до бази даних.
Параметри:
query - рядок, що містить запит
link_identifier - див. попередню функцію.
Функція повертає ID результату або 0, якщо сталася помилка.
mysql_result(int result, int i, column);
Функція повертає значення поля в стовпці column і в рядку i.
mysql_fetch_row ($result);
Функція дозволяє одержати доступ до даних після виконання запиту SELECT.
Параметри:
$result результат виконання mysql_query()
Функція повертає набір значень у вигляді одновимірного масиву, що являє собою один рядок із двовимірного масиву $result. Перший виклик функції повертає перший рядок двовимірного масиву $result, а кожний наступний – чергову. Як індекси однвимірного масиву використовуються порядкові номери елементів. Нумерація починається з нуля.
mysql_fetch_array ( $result)
Те ж, що й попередня функція, тільки як індекси масиву використовуються імена полів таблиці.
mysql_close(int link_identifier);
Функція закриває з'єднання з MySQL.
Параметри:
link_identifier - див. вище.
Функція повертає значення true або false.
mysql_num_rows ( $result)
Параметри:
$result результат виконання mysql_query()
Функція повертає кількість рядків двовимірного масиву $result.
Розглянемо тепер декілька прикладів скриптів, що взаємодіють з MySQL. Скрипти будуть звертатися до бази даних library, розглянутої в попередніх розділах. Створимо новий хост test.ua. Для цього створимо папку test.ua за адресою c:/webservers/home/ (якщо Денвер установлений у кореневому каталозі диска С). Потім створюємо папку www у папці test.ua і надалі будемо складати в цю папку всі файли прикладів.
5.2 Виведення даних з таблиці
Наберемо в блокноті текст скрипта й збережемо його за адресою
c:/webservers/home/test.ua/www:
<html>
<body>
<h2> Список читачів </h2>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("library",$db);
$result = mysql_query("SELECT * FROM reader",$db);
while ($myrow = mysql_fetch_row($result))
{echo $myrow[1],$myrow[2].'<br>';}
?>
</body>
</html>
Далі, запускаємо Денвер і набираємо в адресному рядку браузера http://test.ua /readers.php. У результаті у вікні браузера одержимо список читачів
Список читачів
Волков І. вул. Леніна 47
Жуков І. вул. Гоголя 21
Зайцев О. вул. Лісова 28
Медведєв П. вул. Задніпровська 45
Козлов Н. вул. Будівельників 56
Биков Р. вул. Гоголя 58
Тарганов Г. вул. Дзержинського 81
Клопов Є. вул. Воронезька 64
Комаров К. вул. Ювілейна 68
Блохін А. вул. Леніна 55
Розглянемо докладніше команди скрипта. У рядку
$db = mysql_connect("localhost", "root");
відбувається підключення до сервера MySQL. Параметр localhost свідчить про те, що сервер MySQL установлений на тому ж комп'ютері, що й Webserver. Параметр root відповідає користувачеві із правами адміністратора, пароль у цьому випадку не потрібний. Надалі ім'я користувача й пароль треба змінити. Змінна $db – це ідентифікатор з'єднання.
У рядку
mysql_select_db("library",$db);
вибирається база даних library.
У рядку
$result = mysql_query("SELECT * FROM reader",$db);
виконується запит на вибірку всіх полів з таблиці reader. Змінна $result набуває результатів запиту у формі двовимірного масиву. Далі відкривається цикл і функція mysql_fetch_row($result) по черзі вибирає рядки з $result і формує щоразу одновимірний масив $myrow.
У тілі циклу відбувається вивід першого й другого елементів масиву $myrow, що відповідає полям Прізвище й Адреса таблиці reader. Цикл триває доти, поки не буде прочитаний останній запис із $result.
Замість функції mysql_fetch_row() можна використовувати функцію mysql_fetch_array(). У цьому випадку у якості індексів масиву $myrow використовуються імена полів і цикл матиме такий вигляд
while ($myrow = mysql_fetch_array($result))
{echo $myrow['fio'],$myrow['addres'].'<br>';}
Перепишемо тепер скрипт таким чином, щоб дані виводилися в таблицю. Зверніть увагу на те, як теги HTML інтегровані в PHP код.
<html>
<body>
<h2> Список читачів </h2>
<?php
$db = mysql_connect("localhost", "root") or die("Неможливо з'єднатися із сервером");
mysql_select_db("library",$db)or die ("Неможливо вибрати базу даних");
$result = mysql_query("SELECT * FROM reader",$db)or die("Запит не виконаний");
echo "<table border=1>\n";
echo "<tr><td>Прізвище</td><td>Адреса</tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td>%s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2]);
}
echo "</table>\n";
?>
</body>
</html>
У скрипт також додані повідомлення, що сигналізують про збої на певних етапах роботи. Крім того, замість команди висновку echo використовується більш гнучкий оператор висновку printf(). Результат роботи скрипта представлений нижче.
Список читачів
-
Прізвище
Адреса
Волков І.
вул. Леніна 47
Жуков І.
вул. Гоголя 21
Зайцев О.
вул. Лісова 28
Медведєв П.
вул. Задніпровська 45
Козлов Н.
вул. Будівельників 56
Биков Р.
вул. Гоголя 58
Тарганов Г.
вул. Дзержинського 81
Клопов Є.
вул. Воронезька 64
Комаров К.
вул. Ювілейна 68
Блохін А.
вул. Леніна 55
Наступні приклади демонструють взаємодію з базами даних через HTML форми.
5.3 Додавання даних у БД
Розглянемо приклад додавання нового запису в таблицю book через HTML форму. Спочатку створимо файл add_book.html, що дозволяє вносити інформацію про книгу у форму.
<HTML>
<TITLE> Додавання книги</TITLE>
<HEAD>
</head>