Microsoft Excel

трюкиприёмырешения

Настраиваем учет внесения денежных средств при платных образовательных услугах при помощи Excel и сети Интернет

Передача информации об оплатах на сервер

Аналогично первой разработке данной главы оформим передачу информации об оплатах на сайт. Для начала необходимо воспользоваться в системе Денвер утилитой phpMyAdmin. Поэтому создадим новую базу данных Glava4(2), где нам потребуется задать структуру одной таблицы oplatа (рис. 4.40). Здесь поле id представляет собой первичный ключ, и для данного поля установим параметр auto_increment. Другое поле, dog, отводится для названия договора, а summa — для суммы по очередной квитанции.

Наша задача заключается в передаче информации об оплатах из книги Microsoft Excel на веб-сервер. Для этого на листе Квитанции создадим кнопку (рис. 4.41), по щелчку на которой будет выполнена процедура, представленная в листинге 4.33.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
' Листинг 4.33. Процедура обработки щелчка на кнопке Создать файл
Private Sub CommandButton3_Click()
N = 0
' Подсчет числа квитанций
While Cells(N + 5, 1).Value <> ""
	N = N + 1
Wend
Open "C:oplata.txt" For Output As #1
For i = 1 To N
If Cells(i + 4, 3).Value = "оплачено" Then
' Внесение номера договора
	a = Cells(i + 4, 1).Value 
    Print #1, a
' Внесение даты договора
	b = Cells(i + 4, 2).Value
    Print #1, b
End If
Next
Close #1
End Sub
Рис. 4.40. Структура таблицы oplata

Рис. 4.40. Структура таблицы oplata

Рис. 4.41. Добавление кнопки Создать файл

Рис. 4.41. Добавление кнопки Создать файл

Рис. 4.42. Файл с информацией об оплаченных квитанциях

Рис. 4.42. Файл с информацией об оплаченных квитанциях

В результате выполнения рассмотренной процедуры на диске С: формируется файл oplata.txt с информацией об оплаченных квитанциях. Каждая квитанция отражается в двух строках файла (в одной располагается номер договора, а в другой сумма). Для иллюстрации на рис. 4.42 приведен файл для имеющихся на нашем листе данных.

Теперь начинается уже знакомая работа с системой Денвер. С учетом того, что технические моменты мы рассматривали подробно в начале этой статьи, дальнейшее описание будет рассчитано на приобретенный опыт.

Итак, создадим новый виртуальный сайт, который назовем glava4_2.ru. Стартовая страница index.html в окне браузера приведена на рис. 4.43.

Рис. 4.43. Стартовая страница сайта glava4_2.ru

Рис. 4.43. Стартовая страница сайта glava4_2.ru

В листинге 4.34 приведен текст HTML-файла index.html. В нем фактически выводятся в окне браузера две гиперссылки: одна (admin.html) — для переноса информации из файла oplata.txt в базу данных на сайте, а другая (stud.html) —для просмотра суммарной информации об оплатах.

