Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić, żeby plik, który właśnie utworzyłem
Forum PHP.pl > Forum > PHP
miedzna
Witam,
mam kod, który tworzy excela z mysqla, tworzy i zapisuje w katalogu, w którym lezy plik php. Wszystko działa, tylko jak zrobć tak, żeby po utworzeniu pliku wyskakiwało standardowe okienko zapisz lub otworz?

excel.php
  1. <?php
  2. $user = "root";
  3. $password = "haslo";
  4. $dbname= "nazwabazy";
  5. $tablename ="nazwatabeli";
  6. $filename = $tablename.".xls";
  7.  
  8. $lbChar = " ";
  9.  
  10. $global_dbh = mysql_connect("localhost", $user, $password);
  11.  
  12. mysql_select_db($dbname, $global_dbh); 
  13.  
  14.  
  15. function display_db_table($tablename, $connection)
  16. { global $filename;
  17. $query_string = "SELECT * FROM $tablename";
  18. $result_id = mysql_query($query_string, $connection);
  19. $column_count = mysql_num_fields($result_id);
  20. $data .= $tablename . "\n";
  21.  
  22. while ($row = mysql_fetch_row($result_id))
  23. {
  24. if(!$dokeys){
  25. $keys = array_keys($row);
  26. foreach($keys as $key){
  27. $data .= $key . "\t";
  28. }
  29. $dokeys = true;
  30. }
  31. $data .= "\n";
  32.  
  33.  
  34. for ($column_num = 0;$column_num < $column_count; $column_num++)
  35. {
  36. $row[$column_num] = str_replace("\n",$lbChar,$row[$column_num]);
  37. $row[$column_num] = preg_replace('/([\r\n])/e',"ord('$1')==10?'':''",$row[$column_num]);
  38. $row[$column_num] = str_replace("\\","",$row[$column_num]);
  39. $data .= "$row[$column_num]\t";
  40. }
  41. $data .= "\n";
  42. } $fp = fopen($filename,"w");
  43.  
  44. if($fp){
  45. fwrite($fp,$data);
  46. fclose($fp);
  47. echo "ok";
  48. } else {
  49. echo "błąd";
  50. }
  51. }
  52. display_db_table($tablename, $global_dbh);
  53. ?>
nospor
musisz wyslac ten plik z odopwiednimi naglowkami do przegladarki:
http://pl.php.net/manual/pl/function.header.php
miedzna
Dalem na koncu:
  1. <?php
  2. header("Pragma: public");
  3. header("Expires: 0");
  4. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  5. header("Cache-Control: public");
  6. header("Content-Description: File Transfer");
  7. header("Content-Type: application/force-download");
  8. header("Content-Disposition: attachment; filename=".$filename.";");
  9. header("Content-Transfer-Encoding: binary");
  10. ?>


i nic sad.gif, dalej po prostu zapisuje plik na serwerze i nie wyskakuje okienko downloadu...
nospor
spojrz jeszcze raz do manuala:
  1. <?php
  2.  
  3. // przesyłamy plik PDF
  4. header('Content-type: application/pdf');
  5.  
  6. // ustawiamy jego nazwę na downloaded.pdf
  7. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  8.  
  9. // treść znajduje się w pliku original.pdf
  10. readfile('original.pdf');
  11. ?>

porownaj sobie swoj kod i ten z manuala. widzisz delikatną a jakze subtelna roznice?
Przytocze ci jeszcze co napisalem wczesniej:
Cytat
musisz wyslac ten plik

smile.gif

ps: pozatym jak juz wyslasz plik, to teksty w stylu ok/nie ok są zbędne
akubiczek
Albo dużo prościej, po prostu przekierować na ten plik:

header('Location: plik');

jak jest to plik z rozszerzeniem CSV lub XLS to przeglądarka już sobie poradzi.
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.