Совместное использование PHP и HTML
Сочетать PHP и HTML можно двумя способами.
Способ 1. Встраивание PHP кода в HTML страницу. Файл будет иметь расширение html. Например index.html.
<h3>Заголовок</h3> <!--?php $a = 5; ?-->
Способ 2. Вывод HTML кода через функцию echo в PHP страницу. Файл будет иметь расширение php. Например index.php.
<!--?php echo '<h3>Заголовок</h3>'; $a = 5; ?-->
Переменные в PHP
В PHP используют в основном 2 типа переменных: числа и строки. Имя переменной должно начинаться со знака $. Например:
<!--?php $a = 5; $b = "Понедельник"; ?-->
Массивы
Пример создания и вывода на экран одномерного массива.
$arr[] = "Понедельник";
$arr[] = "Вторник";
$arr[] = "Среда";
foreach ($arr as $elem)
{
echo $elem;
}
Этот же код можно записать по другому:
$arr = array("Понедельник","Вторник","Среда");
foreach ($arr as $elem)
{
echo $elem;
}
Индексы в массиве начинаются с нуля. т.е. в нашем массиве, что бы получить Вторник нужно обратиться к элементу с индексом 1.
$arr[] = "Понедельник"; $arr[] = "Вторник"; $arr[] = "Среда"; echo $arr[1];
Индексы можно задать и произвольные:
//первый способ $arr[1] = "Понедельник"; $arr[2] = "Вторник"; $arr[3] = "Среда"; //второй способ $arr = array(1=>"Понедельник",2=>"Вторник",3=>"Среда");
Ассоциативные массивы
В обычном массиве индекс это число — порядковый номер элемента в массиве. В ассоциативном массиве индексы произвольные, при этом индексами могут быть и строковые значения. Получается что в ассоциативном массиве хранится информация в виде пар: ключ и значение. В Pascal такой тип данных называется Запись, в Python — словарь.
//Пример создания ассоциативного массива с данными о клиенте arr['Наименование'] = 'ООО Азимут'; arr['ИНН'] = '43535345'; arr['Телефон'] = '555-55-55'; //вот так можно получить телефон клиента echo arr['Телефон'];
Обычный массив у которого в качестве элементов выступают ассоциативные массивы можно использовать, что бы хранить информацию аналогичную информации в таблице. Например нам нужно организовать хранение данных о клиентах представленную в этой таблице:
| Код | Наименование | ИНН | Телефон |
| 1 | ООО Азимут | 324234234 | 555-55-55 |
| 2 | ООО Гермес | 324243243 | 555-78-95 |
Для этого можно создать обычный массив и поместить в него 2 ассоциативных массива:
//Создание массива массивов (таблицы)
$arr[1] = array("Код"=>1,"Наименование"=>"ООО Азимут","ИНН"=>324234234,"Тел"=>555);
$arr[2] = array("Код"=>2,"Наименование"=>"ООО Гермес","ИНН"=>324243243,"Тел"=>555);
//Перебор всех элементов можно сделать так:
foreach ($arr as $elem)
{
$id = $elem['Код'];
$name = $elem['Наименование'];
}
//Перебор и вывод в таблицу всех элементов:
echo '<table>';
echo '<tr>';
echo '<td>';
echo '<strong>Код</strong>';
echo '</td>';
echo '<td>';
echo '<strong>Наименование</strong>';
echo '</td>';
echo '</tr>';
foreach ($arr as $elem)
{
$id = $elem['Код'];
$name = $elem['Наименование'];
echo '<tr>';
echo '<td>';
echo $id;
echo '</td>';
echo '<td>';
echo $name;
echo '</td>';
echo '</tr>';
}
echo '</table>';
Получение данных из базы данных из базы данных
Данные полученные из базы данных удобно преобразовать в ассоциативный массив. Для этого можно использовать следующий код:
<?php
function get_link()
{
//Устанавливаем доступы к базе данных:
$host = 'localhost'; //имя хоста, на локальном компьютере это localhost
$user = 'ufaweb_354online'; //имя пользователя, по умолчанию это root
$password = 'ZlOK%4M%'; //пароль, по умолчанию пустой
$db_name = 'ufaweb_354online'; //имя базы данных
//Соединяемся с базой данных используя наши доступы:
$link = mysqli_connect($host, $user, $password, $db_name);
//Устанавливаем кодировку (не обязательно, но поможет избежать проблем):
mysqli_query($link, "SET NAMES 'utf8'");
return $link;
}
function get_data($query )
{
$link = get_link();
//Делаем запрос к БД, результат запроса пишем в $result:
$result = mysqli_query($link, $query) or die(mysqli_error($link));
//Проверяем что же нам отдала база данных, если null – то какие-то проблемы:
//var_dump($result);
//Преобразуем то, что отдала нам база в нормальный массив PHP $data:
for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
return $data;
}
function get_streets($id)
{
$query = "SELECT * FROM streets WHERE cities_id = ".$id;
$data = get_data($query);
return $data;
}
?>
Передача параметров на другую страницу
Передавать данные на другую страницу можно через GET запрос. Например у нас есть список городов. При клике на город должна открываться страница с улицами этого города. Для этого на странице городов при формировании ссылки используем id города. А на странице улиц считываем переданный id города и получаем список улиц из базы данных используя отбор по id города.
//Это код на странице Города
foreach ($data as $elem)
{
$id = $elem['id'];
echo '<a href = "/streets.php/?p='.$id.'" >Открыть улицы</a>';
}
//Это код на странице Улицы
$citie_id = $_GET['p']; //получили id города
$data = get_streets($citie_id); // получили список улиц
Использование функций из других файлов
Можно совместно использовать несколько файлов php. Например функцию get_streets() из файла models.php можно вызвать из другого файла следующим образом:
require_once('models.php');
$data = get_streets($citie_id);
Проблемы с кодировкой
Если возникают проблемы с отображением кириллицы, то в начало php файла нужно добавить код:
header('Content-Type: text/html; charset=utf-8');
Загрузка данных из Execel файла в базу данных
//Загрузка через файл
echo '<form action="" method=post enctype=multipart/form-data>';
echo '<input type=file name=uploadfile>';
echo '<input type=submit value=Загрузить></form>';
if (isset($_FILES['uploadfile']))
{
// Каталог, в который мы будем принимать файл:
$uploaddir = './uploads/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else
{
echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit;
}
$file_name = $_FILES['uploadfile']['name'];
//Читаем файл
if (($handle = fopen("./uploads/".$file_name, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$new_home = $data[0];
$s_ot_noipu = $data[1];
$s_ot_ipu = $data[2];
$s_noot = $data[3];
$ipu = $data[4];
if ($s_ot_ipu == '')
{
$s_ot_ipu = 0;
}
if ($s_ot_noipu == '')
{
$s_ot_noipu = 0;
}
if ($s_noot == '')
{
$s_noot = 0;
}
if ($ipu == '')
{
$ipu = 0;
}
$query = "INSERT INTO box (name,homes_id,s_ot_ipu,s_ot_noipu,s_noot,ipu) VALUES ('$new_home',$home_id,$s_ot_ipu,$s_ot_noipu,$s_noot,$ipu)";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
}
fclose($handle);
echo("<meta http-equiv='refresh' content='0'>");
}
}
else
{
//echo 'нет файла пока';
}
