Въведение в PHP и MySQL

Синтаксисът на PHP много наподобява този на C или Perl. Хора, запознати с програмирането, много бързо могат да започнат да пишат програми на PHP. В този език няма строга типизация на данните и отпада необходимоста от действията по заделяне/освобождаване на памет.Програмите, написани на PHP, са достатъчно лесночитаеми. Написаният PHP - код е зрително лесно разбираем и запомнящ се, за разлика от Perl-програмите.


Въведение в PHP и MySQL.
Източници на информацията.

Основни източници - ръководство по PHP (www.php.net) и MySQL (www.mysql.com).

Какво е PHP?

PHP - скриптов език (scripting language), вграждащ се в HTML, който се интерпретира и изпълнява на сървъра. Пример:

<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Здравей, както виждаш и това вече го можеш!"; ?>
</body>
</html>

След изпълнение на скрипта получаваме страница, на която ще бъде написано:

Здравей, както виждаш и това вече го можеш!

Основна разлика от CGI-скриптовете, написани на други езици, като Perl или C - е, че в CGI-програмите Вие сами пишете изходния HTML - код, а използвайки PHP - вграждате своята програма в готовата HTML-страница, използвайки отварящите и затварящите тагове(в примера <?php и ?>).

Разликата между PHP и JavaScript, се състои в това, че PHP-скрипта се изпълнява на сървъра и резултата от работата се предоставя на клиента, докато JavaScript кода напълно се предоставя на клиентската машина и само там се изпълнява.

Любителите на Internet Information Server ще открият, че PHP много прилича на Active Server Pages (ASP), а тези на Java ще кажат, че PHP прилича на Java Server Pages (JSP). И трите езика позволяват вграждане на код, изпълним на Web-сървъра, вътре в HTML страница.

Възможности на PHP.

С няколко думи - на PHP може да се направи всичко, което може да се направи със CGI-програмите. Например: обработка на данните от формата, генериране на динамични страници, получаване и изпращане на cookies.

Освен това в PHP е включена подръжка на много бази данни (databases), което прави писането на Web-приложения с исползуване на БД изключително опростено.

Ето непълния списък от поддържани БД:

Adabas D InterBase Solid
dBase mSQL Sybase
Empress MySQL Velocis
FilePro msSQL-odbc Unix dbm
Informix PostgreSQL Oracle

В добавка към всичко това PHP разпознава протоколите IMAP, SNMP, NNTP, POP3 и даже HTTP, а така също има възможност за работа със сокети (sockets) и да комуникира с други протоколи.

Кратка история на PHP.

За начало на PHP може да се счита есента на 1994 год., когато Rasmus Lerdorf решава да разшири възможностите на своята Home-page и написва неголям интерпретатор за изпълнение на по-простите задачи. Този интерпретатор готов в началото на 1995 година с названието Personal Home Page Tools. Възможностите му са ограничени - разпознавал опростен език и няколко макроса.

В средата на 1995 година се появява втора версия, с названието PHP/FI Version 2. Приставката FI - е присъединена от друг пакет на Rasmus, който умее да обработва форми (Form Interpritator). PHP/FI се компилира в Apache и използва стандартно API Apache. PHP скриптовете се оказали по-бързи от аналогичните CGI - скриптове.На сървъра не било необходимо да поражда нов процес. Езикът PHP по възможности започнал да доближава Perl, най-популярният език за написване на CGI-програми. Добавена е подръжка на много от известните БД (например, MySQL и Oracle). Интерфейсът към GD - библиотеката, позволявал генериране на картинки на лету. От този момент започва широкото разпространение на PHP/FI.

В края на 1997 Zeev Suraski и Andi Gutmans решават да пренапишат ядрото, с цел коригиране грешките на интерпретатора и повишаване скоростта на изпълнение на скриптовете. На 6 юни 1998 година излиза нова версия, която е наречена PHP 3.

До лятото на 1999 година PHP 3 е включен в няколко комерсиални продукта. По данни на NetCraft до ноември 1999 PHP се използва в повече от 1 млн. домейна.

Защо да изберем PHP ?

На разрабтващите Web-приложения, не е необходимо да бъде обяснявано, че web-страниците - не са само текст и картинки. Сайтът достоен за внимание е длъжен да подържа някакво ниво на интерактивност с потребителите: искане на информации, продажба на продукти, конференции и т.н. Традиционно всичко това се реализира от CGI-скриптовете, написани на Perl. Но CGI- скриптовете са лошо мащабирани. Всяко ново CGI запитване, изисква от ядрото пораждане на нов процес, а това отнема процесорно време и затормозява оперативната памет. PHP предлага друг вариант - той работи в часта Web-сървър и по това прилича на ASP от Microsoft.

