Тема № 10. Работа с каталогами в сценариях РНР - раздел Программирование, Инструментальная среда PHPMYADMIN. Создание баз и таблиц данных Цель Работы:Получение Практических Навыков По Работе С Дерев...
Цель работы:Получение практических навыков по работе с деревом каталогов.
Задание 1. Создать каталог и добавить в него файл.
Пусть необходимо создать каталог Users1 по пути:
W:/home/localhost/www/php/Lab/Users1
и сформировать в этом каталоге файл с именем users10.txt на основе информации показанной в форме на рис. 3.156.
Рис. 3.156. Форма ввода и результат работы файла Lab10.php.
Форма показанная на рис. 3.156, создается с помощью листинга программы Lab10.php, приведенной на рис. 3.157.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Lab10 Создание каталога</title></head>
<body>
<p>Lab10 Создание каталога</p>
<?PHP
// тело основной программы
echo 'Текущий каталог realpath(.)='.realpath(".").'<br>';//выводит имя текущего каталога W:\home\localhost\www\php
//т. е. имя рабочего каталога в котором
//находится исполняемый скрипт.
$pos = strpos($_SERVER['PHP_SELF'],"/php/"); //
//Например $_SERVER['PHP_SELF']=/php/Lab10.php
$str=substr($_SERVER['PHP_SELF'],$pos+5);//вырежет только
// имя исполняемого скрипта (например Lab10.php)
echo "Имя исполняемого скрипта=".$str;
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
//Например, DOCUMENT_ROOT= W:/home/localhost/www
$ndir="Users1";//имя создаваемой папки
$FileName=$DOCUMENT_ROOT."/php/Lab/".$ndir."/users10.txt";
//$FileName=W:/home/localhost/www/php/Lab/Users1
if (!isset($_POST["Submit"]))://первая прорисовка формы
print("<form action=\"Lab10.php\" method=post>
Name:<input type=text name=\"UserName\"><br>
Password:<input type=password name=\"Password\"><br>
<input type=submit name=\"Submit\" value=\"ok\">
</form>\n ");
echo "Введенная информация должна быть сохранена <br>
в каталоге ".$ndir.", в файле users10.txt";
else: //форма ввода уже на экране и нажата OK
if ((strlen($_POST["UserName"]))
and (strlen($_POST["Password"]))):
//&& и and - эквивалентны (логическое И)
//echo("Если имя и пароль пользователя указан. Длина
//имени пользователя=".strlen($_POST["UserName"]).
//",Password=".strlen($_POST["Password"]));
$Check=WriteFile($_POST["UserName"],$_POST["Password"],
$ndir,$FileName,$DOCUMENT_ROOT);
if ($Check):
print("<br>Ваша регистрация прошла успешно: <p>\n");
ReadFromFile($ndir,$FileName);
else:
print("<br>Регистрация не была выполнена <br>\n");
endif;
else: //при вводе что-то не указали
print("Вернитесь и введите значения Alt+Left");
endif;
endif;
?>
</body>
</html>
<?PHP
//функции пользователя
function WriteFile($UserName,$Password,$ndir,$FileName,$DOCUMENT_ROOT)
{
//$UserName
//$Password
//$ndir - имя создаваемой папки. Например,$ndir="Users1"
//$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
//Например, DOCUMENT_ROOT= W:/home/localhost/www
//$FileName=$DOCUMENT_ROOT."/php/Lab/".$ndir."/users10.txt";
// Назначение:
// Создание папки $ndir по пути:
// W:/home/localhost/www/php/Lab/$ndir
// если она отсутствует, и создание файла $FileName для
// добавления в него информации $UserName и $Password.
// Если файл существует - только добавление информации.
// В качестве разделителей значений атрибутов использовать
// символы "\t".
echo '<br>Write Путь FileName='.$FileName.',<br> UserName='.$UserName.',Password='.$Password.',is_writeable='.is_writeable($FileName).' ='.gettype(is_writeable($FileName)).',<br>_SERVER[PHP_SELF]='.$_SERVER['PHP_SELF'].'<br>';
//Формирование пути для папки с именем $ndir
$newdir=$DOCUMENT_ROOT."/php/Lab/".$ndir;
$isdir = is_dir($newdir); // Возвращает TRUE
if ($isdir== TRUE):
//print "<br>Каталог //существует:".gettype($isdir).".isdir=".$isdir."<br>";
$nh=($isdir) ? 'True' : 'False';
echo '<br>Каталог '.$newdir.' уже существует isdir='.$nh;
else:
print "<br>Каталог '.$newdir.' Не существует.";
$rs = @mkdir( $newdir, '0777' );
echo '<br>Каталог создан isdir='.($isdir) ? 'True' : 'False';
endif; //не забывайте точку с запятой
if (is_writeable($newdir)):
//Функция is_writeable($newdir)-сообщает, можно ли
//записывать в newdir. Возвращает TRUE, если newdir
//существует и является доступным (writable).
$Open=fopen($FileName,"ab");
if ($Open):
if (filesize($FileName)==0):
echo '<br>Успешное создание и открытие файла';
else:
echo '<br>Успешное открытие файла. Он уже существовал';
endif;
echo "<br>Файл $FileName доступен!<br> Размер файла=".filesize($FileName)." байт <br>";
$Password=md5($Password);//шифровка пароля
fwrite($Open,"$UserName \t $Password \n");
echo '<br>В файл Lab10.txt добавлена запись о пользователе <br> и его зашифрованном пароле.';
fclose($Open);
$Directory=TRUE;
else:
print("Невозможно открыть файл $FileName<br>\n");
$Directory=FALSE;
endif;//
else:
print("<br>В файл запрещена запись".$newdir);
$Directory=FALSE;
endif; //}
//echo '<br>WriteTo return Directory='.$Directory;
return $Directory;
}
function ReadFromFile($ndir,$FileName)
{//Назначение
// Чтение и вывод информации на экран
//$ndir - имя папки (Например,$ndir="Users1")
//$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
//Например, DOCUMENT_ROOT= W:/home/localhost/www
//$FileName=$DOCUMENT_ROOT."/php/Lab/users/users10.txt";
$Open=fopen($FileName,"rb");
//echo '<br>ReadFromFile Open='.$Open;
if ($Open):
$Data=file($FileName);//закачка файла в массив
echo '<br>Число записей в файле='.count($Data).'<br>';
for ($n=0;$n<count($Data);$n++)
{
$GetLine=explode("\t",$Data[$n]);
print("<b>$GetLine[0]</b> $GetLine[1] <br>\n");
}
fclose($Open);// закрытие файла
else:
print("Невозможно открыть файл $FileName<br>\n");
endif;
}//конец функции ReadFromFile
?>
Рис. 3.157. Листинг скрипта с именем Lab10.php.
Пусть пользователь заполнил форму следующим образом (рис. 3.158):
Рис. 3.158. Заполненная форма для скрипта с именем Lab10.php.
Все темы данного раздела:
Производительность
Результаты тестов Вы сможете найти по адресу http://www.mysql.com/information/benchmarks.html
Вставка 350768 строк
Секунды
my
Описание установки
Для того чтобы временно (для отладки) использовать свою машину как удаленный сервер, необходимо на машине установить Web-сервер Apache. Для установки программного обеспечения обеспечивающего взаимо
Порядок выполнения работы
Чтобы не было проблем при инсталляции, выполните с командной строки программу Ping
Рис. 1.1. Использование командной стро
Указания к выполнению работы
При выполнении тестов необходимо изучить структуру пакета и порядок взаимодействия его блоков, уяснить отличия использования пакета от реального его использования в сетевом окружении и причины этих
Основные сведения
Указав в Internet Explorer адрес (рис. 2.1), мы попадаем в оболочку (рис. 2.2) (адрес зависит от версии Denwer), в которой в поле ввода необходимо указать имя создаваемой базы. Пусть для примера мы
Incorrect table definition; There can only be one auto column and it mast be defined as a key
Если Вы правильно укажите характеристики для создаваемой таблицы, и нажмете кнопку “Сохранить” (рис. 2.5), то получите следующее окно (рис. 2.9).
Кнопки типа “Структура”, “
Программа работы
Приступим к заполнению информацией созданной таблицы.
Напомним, что первая строка с именем id (рис. 2.11) заполняется автоматически, так как ранее для нее указано ограниче
Основные сведения
Прежде чем использовать базу данных, необходимо создать пользователей базы данных, которые могут к ней обращаться. Это делается следующим образом. Перейдите к началу процесса (
Программа работы
Прежде чем тестировать связь с созданной Вами базой данных, выполните следующие действия:
Шаг 1. Создайте копию из файла index.php в этой же папке с именем index0.php.
Проверка моего домена с именем Moy.loc
Шаг 4. Находясь на выделенном файле в Total Commander нажмите клавишу F4 (Редактировать) и Вы должны увидеть полный текст программы, показанный на шаге 2.
Т
Указания к выполнению работы
Если Вы не получили окно показанное на рис. 2.31, а получили что-то подобное, как показано например, на рис. 2.32, то Вы скорее всего скопировали в файл index.php информацию из рис. 2.30, что не ре
Ваш возраст
<input type=radio name="r1" value="on1" checked>До 20
<input type=radio name="r2" value="on2" >20-30
Тема №3. Создание формы и РНР-сценария в одном файле
Цель работы:Получение навыков и понимание взаимосвязанной работы формы и ее обработки.
Обработка форм
Все данные, которые Вы хотите получить из HTML-формы
SUP надстрочный текст.
-->
<!--<fieldset style="width: 50%" align="right">-->
<fieldset style="width: 50%" >&
Тема №4. Использование чисел. Управляющие структуры
Цель работы:работа с численными данными в форме.
Задание 1. Разработать приложение с формой для простого калькулятора (см. рис. 3.24).
Тема №5. Использование управляющей структуры switch
Цель работы:Обучение применению структуры switch.
Задание 1. Разработать приложение с использованием конструкции SWITCH-CASE, в котором создается форма для простого кальку
Тема №7. Работа с массивами
Цель работы:Обучение использованию массивов в сценариях PHP.
Массив представляет собой набор переменных, объединенных одним именем. Каждое значение массива идентифицируетс
Тема №8. Функции в сценариях РНР
Цель работы:Получение навыков по применению функций в PHP при обработке сценариев.
При помощи функций можно создавать компоненты многократного использовани
Определение и вызов функций
Определить новую функцию в PHP несложно. Функции могут создаваться в любой точке программ PHP, однако по соображениям структурной организации кода удобнее разместить все функции, ис
Тело функции
}
Рис. 3.97. Синтаксис функций .
Имя функции должно подчиняться условиям, приведенным для идентификаторов. После имени функции следуют обязательны
Тема №9. Использование файлов для хранения данных в сценариях РНР
Цель работы:Обучение работе с файлами для хранения данных при обработке сценариев.
Задание 1. Разработка интерфейса для загрузки файла. Lab9_0.php.
Создание сценария загрузки.
Перед началом создания сценария запомните список переменных, которые создаются автоматически после успешной загрузки файла. Основная часть имени переменных - myfile - является имене
Загрузкa файла с помощью формы и сценария
Теперь, когда вы создали форму и сценарий для загрузки файла, проверим, как все это работает.
Запустите свой Web-браузер, в поле ввода Адрес введите
Тема №11. Создание панели управления файлами
Цель работы:Получение практических навыков по обработке файлов в сценариях.
Задание 1. Разработать форму и сопутствующее ей приложение для панели управления
Rem Cmysql.bat Input in MySQL Запуск с любого диска
c:\Webservers\usr\local\mysql5\bin\mysql --user=root --character-sets-dir="c:\Webservers\usr\local\mysql5\share\charsets"
Рис. 3.162. Командный файл Cmysql.bat д
City char(30) not null)
Рис. 3.167. Состав таблицы Customers.
Создание таблицы производится с помощью SQL-команды
CREATE TABLE,которая указывается в строке монитора.
Rem Hmysql.bat Запуск с любого места диска
c:\Webservers\usr\local\mysql5\bin\mysql -h localhost -u root -D books -p --character-sets-dir="c:\Webservers\usr\local\mysql5\share\charsets" < lab13_00.sql
SET NAMES cp866;
select * from customers;
select * from orders;
select * from books;
select * from order_items;
SELECT name, city FROM customers ;
запрашивает данные столбцов name (имя) и city (город) таблицы Customers:
Если воспользоваться монитором MySQL (вызов через пакетный файл CmySql.bat - рис. 3.188), то ввод н
Простое соединение двух таблиц
Начнем с поиска Ян Дрибас, которого мы уже упоминали:
Рис. 3.236. Результат запроса с использованием соединения таблиц.
Соединение трех и более таблиц
Объединение более двух таблиц не сложнее объединения двух. Главное правило таково — таблицы нужно объединять попарно, учитывая условия объединения. Это можно представить в виде отношений данных меж
From customers, orders, order_items, books
where customers.customerid = orders.customerid
and orders.orderid = order_items.orderid
and order_items.isbn = books.isbn
From customers left join orders
on customers.customerid = orders.customerid;
Рис. 3.239. Запрос с левосторонним соединением.
Данный запрос SQL использует объединение по остатку д
Where orders.orderid is null;
Рис. 3.243. Запрос левостороннего соединения таблиц Customers и Orders с использованием using.
И вот результат:
Резюме по типам соединениий
Мы рассмотрели только самые основные, хотя существуют еще несколько соединений, представленных в таблице на рис. 3.250.
Название
Опис
Group by customerid;
При использовании конструкции GROUP BY с функцией агрегирования это фактически меняет поведение функции. Вместо того чтобы выдавать среднюю величину заказов в таблице, такой запрос
Update customers
set address = 'ул. Победы д.7, кв.7'
where customerid = 4;
Так, например, состояние таблицы показанное на рис. 3.248 будет приведено к виду предс
Тема № 14. PHP и MySQL. Доступ к базе данных MySQL из Web с помощью РНР
Цель работы:Получение практических навыков по связке MySQL и PHP.
В заданиях данной темы используется база данных BOOKS, схема которой представлена на рис. 3.171, создание
Установка соединения
Для подключения к серверу MySQL в сценарии (рис. 3.268) присутствует такая строка:
@ $db = mysql_pconnect($Host, $User, $Password);
Потребуется указать имя узла (H
Выполнение запроса к базе данных
Чтобы осуществить запрос, можно воспользоваться функцией mysql_query(). Однако прежде запрос необходимо настроить:
Получение результатов запроса
Разнообразие функций дает возможность получить результат различными способами. Идентификатор результата — это ключ доступа к строкам, возвращенным запросом, которых может быть нуль, одна и более.
Отсоединение от базы данных
Для закрытия (уничтожения) результирующего набора применяется метод:
При процедурном подходе используется функция:
Настройка сервера
Вы считаете что все сделали правильно, но у Вас что-то не работает. Может, у Вас неправильно сконфигурирован сервер?
Если Вы "все сделали правильно", но Ваш код н
Коротко о правах на файлы
Проблемы с правами на сервере (upload_tmp_dir)
В *nix-подобных операционных системах каждой папке, файлу, ссылке выставлены соответствие права доступа. Они могут выглядеть как rwx-rw-r- ил
Новости и инфо для студентов