Четверг, 2025-01-23, 6:33 AM
Статьи - PHP
Приветствую Вас Гость | RSS
Главная страница Каталог статей Регистрация Вход
Меню сайта

Категории каталога
PHP [158]
Статьи по PHP

Наш опрос
Какую технологию вы предпочитаете?
Всего ответов: 250

Начало » Статьи » PHP » PHP

Как вывести данные из таблицы?
Итак, база (и первая таблица в ней) созданы.
Напишем скрипт, который будет формировать html-страницу с содержимым таблицы.
Но сначала таблицу надо заполнить содержимым. Так как форма ввода у нас еще не создана,
то воспользуемся методом из предыдущего шага - создадим sql-запрос на добавление записи в таблицу и направим его (файл с запросом) на вход mysql.exe.

Вот этот скрипт:

connect books;
insert into books (
id, author, namebook, series, edition, year, isbn,
pages, when_create, how, status)
values (null, "Р. Яргер и др.",
"mysql и msql. Базы данных для небольших предприятий и Интернета",
0, 0, 2000, "5-93286-010-3", 557, 3, 170, 0),
(null, "Ларри УОЛЛ", "Программирование на perl",
0, 3, 2001, null, 1200, 5, null, 0);
Несколько замечаний по этому запросу. Во-первых, я не сказал "commit".
В данном случае это не обязательно, т.к. commit произойдет по окончанию скрипта автоматически.
Во-вторых, в качестве значения для ключевого поля id выбрано значение null, что заставляет mysql присвоить
(в силу параметра для поля auto_increment) числовое значение, на единицу большее, чем максимальное
из существующих значений для этого поля в таблице. В-третьих, некоторые поля мы "занулили" - потом заполним.
И в-четвертых, этот запрос к sql-серверу отличается от стандарта! Дело в том, что (как я уже говорил)
mysql имеет некоторые отличия от sql-стандарта. В частности, insert допускает такую сокращенную форму записи.
По правилам я бы должен был бы вместо одного insert-а с перечисленными через запятую группами значений
в values использовать два запроса. Но мы облегчили себе жизнь. Вообще-то это, на мой взгляд,
не лучшая практика - использовать всякие "отклонения от нормы". По крайней мере страдает переносимость.
Но нас сейчас эта тема вряд ли должна волновать.
Теперь напишем скрипт для нашей первой страницы. html-код пока использован по минимуму.
Кстати, чуть не забыл. Если вы используете (готовитесь использовать ;) php3, то в php3.ini в виндючем каталоге раскомментируйте строчку

extension=php3_mysql.dll
Для php4 (его ini-файл кличут php.ini) ничего делать не надо, т.к. поддержка mysql в 4-й версии встроенная.

А теперь обещанный скрипт:
<html><body>
<table border=1>
<?php
$db_name="books"; //база данных
$table="books"; //таблица
$host="localhost"; //хост
$user=""; //логин (при коннекте к локальному хосту логин и пароль не нужен - нас итак пустят! ;)
$pass=""; //password
//законнектимся - получаем link-идентификатор или вывод номера и текста ошибки
//с последующим прерыванием работы скрипта (die())
$link=mysql_connect($host,$user,$pass) or die(mysql_errno($link).mysql_error($link));
//выбираем базу данных books, созданную нами ранее
$db=mysql_select_db($db_name,$link) or die(mysql_errno($link).mysql_error($link));
//выберем данные
$result=mysql_query("select * from ".$table, $link) or die(mysql_errno($link).mysql_error($link));
//сформируем заголовок таблицы результатов выборки
$th=explode("#","id#Автор#Название книги#Серия#Ред.#Год#isbn#Стр.#Когда#Цена#Статус");
echo "<tr><th>",implode("</th><th>",$th),"</th></tr>";
//выведем результаты в html-документ
while($data=mysql_fetch_row($result)) {
echo "<tr><td>", implode("</td><td>",$data), "</td></tr>";
}
//освободить выделенную под результат выборки память
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body></html>
Некоторые комментарии (более подробно в следующих шагах).
Во-первых, даже в такой упрощенной форме код работы с mysql избыточен.
Т.к. мы работает с одной базой, да еще и делаем единственный запрос,
то вместо mysql_connect(), mysql_select_db() и mysql_query() достаточно было вызвать mysql_db_query().
Эта функция при необходимости выполнит коннекцию (в прочем, в этом она не одинока), выберет базу данных и выполнит запрос к базе.

Во-вторых, mysql_close() тоже необязательна, т.к. соединение с сервером будет автоматически закрыто при окончании скрипта.

В-третьих, и уж конечно же в данном случае во mysql_free_result() никакой необходимости.
Освобождать память при единственном запросе да еще такого незначительного объема...
Здесь эта функция вызвана скорее для демонстрации возможных операций с mysql на php, ну или, если хотите, для порядка. ;)

В-четвертых, функции implode() и explode() относятся к стринговым.
Этой теме будет посвящен отдельный шаг (шаги). А пока: explode() создает массив из фрагментов строки,
разбирая ее как строку с разделителем, указанном в первом параметре. implode() делает обратную операцию.
Эту пару я применил для удобства - по-моему это проще, чем набирать строку
в виде "...текст</th><th>текст..." и уж тем более проще, чем делать кучу echo с текстами, обрамленными тегами <th>/</th>.

И в-пятых, сие чудо программистской мысли ;) выполняется как под 4-й версией php4, так и под 3-ей.

Далее в программе: подробное описание функций работы с mysql, форма для ввода записей,
чтение (импорт) данных из файла и запись (экспорт) в файл, index.php3.

Категория: PHP | Добавил: webmaster (2006-12-06)
Просмотров: 340 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Сервисы

Поиск по каталогу

Друзья сайта

| Ссылки 1 | Ссылки 2 | Ссылки 3 |
www.webmaster.clan.su Каталог+поисковая система be number one Bakililar.az Top Sites Сервис авто регистрации в
каталогах, статьи про раскрутку сайтов, web дизайн, flash, 
photoshop, хостинг, рассылки; форум, баннерная сеть, каталог 
сайтов, услуги продвижения и рекламы сайтов Скрипт для определения тиц (Яндекс CY: индекс цитирования). Определение pr (Google Pagerank). Проверить тиц pr сайта.
Copyright WebMaster.Clan © 2006 Бесплатный хостинг uCoz