Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Konwersja danych z bazy do pliku *.txt
Forum PHP.pl > Forum > Przedszkole
manhunto
Witam,
Mam daną w bazie MySQL -treść- (TEXT) i chciałbym zrobić taką konwersję, że po kliknięciu w link na stronie, skrypt jakoś prze konwertuje to w taki sposób aby uruchomiło się pobieranie pliku w formacie np *.txt (lub innym) zawierający właśnie -treść- rekordu z pola TEXT.
Jest takie coś możliwe przy użyciu PHP + MySQL lub czy jest to w ogóle możliwe?
Jeśli tak to proszę o naprowadzenie.
Pozdrawiam
bobo1
Tak jest to możliwe.

1. W pierwszej kolejności wybierasz wszystkie rekordy z danej tabeli, czyli SELEC * FROM table
2. Następnie zapisujesz te dane do pliku.
  1. $handle=fopen("plik.txt", "w+");
  2. $sql = "SELECT * FROM table";
  3. $rezultat = mysql_query($sql) or die('Nie można wykonać zapytania!');
  4. while ($lista = mysql_fetch_array($rezultat)) {
  5. fwrite($handle,''.$lista['Komórka1'].';'.$lista['Komórka2'].' ') ;
  6. }


Operacje należy powtórzyć dla tabel, które chcesz wyeksportować.
konrados
Można prościej, z użyciem header, łap: http://webdesign.about.com/od/php/ht/force_download.htm
manhunto
Dzięki za pomoc!
Z połączenia tych dwóch skryptów otrzymałem coś takiego:
  1. function downloadText($id, $syntax="txt")
  2. {
  3. db_connect(); //połączenie z bazą
  4. $handle = fopen($id.".".$syntax, "w+");
  5. $query = "SELECT text FROM magazyn WHERE id=".$id;
  6. $result = mysql_query($query);
  7. $row = mysql_fetch_assoc($result);
  8. $text = $row["text"];
  9. fwrite($handle,''.$text);
  10.  
  11. header("Content-disposition: attachment; filename=".$id.".".$syntax);
  12. header("Content-type: application/".$syntax);
  13. readfile($id.".".$syntax);
  14.  
  15. unlink($id.".".$syntax);
  16. }
po tej całej operacji chciałbym usunąć ten plik, ponieważ chce by był on utworzony tymczasowo i zaraz po tej operacji usunięty. unlink($id.".".$syntax); za readfile($id.".".$syntax); nie działa.

EDIT:
Już sobie poradziłem. Wystarczyło zamknąć plik. Po fwrite dać fclose.
Otrzymałem to czego oczekiwałem, dzięki za pomoc. Pozdrawiam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.