MySQL и PHP (часть 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>
<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>

Самая неизвестная для вас функция тут: mysql_fetch_row($result). В переводе название этой функции означает «выбрать ряд». После выполнения функции mysql_query($query) переменная $result представляет из себя двумерный массив, где первый индекс-номер строки таблицы, полученной в результате запроса, а второй индекс-номер столбца. А функция mysql_fetch_row($result) просто разделяет это массив на отдельные ряды, а в качестве результата возвращает одномерный массив $line. При первом выполнении $line содержит ряд № 0 ,при втором ряд № 1 и т.д. К каждому столбцу в массиве $line мы можем обратиться по его порядковому номеру, который заключается в квадратные скобки. Например, $line[1] - это обращение ко второму столбцу, а точнее к наименованию продукта. Таким образом, у меня вот что получилось:

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

DELETE FROM tbl_name WHERE какую запись удалить.

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

<?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>

И в результате у меня получилось вот что:

При открытии данной страницы заполняется таблица данными из базы данных и я ещё добавил один столбец с флажками, для обозначения тех полей, которые надо удалить. Флажок обязательно должен иметь значение value, равное ключу этой строки в базе данных. При нажатии кнопки «удалить», сервер запоминает индексный массив dfile[], значениями которого являются ключи отмеченных нами строк. А затем мы получаем эти ключи и удаляем те строки, которые отметили. Если удаление прошло удачно, то тогда выполняется функция Header("Location: uspex.php?i=2"), которая начинает выполнять файл uspex.php и скрипту этого файла передается значение i=2. (см. предыдущий урок). И в результате получаем следующее:

Ещё добавлю, что есть такая функция phpinfo(), которая выводит все серверный данные и все серверные переменные. Эта функция просто необходима для отладки приложений и для того, чтобы понимать, как они работают. За сим все, откланиваюсь. До следующего урока.

(Ю. Гришин)


К списку всех уроков PHP