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(), которая выводит все серверный данные и все серверные переменные. Эта функция просто необходима для отладки приложений и для того, чтобы понимать, как они работают. За сим все, откланиваюсь. До следующего урока.
(Ю. Гришин)