|
В тази статия ще стане дума, как с помоща на РНР можем да запишем данните от Базата от данни във файл. Няма да стане дума за backup на данните, а за тяхното прехвърляне във: xml, excell, текстов документ. За да правите това няма да имате нужда от никакви допълнителни ексетнжъни за РНР. Никакви ограничения за това какво СУБД ползвате. Статията няма за цел да ви покаже как да взимате резултати от дадена таблица, а как да обработите тези данни. Примерите са изпънени на машина, на която има инсталирани следните "екстри ;)": PHP 5.1.2, MySQL 5.0.18, Apache 2.0.55 -> не би било проблем и да сте с версия на РНР 4.*, за РНР3 може да има усложнения :), а СУБД-то е без значение. Нека да започнам с най простото записване на данните във обикновен текстов файл. 1. Нещо което правим е да изпълним заявките към сървъра, примерно: SELECT * FROM adress ORDER BY id ASC; Така взимаме всички данни, ето и едно малко примерче затова: CODE
В масива $arr се садържат всички данни от таблицата adress подредени по начина по който сме ги въвели от първия запис до последния: CODE
Вече имаме данните и знаем във "какъв формат идват при нас". Следващъта стъпка е да отворим файл в който да пишем това става с помоща на fopen(). Повече за нея можете да намерите на този адрес. Избирам да отворя файла като ползвам 'w' -> при този метод файла който отваряме се изпразва от съдържание, ако пък не съществува функцията се опитва да го създадене(стига да има нужните права за дадената директория). За да може да разпознаваме след това, коя стойност от файла за кое поле от таблицата ние ше ги разделим със стринг, който има нулева вероятност да се съдържва в данните. В случая съм избрал стринга |--|, не може да го има нито в името, нито в адреса на човека записан в тази таблица. След като разгледата кода по долу ще видите как след всеки запис го добавям: fwrite($fp, $var."--");. CODE
Примера съм го дал с такъв тип масиви, защото класът ми за работа с бази данни ги връща в такъв формат, зараду нужната на темплейта Smarty да работи с такива данни. Не е проблем и да модифицирате по-горния код и така ще получите друг начин за записване на данните(друг само като изписване, иначе на същият принцип :)). Ето го и него: CODE
Както забелязвате след всеки ред от записа, записвам във файла "n", това е за да преместя позицията във файла на нов ред. Така на всеки ред имаме по един запис. Ако този файл го четем с някакво друго приложение писано на РНР голяма полза би ни свършила функцията file(). Но и да работим с приложение писано на друг начина на форматиране ще ни помогне после да разберем кой стринг във файла за какво се отнася. Няма все още гадатели-програмисти ;). Този метод има един проблем и той е, че ако друг програмист(или човек :)) трябва да пише програма, която да чете тези данни той предварително трябва да има файла, илид а сме му казали как сме го структорирали. Този пример е елементарен и не би бил проблем за никой да го разбере, но и начина по който съм го избрал не е сложен. Може да се наложи да правите записи на данни то 2 таблици но за всеки ред от първата таблица има по 2 или повече реда от 2-рата таблица ... е в момента аз се сещам за 2 начина, за които да подредя данните. Дали вие мислите същотото?
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||








