Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вывод БД на экран




Теория

Лабораторная работа № 2

Задание

К созданному Вами сайту, подключаете базу данных с помощью php скриптов.

База данных создается в phpmyadmin. БД должна содержать минимум одну таблицу. Одна из таблиц содержит минимум 5 полей со следующими типами полей:

1. Первое поле это ключевое поле, значение которого уникально и не повторяется нигде в БД. Имеет тип Bigint.

2. Второе текстовое поле типа varchar(указать мин. элементов)

3. Следующие поля должны быть типа:

float (значение с плавающей точкой);

Int – целое значение;

Data – дата.

Содержимое БД нужно вывести на страницу сайта. Должна быть реализована возможность через сайт добавлять, удалять и сортировать поля БД.

 

 

Для реализации взаимодействия языка PHP и СУБД MySQL существует множество встроенных функций. К наиболее популярным относятся функции для подключения к базе данных MySQL, записи данных в базу данных, а для также чтения и вывода содержимого таблиц.

Для устойчивого подключения к серверу MySQL в языке PHP используется функция mysql_pconnect.

 

Синтаксис:

 

mysql_pconnect ([string host[:port][:/socketpath]], [string user], [string password]),

$connect =mysql_pconnect ([string host[:port][:/socketpath]], [string user], [string password]),

 

где

host[:port][:/socketpath]] - полный адрес узла, на котором размещен сервер MySQL,

user - имя пользователя базы данных,

password - пароль для входа в базу данных.

 

Функция mysql_pconnect устанавливает устойчивое сетевое соединение с базой данных MySQL, расположенной на хосте “$host”, и возвращает идентификатор открытого соединения. При регистрации указывается имя пользователя “$user” и пароль “$password”.

 

Как альтернативу можно использовать функцию mysql_connect, которая делает практически то же самое. Отличие состоит в том, что mysql_connect устанавливает непостоянное соединение с базой данных.

 

Синтаксис:

 

Mysql_connect ([string host[:port][:/socketpath]], [string user], [string password]),

 

$connect = mysql_connect ([string host[:port][:/socketpath]], [string user], [string password]),

где

host[:port][:/socketpath] - полный адрес узла, на котором размещен сервер MySQL,

user - имя пользователя базы данных,

password - пароль для входа в базу данных.

По умолчанию, на mysql-сервере в таблице пользователей есть пользователь root, который может иметь доступ только с localhost-а, т.е. с того же самого компьютера, где стоит сервер mysql. ВНИМАНИЕ! "Иметь доступ с localhost" значит, что доступ имеет ваш скрипт PHP, а вы можете обращаться к нему с любого другого компьютера.

Функция mysql_connect устанавливает сетевое соединение с базой данных MySQL, расположенной на хосте “hostname”, и возвращает идентификатор открытого соединения. При регистрации указывается имя пользователя “username” и пароль “password”. С началом выполнения вашего скрипта, php выделяет в своей памяти место для информации о нём и его переменных. В информации о выполняемом скрипте хранится, в том числе, и информация о соединениях с базами данных. Переменная $connect - указатель на место, где данная информация хранится. Переменная эта точно такая же, как и остальные - если вы используете функции, то надо объявлять глобальные переменные, чтобы обратиться к ней. При попытке запуска следующего соединения с теми же самыми аргументами, второе соединение не будет открыто, а функция возвратит идентификатор уже существующего.

 

 

Соединение с базой данных закрывается, когда сценарий завершает свое выполнение или когда обращается к функции mysql_close.

 

Синтаксис:

 

mysql_close(database_connection),

где

database_connection - соединение, которое получено в функции mysql_connect.

 

Для работы с базой данных MySQL необходимо также указать, какая база данных нужна. Это можно сделать с помощью функции mysql_select_db.

 

Синтаксис:

 

mysql_select_db(string database, [ database_connection]),

где

database - имя выбираемой базы данных,

database_connection - соединение, которое получено в функции mysql_connect.

 

Механизм работы функций запросов к БД такой же, как и у функции соединения: функции передаются параметры запроса и (если надо) соединения, а результат записывается в переменную:

Синтаксис:

mysql_query(string query, [int database_connection]),

где

query - строка, содержащая запрос,

database_connection - соединение, которое получено в функции mysql_connect.

$result = mysql_db_query(string база данных, string запрос [, переменная соединения]);

или

$result = mysql_query(string запрос [, переменная соединения]);

Если параметр “database_connection” опущен, используется последнее открытое соединение. Если открытые соединения отсутствуют, функция пытается соединиться с СУБД, аналогично функции mysql_connect без параметров. При этом результат запроса буферизируется.

 