1
2
3
4
5
6
7
8
9
10
11
12
// Листинг 4.34. Файл index.html
<html><head><title>Оплата обучения</title>
<style type="text/css">
a {text-decoration:none; font-size:14pt;}
a:hover {text-decoration:underline; color:green; background-color:#CCFFCC;}
</style></head>
<body>
<a href="stud.php">Раздел для студентов</a>
<br>
<a href="stud.php">Администрирование</a>
</body>
</html>

Страница (рис. 4.44), открываемая по ссылке admin.html, представляет уже знакомую форму для выполнения авторизации. Для этого потребуется создать HTML-файл, представленный в листинге 4.35.

1
2
3
4
5
6
7
8
// Листинг 4.35. Файл admin.html
<html><head><title>Авторизация</title>
</head><body>
<form action="obr.php" method="post">
Логин: <input type="text" name="n1"><br><br>
Пароль: <input type="password" name="n2"><br><br>
<input name="n3" type="submit" value="OK">
</form></body></html>
Рис. 4.44. Форма для авторизации

Рис. 4.44. Форма для авторизации

В параметрах формыв листинге 4.35 указано, что обработку данных от формы на сервере будет выполнять скрипт obr .php, который представлен в листинге 4.36.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Листинг 4.36. Файл obr.php
<html><head>
<title>Проверка пароля и логина</title>
<style type="text/css">
a {text-decoration:none; font-size:14pt;}
a:hover {text-decoration:underline; color:green; background-color:#CCFFCC;}
</style></head>
<body>
<?php
if (isset($_POST['n3']))
{
	if ($_POST['n1'] == "sm" && $_POST['n2'] == "230")
    {	echo "Авторизация прошла успешно!!!";
    	echo "<br><a href='perevod.html'>
        Перевод информации об оплатах в базу данных</a>";
    }
else
    {	die('Неверный пароль <br><a href="index.html"><br>
        Вернуться на стартовую страницу</a>'); }
    }
else
{ echo '<a href="index.html">Вернуться на главную страницу</a>';}
?>
</body>
</html>

[caption id="" align="aligncenter" width="600"]Рис. 4.45. Страница для переноса информации в базу данныхРис. 4.45. Страница для переноса информации в базу данных

В результате правильной авторизации (в качестве примера выбран логин sm, а пароль 230) в окне браузера перед пользователем открывается страница (рис. 4.45) с гиперссылкой для перевода информации об оплатах в базу данных. Щелчок на этой гиперссылке приводит к загрузке страницы (рис. 4.46) с формой для выбора необходимого файла для пересылки на сервер.

В листинге 4.37 приведен текст файла perevod.html, который позволяет вывести в окне браузера форму, представленную на рис. 4.46. В этом файле в параметре формы указано, что на сервере полученные данные должны обрабатываться скриптом upload.php. Текст этого скрипта представлен в листинге 4.38. В нем используется запрос INSERT на добавление в базу данных записей.

Рис. 4.46. Форма для отправки файла с информацией по оплатам

Рис. 4.46. Форма для отправки файла с информацией по оплатам

1
2
3
4
5
6
7
8
9
// Листинг 4.37. Файл perevod.html
<html><head>
<title>Отправка на сайт файла</title>
</head><body>
<h1>Отправка на сайт файла</h1>
<form action="upload.php" method="post" enctype="multipart/form-data">
Имя файла:<input type="file" name="filename" size="40"><br><br>
<input type="submit" value="Загрузить"><br>
</form></body></html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Листинг 4.38. Файл upload.php
<html><head>
<title>Копирование информации в базу данных</title>
</head><body>
<?php
if (copy($_FILES["filename"]["tmp_name"],$_FILES["filename"]["name"]))
{
	echo "<h1>Файл перенесен на сервер!</h1>";
    require_once('connect.php');
    $f=fopen("oplata.txt","rt") or die("не могу открыть файл");
    while (!feof($f))
    {	$data1-fgets($f); // договор
    $data2=fgets($f); // сумма
    if ($data1 <> "")
    {
    $sql="INSERT INTO oplata SET
    summa=".$data1.",dog='".$data1."'";
    MySQL_query($sql) or die(MySQL_error());
    echo "Информация введена в базу данных<br>";
    }
    }
    fclose($f);
}
?>
</body>
</html>

Выполнение скрипта upload.php приводит к изменению информации в таблице oplata. Так, для наших данных (см. рис. 4.42) мы увидим в базе данных соответствующую информацию (рис. 4.47).

Рис. 4.47. Результат внесения информации в базу данных

Рис. 4.47. Результат внесения информации в базу данных

Таким образом, мы рассмотрели технологию передачи информации с листа рабочей книги Microsoft Excel на сервер. Осталось обеспечить отображение информации по оплатам. На рис. 4.43 для этого отводится гиперссылка на файл stud.php. Текст данного скрипта представлен в листинге 4.39. В результате его выполнения на сервере мы получим суммарную информацию по оплаченным квитанциям (рис. 4.48).

Рис. 4.48. Отражение информации об оплатах

Рис. 4.48. Отражение информации об оплатах

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Листинг 4.39. Файл stud.php
<?php
require_once('connect.php');
$sql="SELECT dog,Sum(summa) FROM oplata GROUP BY dog";
$res=MySQL_query($sql);
if(!MySQL_num_rows($res))
	die('Квитанций нет<br>
<a href="index.html"><br>
Вернуться на главную страницу</a>');
else
{
echo "<table border=1>"
while($line=MySQL_fetch_row($res))
{
echo "<tr><td>".$line[0]."</td><td>".$line[1]."</td></tr>";
}
echo "</table>";
echo '<a href=index.html>Вернуться на главную страницу</a>';
}
?>

В процедуре, представленной в листинге 4.39, использован запрос на выборку данных с группировкой сумм квитанций по договорам: $sql="SELECT dog,Sum(summa) FROM oplata GROUP BY dog";. Далее полученными результатами выборки запроса заполняется таблица в окне браузера. Таким образом, задача, поставленная в начале раздела, решена. Мы разработали книгу Microsoft Excel с набором листов управления. Вывод информации о суммарной оплате учащихся формируется в окне браузера.

1 2 3 4 5 6 7 8


Top