Не MySQL’ом единым! Никита Кислицин Xakep, номер #067, стр. 067-094-4 echo "Ошибка при открытии БД!"; return 0; } $key=dba_firstkey($dbp); /* $key - идентификатор текущей записи. В начале цикла присваиваем этой переменной указатель первой записи */ while($key != false) { /* Цикл до конца БД */ $val=dba_fetch($key, $dbp); /* Получаем данные записи по идентификатору */ $ent=unserialize($val); /* Создаем массив по полученной строке */ echo "$ent[name] $ent[$phone] $ent[email] >br<\n"; /* Помещаем в поток вывода необходимые данные, элементы массива */ $key=dba_nextkey($db); /* Переходим к следующей записи */ } } Правда, элементарно? ;) Аналогичным образом описываются и все остальные функции, реализующие поиск по базе и сортировку. Сейчас мне бы хотелось остановиться на вопросе модификации данных. Во-первых, как будет работать функция, удаляющая указанную пользователем запись? Да очень легко! После открытия БД мы при помощи функции dba_delete($id, $dbp) удаляем запись с идентификатором $id из базы данных, доступной по дескриптору $dbp. Обрати внимание, что сразу после этого необходимо вызвать вспомогательную процедуру dba_sync($dbp), которая внесет требуемые изменения в БД. Дело в том, что при выполнении всех функций модификации данных на самом деле программа работает с копией данных, хранимых в памяти. Поэтому после модификации нужно вызвать функцию, которая синхронизирует копию данных и информацию, записанную в файле. Теперь давай реализуем функцию, импортирующую данные в формате CSV. Сначала мы открываем базу данных и файл CSV. Затем при помощи get_next_id() получаем очередной идентификатор, который можно присвоить новой записи. В цикле while, пока не достигнут конец нашего CSV-файла, мы читаем построчно данные, преобразуем прочитанные строки в массив, создаем на его основе сериализованную строку и помещаем в нашу БД. При этом мы предполагаем, что данные в файле CSV располагаются точно в том же порядке, что и члены массива с данными о записях телефонной книги. Это обязательное условие. Таким образом, мы написали функцию, которая добавляет в БД записи, полученные из файла в формате CSV. Осталась малость - научиться загружать файлы на сервер. Вообще говоря, мы с тобой этим уже много раз занимались - посмотри, как это реализовывалось в наших прошлых программах. Напомню также, что на диске ты найдешь полный код сценария, который настоятельно рекомендую тебе изучить. Удачи. CD На диске ты найдешь полный исходный код телефонной книги, работающей с нереляционными БД, последнюю версию библиотеки GD, последний релиз PHP 4.3.7, а также кучу документации по DBA API PHP. INFO В одном из ближайших номеров я протестирую на производительность сценарии, использующие как реляционные БД (mySQL, Postgres, etc), так и нереляционные. |