· логический тип (boolean),
· строковый тип (string)
· специальный тип NULL.
К нескалярным типам относится
· «ресурс» (resource),
· массив (array)
· и объект (object).
Среди наиболее часто используемых возможностей PHP стоит отметить следующие:
· имеется большой набор функций для работы со строками;
· работа с регулярными выражениями PCRE.
· работа с базами данных, осуществляемая посредством модулей:
- php5-mysql для MySQL,
- php5-pgsql для PostgreSQL
- и др.
· для PHP разработаны средства шаблонирования веб-страниц, позволяющие эффективно разделить представление от модели, например Smarty;
· имеется библиотека для работы с графическими изображениями GD, позволяющая производить преобразования с графическими файлами, и создавать изображения «на лету».
Вот пример формы, которая передает эти пременные:
<form action ="mail.php" method="POST" name="form1">
<br>Введите ФИО:<br>
<input type="text" name="fio" >
<br>Введите email:<br>
<input type="text" name="email">
<br>Укажите тип доставки:<br>
<select name="delivery" size="1">
<option>Срочная
<option>Обычная
</select>
<br>Введите свой домашний адрес:<br>
<textarea name="address" rows="5" cols="30">
</textarea>
<br>
<br>Введите условие задачи:<br>
<textarea name="condition" rows="10" cols="30">
</textarea>
<br>
<input type="submit" value="Отправить">
</form>
Переменные от формы скрипту могут передаваться двумя методами, это: POST и GET.
К операторам выбора относят: условный оператор (if...else) и переключатель (switch). Синтаксис условного оператора: if(condition) statement 1 else statement 2
Условие condition может быть любым выражением. Если оно истинно, то выполняется оператор statement1. В противном случае выполняется оператор statement2. Допустима сокращенная форма записи условного оператора, в которой отсутствуют else и оператор statement2, напимер:
if (!empty($regis)){…}
else{…}
В данном проекте также использовалась возможность работы с базами данных:
MySQL – это одна из самых популярных и самых распространенных СУБД (система управления базами данных) в интернете. Она не предназначена для работы с большими объемами информации, но ее применение идеально для интернет сайтов, как небольших, так и достаточно крупных.
MySQL отличатся хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP.
Немаловажным фактором является ее бесплатность. MySQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License).
Структурированный язык запросов SQL позволяет производить различные операции с базами данных: создавать таблицы, помещать, обновлять и удалять из них данные, производить запросы из таблиц и т.д. Далее мы последовательно рассмотрим все эти операторы.
CREATE DATABASE
Эта команда создает новую базу данных:
CREATE DATABASE db_name;Здесь db_name является именем создаваемой базы данных. Для того чтобы создать новую базу данных forum, наберите в строке-приглашении клиента MySQL mysql> эту команду и укажите название базы данных:
mysql> CREATE DATABASE forum;CREATE TABLE
Команда CREATE TABLE создает новую таблицу в выбранной базе данных и которая в простейшем случае имеет следующий синтаксис:
CREATE TABLE table_name [(create_definition, ...)]Здесь table_name - имя создаваемой таблицы
Команда ALTER TABLE позволяет изменить структуру таблицы. Эта команда позволяет добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу. Командаимеетследующийсинтаксис:
ALTER TABLE table_name alter_specКоманда DROP TABLE предназначена для удаления одной или нескольких таблиц:
DROP TABLE table_name [ ,table_name,...]К примеру, для удаления таблицы forums нужно выполнить следующий SQL-запрос:
mysql> DROP TABLE forums;Команда DROP DATABASE удаляет базу данных со всеми таблицами входящими в её состав:
DROP DATABASE database_nameУдалим, например, базу данных forum:
mysql> DROP DATABASE forum;Команда INSERT…VALUES вставляет новые записи в существующую таблицу. Синтаксис команды:
INSERT INTO table_name VALUES (values,…)После оператора VALUES в скобках через запятую перечисляются значения соответствующих полей таблицы в соответствии с их типами.
Команда DELETE удаляет из таблицы table_name записи, удовлетворяющие заданным в definition условиям, и возвращает число удаленных записей.
Вот как можно удалить все записи из таблицы authors:
mysql> DELETE FROM authors;Важной частью запросов DELETE, UPDATE и SELECT является оператор WHERE, который позволяет задать условия для выбора записей, на которые будут действовать эти команды. Следующий запрос удаляет из таблицы посетителя, первичный ключ для которого равен 1:
mysql> DELETE FROM authors WHERE id_author = 1;Условия отбора могут быть значительно сложнее, так в листинге 13.16 удаляются все авторы с паролем '123' и первичный ключ которых превышает 10:
mysql> DELETE FROM authors WHERE passw = '123' AND id_author > 10;Оператор AND является логическим "и". В запросах можно так же применять логическое или "или".
Команда SELECT предназначена для извлечения строк данных из одной или нескольких таблиц и имеет в общем случае следующий синтаксис:
SELECT column,...[FROM table WHERE definition][ORDER BY col_name [ASC | DESC], ...][LIMIT [offset], rows]Здесьcolumn - имявыбираемогостолбца. Можно указать несколько столбцов через запятую. Если необходимо выбрать все столбцы можно просто указать знак звёздочки *. Ключевое слово FROM указывает таблицу table из которой извлекаются записи. Ключевое слово WHERE определяет, так же как и в операторе DELETE определяет условия отбора строк. Ключевое слово ORDER BY сортирует строки запросов по столбцу col_name в прямом (ASC) или обратном порядке (DESC). Ключевое слово LIMIT сообщает MySQL об выводе только rows запросов начиная с позиции offset.
Для того чтобы посмотреть всю таблицу User_inf выполняется следующий запрос:
mysql> SELECT * FROM User_inf;Для подключения к php базы данных используются стандартные функцию php, как mysql_connect(), одновременно можно подключиться как к одной, так и к нескольким базам, в данном проекте реализуется работа с одной базой данных:<?php
@mysql_connect("localhost","php","123456");
$sel=mysql_select_db("tec");
$sql="INSERT INTO User_inf(f_name,l_name,data_r,pol,mail) VALUES('".$sname."','".$name."','".$bdate."','".$pol."','".$mail."')";
$res=mysql_query($sql);
$sql="select id_user from User_inf";
$res=mysql_query($sql);
$n=mysql_num_rows($res);
$row=mysql_fetch_($res);
echo $row[$n];
$sql="INSERT INTO User_log(id_user,login,pass) VALUES('".$row[$n]."','".$login."','".$pas."')";
$res=mysql_query($sql);
$sql="INSERT INTO User_town(id_user,town) VALUES('".$row[$n]."','".$town."')";
$res=mysql_query($sql);
mysql_close();
}
}
?>
mysql_select_db – выборбазыданных
mysql_query – посылка запроса, содержание запроса может быть любым, и select и update, delete, insertinto.
На примере показан, insertinto запрос, то есть эта страница регистрации новых пользователей.
ER – базы данных
Исходные тексты страниц:
index.php
<?php
//запустилсессию
session_start();
include "blocks/db.php"; /*Соединяемсясбазой*/
$result = mysql_query("SELECT title, meta_d,meta_k,text FROM settings WHERE page='index'",$db);
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo "$myrow[meta_d]" ?>">
<meta name="keywords" content=<?php echo "$myrow[meta_k]"; ?>"">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo "$myrow[title]" ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0" align="center" bgcolor="#FFFFFF" class="main_border" cellspacing="0" cellpadding="0">
<!--Подключаемшапкусайта-->
<?php include "blocks/header.php" ?>
<tr>
<td><table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>
<!--Подключаем левый блок сайта-->
<?php include "blocks/lefttd.php" ?>
<td width="508" valign="top"><?php echo "$myrow[text]"; ?> </td>
</tr>
</table></td>
</tr>
<!--Подключаемнижнийграфическийэлемент-->
<?php include "blocks/footer.php" ?>
<tr></tr>
</table>
</body>
</html>
files.php
<?php
session_start();
include "blocks/db.php"; /*Соединяемсясбазой*/
$result = mysql_query("SELECT title, meta_d,meta_k,text FROM settings WHERE page='files'",$db);
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="keywords" content="<?php echo $myrow['meta_k'] ?>">
<meta name="description" content="<?php echo $myrow['meta_d'] ?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0" align="center" bgcolor="#FFFFFF" class="main_border" cellspacing="0" cellpadding="0">
<!--Подключаемшапкусайта-->
<?php include "blocks/header.php" ?>
<tr>
<td><table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>
<!--Подключаем левый блок сайта-->
<?php include "blocks/lefttd.php" ?>
<td width="508" valign="top"><p><?php echo $myrow['text']; ?></p>
<p>
<?php
mysql_query("SET NAMES = 'cp1251'");
$result = mysql_query("SELECT id,title,meta_d,description,autor,date FROM files",$db);
$myrow = mysql_fetch_array($result);
//если есть файлы - то вывод таблички, иначе сообщение
if (!empty($myrow['id']))
do { printf ( "<table align='center' class='lessons'>
<tr>
<td class='lesson_title'><p class='lesson_name'><a href='view_file.php?id=%s'>%s</a></p>
<p class='lesson_adds'>Датадобавления: %s</p>
<p class='lesson_adds'>Авторфайла: %s</p></td>
</tr>
<tr>
<td>%s</td>
</tr>
/table><br><br>",$myrow["id"],$myrow["meta_d"],$myrow["date"],$myrow["autor"],$myrow["description"]);
}
while ($myrow = mysql_fetch_array($result));
else echo ("<p>На данный момент файлов нет!</p>");
?>
</p>
</td>
</tr>
</table></td>
</tr>
<!--Подключаем нижний графический элемент-->
<?php include "blocks/footer.php" ?>