При работе с базами данных может возникнуть ситуация, когда потребуется узнать количество записей, участвующих в запросе с SQL-операторами INSERT, UPDATE, DELETE. Это можно сделать с помощью функции mysql_affected_rows.

 

Синтаксис:

 

mysql_affected_rows (database_connection]),

где

database_connection - соединение, которое получено в функции mysql_connect.

 

Функция mysql_num_rows определяет количество записей, возвращаемых оператором SELECT.

 

Синтаксис:

 

mysql_num_rows(result),

 

где

result - результат.

 

Ниже представлен пример совместной работы языка РНР с базой данных СУБД MySQL “PRODUCT”

 

Создадим базу данных под названием product и в этой базе создали таблицу под названием tovars со следующими столбцами:

1. inc -это ключевое поле или код, т.е. поле, значение которого уникально и нигде во всей базе не повторяется.Это сделали с помощью того, что это поле автоинкремент, т.е. при вводе новой строки в базу текущее значение этого поля равно значение предыдущего поля этого столбца плюс 1. Тип этого поля: Bigint -не скоро мы переберем все возможные значения.

2. naim - в этом столбце мы указываем название товара. Тип поля: varchar(20) - т.е. строка не более 20 символов.

3. cena -в этом столбце мы указываем цену товара. Тип поля: float -т.е. число с плавающей точкой.

4. kol -это количество товара. Тип поля: int -целый тип.

5. srok - это срок годности продукта. И тип этого поля: date -т.е. дата.

Создадим программу, которая будет вносить данные в нашу базу данных. В начале создадим форму для ввода данных:

<html>
<HEAD>
<META http-equiv=content-type content="text/html; charset=windows-1251">
<style>
.t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;}
.t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; }
</style>
</HEAD>
<body >
<br><br><br><br><br><br><br>
<form action="lesson2.php" method="post" name="frt" >
<table align="center">
<tr><td class="t2">введите название продукта</td>
<td> <input type="text" size="20" maxlength="20" name="prod" id="prod" value="<?php echo $_POST["prod"]?>"></td></tr>
<tr><td class="t2">введите цену</td>
<td> <input type="text" size="10" maxlength="10" name="cena" id="cena" value="<?php echo $_POST["cena"]?>"></td></tr>
<tr><td class="t2">введите колличество</td>
<td> <input type="text" size="11" maxlength="11" name="kol" id="kol" value="<?php echo $_POST["kol"]?>"></td></tr>
<tr><td class="t2">введите срок годности(dd.mm.yyyy)</td>
<td> <input type="text" size="10" maxlength="10" name="srok" id="srok" value="<?php echo $_POST["srok"]?>"></td></tr>
<tr><td colspan="2" align="center"><input type="submit"; name="vvod"; value="ввести"; ></td></tr>
</table>
</body>
</html>

 

вот, что у нас получится:

 

затем нам надо скрипт php, который будет проверять корректность ввода данных и в правильном формате вводит эти данные в базу данных. Окончательный текст файла будет такой:

 

<?php
if($_POST["prod"])
{
$error="ошибка:";
$prod=$_POST["prod"];
$cena=$_POST["cena"];
$srok=$_POST["srok"];
$kol=$_POST["kol"];
if(strcmp((float)$cena,$cena))
{$error.="вы строке цена вводятся только цифры<br>";
}
if(strcmp((int)$kol,$kol))
{$error.="вы строке колличество вводятся только цифры<br>";
}
if(!preg_match_all("/(\d{1,2})\.(\d{1,2})\.(\d{4})/",$srok,$i))
{$error.="неверный формат строки: срок годности<br>";
}
$day=$i[1][0];
$month=$i[2][0];
$year=$i[3][0];
if(!checkdate($month,$day,$year))
{$error.="вы неверно ввели срок годности<br>";
}
if($error!="ошибка:")
{print "<center class=\"t\">$error</center> ";
}
else
{
$srok=$year."-".$month."-".$day;
$link = mysql_connect("localhost", "root","") or die("Could not connect");
mysql_select_db("product") or die("Could not select database");
$sql = "INSERT INTO tovars (naim, cena, kol, srok) VALUES ('$prod', '$cena','$kol','$srok')";

$result = mysql_query($sql) or die("Query failed");;
mysql_close($link);
Header("Location: uspex.php?i=1");
}
}
?>
<html>
<HEAD>
<META http-equiv=content-type content="text/html; charset=windows-1251">
<style>
.t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;}
.t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; }
</style>
</HEAD>
<body >
<br><br><br><br><br><br><br>
<form action="lesson2.php" method="post" name="frt" >
<table align="center">
<tr><td class="t2">введите название продукта</td>
<td> <input type="text" size="20" maxlength="20" name="prod" id="prod" value="<?php echo $_POST["prod"]?>"></td></tr>
<tr><td class="t2">введите цену</td>
<td> <input type="text" size="10" maxlength="10" name="cena" id="cena" value="<?php echo $_POST["cena"]?>"></td></tr>
<tr><td class="t2">введите колличество</td>
<td> <input type="text" size="11" maxlength="11" name="kol" id="kol" value="<?php echo $_POST["kol"]?>"></td></tr>
<tr><td class="t2">введите срок годности(dd.mm.yyyy)</td>
<td> <input type="text" size="10" maxlength="10" name="srok" id="srok" value="<?php echo $_POST["srok"]?>"></td></tr>
<tr><td colspan="2" align="center"><input type="submit"; name="vvod"; value="ввести"; ></td></tr>
</table>
</body>
</html>

 

 