Синтаксисът на PHP много наподобява този на C или Perl. Хора, запознати с програмирането, много бързо могат да започнат да пишат програми на PHP. В този език няма строга типизация на данните и отпада необходимоста от действията по заделяне/освобождаване на памет.

Програмите, написани на PHP, са достатъчно лесночитаеми. Написаният PHP - код е зрително лесно разбираем и запомнящ се, за разлика от Perl-програмите.

Какво е MySQL.

MySQL - компактен многопоточен сървър за БД. MySQL се характеризира с голяма скорост , устойчивост и лекота в използването.

MySQL е разработен от компанията TcX за вътрешни нужди, които се заключават в бързата обработка на много големи бази данни. Компанията отбелязва, че използва MySQL от 1996 година на сървър с повече от 40 БД, които съдържат 10,000 таблици, от които повече от 500 имат повече от 7 милиона реда.

MySQL е идеално решение за малки и средни приложения. Най-пълно разкриване на възможностите на сървъра, се проявяват на Unix-сървъри, където многопоточната подръжка, дава значителен прираст на производителността .


Възможности на MySQL.

MySQL подържа езика SQL в стандарта ANSI 92, и освен това има много разширения в този стандарт, които ги няма в друга СУБД.

Кратък преглед на возможностите на MySQL.

Поддържа неограничено количество потребители, едновременно работещи с базата данни.

Количеството редове в таблиците може да достига 50 млн.

Бързо изпълнение на командите. MySQL е най-бързият сървър от съществуващите.

Проста и ефективна система за безопасност. MySQL наистина е много бърз сървър, но за постигането на това разработчиците са жертвали някои изисквания към релационната СУБД.
По думите на създателите именно точки 2-4 са дали възможност за достигане на високо бързодействие. Релацията съществено понижава скоростта на сървъра, но тези неща не се явяват критични при създаването на Web-приложения. Комбинацията от високо бързодействие и ниска цена дава на сървъра изключителна популярност.



Примери с използване на PHP

Работа с форми.

В този пример е показано как в PHP леко се обработват данни с HTML - форма.

Създаваме прост HTML файл.

<HTML>
<HEAD>
<TITLE>Въвеждане на нформация за запитване</TITLE>
<BODY>
<CENTER>
Искате ли да научите повече за нашите продукти?
<P>
<TABLE WIDTH = 400><TR><TD align = right>
<FORM ACTION="email.php3" METHOD="POST">
Вашето име:<BR>
<INPUT TYPE="text" NAME="name" SIZE=20 MAXLENGTH="30">
<P>
Вашият email:<BR>
<INPUT TYPE="text" NAME="email" SIZE=20 MAXLENGTH="30">
<P>
Мен ме интересува:
<SELECT NAME="preference">
<OPTION value = "Ябълки">Ябълки
<OPTION value = "Портокали">Портокали
</SELECT>
<P>
<INPUT TYPE="submit" VALUE="Изпрати запитване!">
</FORM>
</TD></TR></TABLE></CENTER>
</BODY>
</HTML>

Назоваваме този файл request.html. В него указваме, че данните от формата ще бъдат обработвани от файл email.php3. Ето неговото съдържание:

<?
/* Този скрипт получава променливи от request.html */
PRINT "<CENTER>";
PRINT "Здравей, $name.";
PRINT "<BR><BR>";
PRINT "Благодаря за вашият интерес.<BR><BR>";
PRINT "Интересувате се от $preference. Информацията за тях ще Ви изпратим на email: $email.";
PRINT "</CENTER>";
?>


Сега, ако потребителя извика request.html и въведе във формата "Пешо", email: pesho@pupkin.com и отбележи, че го интересуват "Ябълки", а след това натисне "Отправи запитване!", то в отговор ще се извика email.php3, който ще изведе на екрана следното:

Здравей, Пешо

Благодаря за Вашият интерес.

Интересувате се от Ябълки. Информацията за тях ще Ви изпратим на email: pesho@pupkin.com

Сега сме длъжни да спазим обещанието и да изпратим email.

За това в PHP съществува функцията MAIL.

Синтаксис: void mail(string to, string subject, string message, string add_headers);

to - email адрес на получателя.

subject - тема на писмото.

message - самият текст на съобщението.

add_headers - други параметри (незадължителен параметър).

Дописваме в края на файла email.php3 следният код:

