Разработка Web-приложений на PHP для ведения таблиц в базе данных с СУБД MySQL
Таблица единиц измерения
Для разработки данного и последующих Web-приложений использовался Denwer (п. 2.1.1).
Рассмотрим пример простой учебной программы на PHP, которая позволяет добавлять, находить и изменять записи таблиц единиц измерения в базе данных заказов товаров с СУБД MySQL. Форма ведения справочника представлена на рисунке 3.2.1.1.
Рисунок 3.2.1.1 – Окно браузера с формой ведения справочника
Для создания базы данных с СУБД MySQL использовался визуальный редактор phpMyAdmin (рисунок 3.2.1.2).
В пособии код программы включался из реальных программ путем копирования из буфера. Поэтому длинные строки могут занимать в пособии ни одну, а несколько строк, что необходимо учитывать при изучении кода программ.
Рисунок 3.2.1.2 – Окно просмотра phpMyAdmin таблицы единиц измерения
Код программы sql.php на языке PHP (автор В.В. Плещев).
<HTML> <head> <title> Единицы Измерения </title></head>
<body>
<form action="sql.php" method="post">
<input type=reset name="operation" value="Очистка"/>
<input type=submit name="operation" value="Добавить"/>
<input type=submit name="operation" value="Найти"/>
<input type=submit name="operation" value="Изменить"/>
<table>
<tr>
<td align="right">Код единицы измерения</td>
<td> <input name="kei" maxlength="10" size="10"/></td>
</tr>
<tr>
<td align="right">Наименование</td>
<td><input name="nei" maxlength="10" size="10"/></td>
</tr>
</table>
</form>
<?php // начало программы на PHP
$dbhost="localhost"; //имя сервера
$username="root"; // имя пользователя по умолчанию
$dbpass=""; // пароль базы данных
$dbname="заказы_товаров"; //наименование базы данных
$operation=$_POST['operation']; //чтение поля с наименование операции (кнопки)
$kei=$_POST['kei']; //чтение значения поля kei с кодом единицы измерения
$nei=$_POST['nei']; //чтение поля поля nei с наименованием единицы измерения
$link=mysql_connect($dbhost,$username,$dbpass); //связь с базой
If (!$link) exit("Ошибка при подключении к БД:".mysql_error()); //Ошибка
mysql_select_db($dbname, $link) or exit ("Ошибка при открытии базы". mysql_error());
switch ($operation) //проверка, какая кнопка была нажата
{ case 'Добавить' // нажата кнопка «Добавить»
{ $zapros1="insert into `едизм` (`код_едизм`,`наименование_едизм`)
values('".$kei."','".$nei."')"; //текст запроса на добавление записи
$rezult1=mysql_query ($zapros1); //выполнение запроса
if(!$rezult1) //проверка на ошибку выполнения запроса
exit ("Запись не добавлена:". mysql_error()); //ошибка при выполнении запроса
echo("Запись добавлена"); break; // вывод сообщения о добавлении записи
}
case 'Найти' // нажата кнопка «Найти»
{ $zapros2="select `наименование_едизм` from `едизм` where `код_едизм`='$kei'";
$rezult2=mysql_query ($zapros2); //выполнение запроса на поиск записи
$row = mysql_fetch_assoc($rezult2); //чтение полей записи в массив $row
$r=$row['наименование_едизм']; // выборка из массива поля “наименование_едизм”
if (!$row) echo("не нашлось"); //проверка на существование записи в запросе
echo($r);
break;
}
case 'Изменить' // если нажата кнопка «Изменить»
{ $zapros3="select `наименование_едизм` from `едизм` where `код_едизм`='$kei'";
$rezult3=mysql_query ($zapros3); //выполнение запроса на поиск записи
$row2 = mysql_fetch_assoc($rezult3); //чтение полей записи в массив $row2
$r2=$row2['наименование_едизм']; // выборка из массива поля “наименование_едизм”
if(!$row2) echo("не нашлось"); //проверка на существование записи в запросе
else //запись найдена
{ $zapros="update `едизм` set `наименование_едизм` = '$nei' where
`код_едизм`='$kei'"; //текст запроса на корректировку записи
$rezult=mysql_query ($zapros); //выполнение запроса на корректировку записи
if(!$rezult) exit ("не получилось". mysql_error());//проверка на ошибку
echo("изменено"); //сообщение об успешном изменении записи
}; //конец else
break;
}
} //конец оператора switch
?>
</body>
</HTML>
Таблица успеваемости студентов
Структура таблицы успеваемости студентов и вид формы в окне броузера показаны на рисунках 3.2.2.1, 3.2.2.2.
Рисунок 3.2.2.1 – Окно просмотра phpMyAdmin таблицы успеваемости студентов
Рисунок 3.2.2.2 – Окно браузера с формой ведения таблицы успеваемости
Кнопкой Найти выводятся записи, которые содержат указанный текст в наименовании учебного предмета (если текст не указан, то выводятся все записи).
Кнопкой Все записи выводятся все записи таблицы.
Кнопкой Очистить поля формы очищаются.
Кнопкой Выполнить выполняется корректировка таблицы в соответствии указанными “галочками“ в колонках признаков корректировки: изменить запись (карандашек), добавить запись (плюс) и удалить запись (корзина).
В пустой строке укзываются значения полей новой добавляемой в таблицу записи.
Код программы sql.php на языке PHP (автор Прозоров Андрей).
<HTML> <head>
<style type="text/css">
.block1 { width: 13%; float: left; }
.block2 { width: 11%; float: left; padding: 1%; }
.block3 { width: 3%; float: left; }
.block4 { width: 3%; float: left; }
</style>
<title>Учащиеся</title></head>
<form action="1sql.php" method="post">
<table>
<tr>
<td align="right">Наименование предмета</td>
<td> <input name="search" maxlength="20" size="20"/></td>
<td> <input type=submit name="operation" value="Найти"/> </td>
<td> <input type=submit name="operation" value="Все записи"/> </td>
<td> <input type=reset name="operation" value="Очистка"/> </td>
<td> <input type=submit name="operation" value="Выполнить"/></td>
</tr>
</table>
<br>
<body>
<?php // начало программы на PHP
$dbhost="localhost"; //имя сервера
$username="username "; // имя пользователя по умолчанию
$dbpass="dbpass "; // пароль базы данных
$dbname="dbname "; //наименование базы данных
$operation=$_POST['operation']; //чтение поля с наименование операции (кнопки)
$search=$_POST['search']; //чтение значения поля с наименованием предмета
$data=$_POST['data']; //чтение значения поля с датой сдачи экзамена
$ocenka=$_POST['ocenka']; //чтение значения поля с оценок за экзамен
$familiya=$_POST['familiya']; //чтение значения поля с фамилией студента
$kod=$_POST['kod']; //чтение значения поля с номером записи
$link=mysql_connect($dbhost,$username,$dbpass); //связь с базой
mysql_query('SET NAMES cp1251'); //задание системы кодирования текстовых полей
if (!$link) exit("Ошибка при подключении к БД:".mysql_error()); //Ошибка
mysql_select_db($dbname, $link) or exit ("Ошибка при открытии базы". mysql_error());
function table($result) //функция table выводит пустую строку для добавления и
//содержимое запроса, если таковой имеется
//чтение значения поля с наименованием предмета
{
echo '<div class="block2"> Наименование</div>';
echo '<div class="block2">Дата</div>' ;
echo '<div class="block2">Оценка</div>' ;
echo '<div class="block2">Фамилия</div>';
echo '<div class="block4"><img src="edit.png" width="35" height="35"
title="Изменить"></div>';
echo '<div class="block4"><img src="add.png" width="35" height="35"
title="Добавить"></div>';
echo '<div class="block4"><img src="delete.png" width="35" height="35"
title="Удалить"></div><br><br><br>';
echo '<div class="block1"><input name="naim_pred" maxlength="20" size="20"
value = ""/></div>';
echo " ";
echo '<div class="block1"><input type="date" name="data" maxlength="10" size="10"
value = ""/></div>';
echo " ";
echo '<div class="block1"><input name="ocenka" maxlength="1" size="20"
value = ""/></div>';
echo " ";
echo '<div class="block1"><input name="familiya" maxlength="15" size="20"
value = ""/></div>';
echo " ";
echo '<div class="block3"><input type="checkbox" title="Изменить" disabled="disabled"
name="change" value="change"></div>';
echo '<div class="block3"><input type="checkbox" title="Добавить" name="add"
value="add"></div>';
echo '<div class="block3"><input type="checkbox" title="Удалить" disabled="disabled"
name="delete" value="delete"></div>';
echo "<br>";
echo "<br>";
while ($row = mysql_fetch_assoc($result))
{
echo '<input type="hidden" name="kod'.$row['код'].'" maxlength="20" size="20"
value = "'.$row['код'].'"/>';
echo '<div class="block1"><input name="naim_pred'.$row['код'].'" maxlength="20"
size="20" value = "'.$row['наим_предмета'].'"/></div>';
echo " ";
echo '<div class="block1"><input type="date" name="data'.$row['код'].'" maxlength="10"
size="10" value = "'.$row['дата'].'"/></div>';
echo " ";
echo '<div class="block1"><input name="ocenka'.$row['код'].'" maxlength="1" size="20"
value = "'.$row['оценка'].'"/></div>';
echo " ";
echo '<div class="block1"><input name="familiya'.$row['код'].'" maxlength="15"
size="20" value = "'.$row['фамилия'].'"/></div>';
echo " ";
echo '<div class="block3"><input type="checkbox" title="Изменить"
name="change'.$row['код'].'" value="change'.$row['код'].'"></div>';
echo '<div class="block3"><input type="checkbox" title="Добавить"
name="add'.$row['код'].'" value="add'.$row['код'].'"></div>';
echo '<div class="block3"><input type="checkbox" title="Удалить"
name="delete'.$row['код'].'" value="delete'.$row['код'].'"></div>';
echo "<br>";
echo "<br>";
$lastkod = $row['код'];
} //конец цикла
echo '<input type="hidden" name="lastkod" maxlength="20" size="20"
value = "'.$lastkod.'"/>';
echo '</form>';
} //Конец функции
switch ($operation) //проверка, какая кнопка была нажата
{
case 'Выполнить'
{ if (isset($_POST["add"])) //проверяем первую пустую строку, добавляют ли ее
{ $zapros="insert into `студенты` (`код`,`наим_предмета`,`дата`,`оценка`,`фамилия`)
values('','".$naim_pred."','".$data."','".$ocenka."','".$familiya."')"; //текст запроса на
// добавление записи выполнение запроса
$rezult=mysql_query ($zapros); if(!$rezult) //проверка на ошибку
exit ("Запись не добавлена: <br>". mysql_error()); //ошибка при выполнении запроса
echo("Запись добавлена <br>");
}
$lastkod = $_POST['lastkod']; //узнаем код последней записи для цикла
for ($i=1;$i<=$lastkod;$i++) // цикл, проходим по галкам
{ $naim_pred=$_POST["naim_pred".$i.""];
$data = $_POST["data".$i.""];
$ocenka = $_POST["ocenka".$i.""];
$familiya = $_POST["familiya".$i.""];
$kod = $_POST["kod".$i.""];
if(isset($_POST["change".$i.""])) //проверяем галки изменения
{ $zapros="update `студенты` set `наим_предмета` = '$naim_pred', `дата` = '$data',
`оценка` = '$ocenka', `фамилия` = '$familiya' where
`Код`='$kod'"; //текст запроса на корректировку записи
$rezult=mysql_query ($zapros); //выполнение запроса на корректировку записи
if(!$rezult) exit ("не получилось". mysql_error()); //проверка на ошибку
echo("Запись ".$i." изменена<br>"); //сообщение об успешном изменении }
elseif(isset($_POST["add".$i.""])) //проверяем галки добавления
{ $zapros="insert into `студенты`
(`код`,`наим_предмета`,`дата`,`оценка`,`фамилия`)
values('','".$naim_pred."','".$data."','".$ocenka."','".$familiya."')"; //текст запроса на
//добавление записи
$rezult=mysql_query ($zapros); //выполнение запроса
if( !$rezult) //проверка на ошибку выполнения запроса
exit ("Запись не добавлена: <br>". mysql_error()); //ошибка при выполнении
echo("Запись добавлена <br>");
}
elseif(isset($_POST["delete".$i.""])) //проверяем галки удаления
{ $zapros="delete from `студенты` where `Код`='$kod'"; //текст запроса
$rezult=mysql_query ($zapros); //выполнение запроса на удаление записи
if(!$rezult) exit ("не получилось". mysql_error()); //проверка на ошибку
echo("Запись ".$i." удалена<br>"); //сообщение об успешном удалении записи }
}
echo '<META HTTP-EQUIV="Refresh" CONTENT="2; URL=1sql.php">';
break; // все
} // конец Case
case 'Найти' // нажата кнопка «Найти»
{ if ($search == "") //если строка поиска пустая, то выводим все записи
{ $zapros="select * from `студенты` order by `код`"; }
else
{ $zapros="select * from `студенты` where `наим_предмета` like '%$search%'
order by `код`"; // like нужен для поиска не полного слова
//Например есть предмет "Алгебра", в поиске вводим "Ал" и видим предметы в
// которых содержится "Ал"
}
$result=mysql_query ($zapros); //выполнение запроса на поиск записи
table($result); //передаем функции значение результата запроса
break;
} // конец Саse
case 'Все записи': //Нажата кнопка "Все записи"
{ $zapros="select * from `студенты` order by `код`";
result=mysql_query ($zapros); //выполнение запроса на поиск записи
table($result); //передаем функции значение результата запроса
break;
} конец Case
default
{ $zapros="select * from `студенты` order by `код`";
$result=mysql_query ($zapros);
table($result);
break;
} // конец Case
} //конец оператора switch
?>
</body>
</HTML>
Дата добавления: 2015-04-15; просмотров: 1898;