Web

Совместное использование 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 'нет файла пока';
}