Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Експортиране на данни във файлове
  1. Експортиране на данни във файлове
  2. Експортиране на данни във файлове - II
  3. Експортиране на данни във файлове - III
  4. Експортиране на данни във файлове - IV
PureEvil
     
Автор  PureEvil (03.04.2006 14:32)  съобщение до автора
Погледнат  4638 пъти  добави към любими
Оценка  добави коментар
Гласове  13  изпрати на приятел
Коментари  (4)  абонирай се за PHP
    Страница 1 / 4

 




    В тази статия  ще стане  дума, как с помоща на РНР можем да запишем данните от Базата от данни във файл. Няма да стане дума за 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
1
2
3
4
5
    $query = @mysql_query($sql);
   
while ( $row = @mysql_fetch_array($query, MYSQL_NUM) ) {
    
$arr[] = $row;
   
}
   
@mysql_free_result($query);

В масива $arr се садържат всички данни от таблицата adress подредени по начина по който сме ги въвели от първия запис до последния:

CODE
1
2
3
4
Array (
 [
0] => Array ( [0] => Иван [1] => Иванов [2] => Улица 5)
 [
1] => Array( [0] => Драган [1] => Драганов [2] => Улица 44)
)

    Вече имаме данните и знаем във "какъв формат идват при нас". Следващъта стъпка е да отворим файл в който да пишем това става с помоща на fopen(). Повече за нея можете да намерите на този адрес. Избирам да отворя файла като ползвам 'w' -> при този метод файла който отваряме се изпразва от съдържание, ако пък не съществува функцията се опитва да го създадене(стига да има нужните права за дадената директория).
    За да може да разпознаваме след това, коя стойност от файла за кое поле от таблицата ние ше ги разделим със стринг, който има нулева вероятност да се съдържва в данните. В случая съм избрал стринга |--|, не може да го има нито в името, нито в адреса на човека записан в тази таблица. След като разгледата кода по долу ще видите как след всеки запис го добавям: fwrite($fp, $var."--");.

CODE
1
2
3
4
5
6
7
8
9
10
$fp = fopen('file.txt', 'w');
 
foreach($arr as $col) {
       
foreach ($col as $var) {
   
fwrite($fp, $var.[/quote]--[quote]);
       
}
      
fwrite($fp, "n");
}

fclose($fp);

    Примера съм го дал с такъв тип масиви, защото класът ми за работа с бази данни ги връща в такъв формат, зараду нужната на темплейта Smarty да работи с такива данни. Не е проблем и да модифицирате по-горния код и така ще получите друг начин за записване на данните(друг само като изписване, иначе на същият принцип :)). Ето го и него:

CODE
1
2
3
4
5
6
7
8
9
10
    $query = @mysql_query($sql);
   
$fp = fopen('file.txt', 'w');
   
while ( $row = @mysql_fetch_array($query, MYSQL_NUM) ) {
    
foreach ($row as $var) {
        
fwrite($fp, $val.[/quote]--[quote]);
    
}
    
fwrite($fp, "n");
   
}

   
@mysql_free_result($query);

    Както забелязвате след всеки ред от записа, записвам във файла "n", това е за да преместя позицията във файла на нов ред. Така на всеки ред имаме по един запис. Ако този файл го четем с някакво друго приложение писано на РНР голяма полза би ни свършила функцията file(). Но и да работим с приложение писано на друг начина на форматиране ще ни помогне после да разберем кой стринг във файла за какво се отнася. Няма все още гадатели-програмисти ;). Този метод има един проблем и той е, че ако друг програмист(или човек :)) трябва да пише програма, която да чете тези данни той предварително трябва да има файла, илид а сме му казали как сме го структорирали. Този пример е елементарен и не би бил проблем  за никой да го разбере, но и начина по който съм го избрал не е сложен. Може да се наложи да правите записи на данни то 2 таблици но за всеки ред от първата таблица има по 2 или повече реда от 2-рата таблица ... е в момента аз се сещам за 2 начина, за които да подредя данните. Дали вие мислите същотото?



  Следваща страница >> 


Ключови думи: експортиране на данни файл експортиране на данни във файл


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Да отваря всичко. Обаче ако беше се разровил малко щеше да разбереш, че това е информацията за затовареният формат на М$ за Excel-а.
Ако не се лъжа това е формата на Excel97, но все пак е писано преди година и нещо :). Иначе най-добрият вариант е cvs

  PureEvil на 13.07.2007 18:43

Всъщност резултата не е точно xls... excel-a на Microsoft отваря и XML и CVS... но това не прави тези файлове xls :)

  lamerko на 13.07.2007 17:59

Ами да, така става когато PHP експертите от it-place.net викат stripslashes() върху входните данни при положение че magic_quotes_gpc е изключен

  blowfish на 01.06.2006 21:15

Нещо се е получило проблем със статията. Вместо n пишете \n

  PureEvil на 03.04.2006 16:21

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008