<?
mail($email, "Запитване за информация", "$name
Благодаря за вашият интерес!
Интересувате се от $preference
Разпространяваме ги безплатно. Обърнете се към най близкият филиал на нашата фирма и ще получите предвиденото количество.
");
mail("administration@me.com",
"има запитване за информация.",
"$name се интерусва от $preference
email-адрес: $email. ");
?>

Сега потребителят ще получи писмо с по-подробна информация относно нашите продукти. Писмото ще получи и администратора на сайта.

Когато интересуващите се от нашите продукти станат много, желаеме да ги подредиме и да съхраняваме информацията за тях в база данни. За това в следващият пример.

Работа с MySQL (съхранение на данните в база данни).

За начало създаваме база данни и таблица. Влизаме в MySQL, и изпълняваме командата:

>CREATE DATABASE products;

>CREATE TABLE clients (name VARCHAR(25), email VARCHAR(25), choise VARCHAR(Cool;

за връзка с MySQL от PHP са необходими следните функции.

int mysql_connect(string hostname, string username, string password);

Създава връзка с MySQL.

Параметри:

Hostname - име на хоста, където се намира базата данни.

Username - име на потребителя.

Password - парола на потребителя.

Функцията връща параметър от тип int, който е по-голям от 0, ако връзката е протекла успешно, и равен на 0 в противен случай.

int mysql_select_db(string database_name, int link_identifier);

Избира база данни за работа.

Параметри:

Database_name - име на базата данни.

link_identifier - ID на връзката, получено във функцията mysql_connect. (параметъра не е задължителен, ако не е указан, се използва ID от последното извикване на mysql_connect)

Функцията връща стойнос true или false

int mysql_query(string query, int link_identifier);

Функцията изпълнява запитване към базата данни.

Параметри:

Query - ред, съдържащ запитване

link_identifier - виж предишната функция.

Функцията връща ID резултата или 0, ако е произтекла грешка.

int mysql_close(int link_identifier);

Функцията закрива връзката с MySQL.

Параметри

link_identifier - виж горе.

Функцията връща стойност true или false

Сега нашият файл email.php3 ще има следният вид:

<?
/* Този скрипт получава променливи от request.html */

/* Някои променливи */

$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";

/* Таблица в MySQL, в която се съхраняват данните */
$userstable = "clients";

/* email на администратора */
$adminaddress = "administration@me.com";

/* създаване на връзка */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не мога да създам връзка ");

@mysql_select_db("$dbName") or die("Не мога да избера базата данни ");

PRINT "<CENTER>";
PRINT "Здравей, $name.";
PRINT "<BR><BR>";
PRINT "Благодаря за вашият интерес.<BR><BR>";
PRINT "Интересувате се от $preference. Информацията за тях ще Ви изпратим на email: $email.";
PRINT "</CENTER>";

/* Изпращаме email */
mail($email, "Запитване за информация", "$namen
Благодаря за вашият интерес.!
Интересувате се от $preference
Разпространяваме ги безплатно. Обърнете се към най близкият филиал на нашата фирма и ще получите предвиденото количество.
");

mail("administration@me.com",
"Има запитване за информация.",
"$name се интересува от $preference
email-адрес: $email. ");

/* Въвеждане на информацията за клиента в таблица */
$query = "INSERT INTO $userstable VALUES('$name','$email', '$preference')";

$result = MYSQL_QUERY($query);

PRINT "Информацията за вас е въведена в базата данни.";

/* Затваряне на връзката */
MYSQL_CLOSE();
?>

Ето колко леко се работи с база данни в PHP. Сега писменото уведомяване, информацията за клиента и неговите интереси ще бъдат предадени в MySQL таблица.

Работа с MySQL (получаване на данни от базата данни).

Съхранявайки данните, в един момент ще си зададем въпроса " Кой от нашите клиенти се интересуваше от "Ябълки" ?"

Написваме скрипта apple.php3

<?/* Показва тези които обичат повече ябълки, отколкото портокали */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";

/* Таблица MySQL, в която се съхраняват данни */
$userstable = "clients";

/* създава връзка */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не мога да създам връзка ");

@mysql_select_db("$dbName") or die("Не мога да избера база данни ");

/* Избиране на всички почитатели на ябълките */
$query = "SELECT * FROM $userstable WHERE choice = 'Ябълки'";

$result = MYSQL_QUERY($query);

/* Колко много има от тях */
$number = MYSQL_NUMROWS($result);

/* Напечатване в красив вид*/
$i = 0;

IF ($number == 0) {
PRINT "<CENTER><P>Няма любители на ябълки</CENTER>";
} ELSEIF ($number > 0) {
PRINT "<CENTER><P>Брой на любителите на ябълки: $number<BR><BR>";
WHILE ($i < $number){
$name = mysql_result($result,$i,"name");
$email = mysql_result($result,$i,"email");
PRINT "Клиент $name обича ябълки.<BR>";
PRINT "Неговият Email: $email.";
PRINT "<BR><BR>";
$i++;
}
PRINT "</CENTER>";
}
?>

Тук сме използвали две нови функции:

int mysql_num_rows(int result);

Функцията връща броя редове в резултат от запитването.

Параметъра result - съдържа ID резултата от запитването.

int mysql_result(int result, int i, column);

Функцията връща стойноста на полето в колона column и в ред i.

Урока е изготвен от www.transcode.org


/ Трябва да сте регистриран за да напишете коментар /