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