Вот текст файла: uspex.php

<HTML>
<HEAD>
<LINK href="main.css" type=text/css rel=stylesheet>
<META http-equiv=content-type content="text/html; charset=windows-1251">
</HEAD>
<body >
<?php
$i=0;
$i=$_GET["i"];
if($i==1)
{$st="данные успешно добавлены";
}
if($i==2)
{$st="записи успешно удалены";
}
if($i==3)
{$st="записи успешно обновлены";
}
?>
<table border=0 width=100% >
<tr align=center>
<td>
<br><br><br><br><br><br><br><br>
<H4 class="big"><?php echo $st?></H4>
</td>
</tr>
</table>
</body>
</HTML>

 

После правильного ввода всех данных и нажатия на кнопку «ввести» мы увидим следующее:

 

 

Данные в базу данных введены. Но с ними необходимо как-то работать. Допустим возникла необходимость просмотреть всю базу в браузере. Для этого необходимо написать примерно следующий код:

 

<html>
<HEAD>
<META http-equiv=content-type content="text/html; charset=windows-1251">
</HEAD>
<body >
<br><br><br><br><br>
<center><h2>перечень продуктов</h2></center>
<table align="center"border=1>
<tr align="center">
<td>наименование</td>
<td>цена</td>
<td>колличество</td>
<td>стоимость</td>
<td>срок годности<td>
</tr>
<?php
$link = mysql_connect("localhost", "root","")
or die("Could not connect");
mysql_select_db("product") or die("Could not select database");

$query="SELECT * FROM tovars ";

$result = mysql_query($query) or die("Query failed");
while ($line = mysql_fetch_row($result)) {
print "<tr align=\"center\"><td>$line[1]</td>";
print "<td>$line[2]</td>";
print "<td>$line[3]</td>";
$st=$line[2]*$line[3];
print "<td>$st</td>";
print "<td>$line[4]</td></tr>";

}?>
</table>
</body>
</html>

 

Реализована возможность удалить записи следующим образом:

<?php
if($_POST["dfile"])
{ $mass=$_POST["dfile"];
$i=0;
while($mass[$i])
{
$link = mysql_connect("localhost", "root","")
or die("Could not connect");
mysql_select_db("product") or die("Could not select database");
$s1="DELETE FROM tovars WHERE inc=$mass[$i]";
$result1 = mysql_query($s1) or die("Query failed");
$i++;
}

Header("Location: uspex.php?i=2");
}
?>
<html>
<HEAD>
<META http-equiv=content-type content="text/html; charset=windows-1251">
</HEAD>
<body >
<br><br><br><br><br>
<center><h2>перечень продуктов</h2></center>
<form method="post" action="lesson2_2.php" >
<table align="center"border=1>
<tr align="center">
<td>наименование</td>
<td>цена</td>
<td>колличество</td>
<td>стоимость</td>
<td>срок годности</td>
<td></td>
</tr>
<?php
$link = mysql_connect("localhost", "root","")
or die("Could not connect");
mysql_select_db("product") or die("Could not select database");
$query="SELECT * FROM tovars ";
$result = mysql_query($query) or die("Query failed");
while ($line = mysql_fetch_row($result)) {
print "<tr align=\"center\"><td>$line[1]</td>";
print "<td>”$line[2]</td>";
print "<td>$line[3]</td>";
$st=$line[2]*$line[3];
print "<td>$st</td>";
print "<td>$line[4]</td>";
print "<td>";
$v=$line[0];
?>
<input type=checkbox name=dfile[] value= "<?php echo $v?>" >
<?php
print "</td></tr>";
}
?>
</table>
<br>
<center><input type=submit name="ud" value=удалить></center>
</form>
</body>
</html>

 

 




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 723; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.