JustPaste.it

Zrzucenie danych z MySQL do plików .xls (EXCEL)

W sumie można się zastanowić, po co zrzucać do arkusza kalkulacyjnego bazę danych. Odpowiedź brzmi - prościej się ją przegląda.

Jak to zrobić, czyli jak zrzucić odpowiednie pola do pliku excelowskiego? Nic prostszego.

Najlepiej zaprezentować to na przykładzie prostej bazy danych:

TABELA USER


----------------------------------

| ID | IMIE | NAZWISKO | MIASTO  |

==================================

| 1  | JAN  | KOWALSKI | WA-WA   |

----------------------------------

| 2  | ULA  | NOWAK    |  LODZ   |

----------------------------------

| 3  |ROMAN | NAWROCKI |  KOLO   |

----------------------------------


TABELA USER_WIEK


-------------------------------

| ID | DZIEN | MIESIAC | ROK  |

===============================

| 1  |  22   |   06    | 1999 |

-------------------------------

| 2  |  21   |   11    | 1978 |

-------------------------------

| 3  |  19   |   09    | 1907 |

-------------------------------


Chcemy uzyskać plik z następującymi danymi:

| LP | IMIE | NAZWISKO | ROK URODZNIA |

oczywiście przy założeniu, że każda dana jest w osobnej komórce, a następna seria danych jest w następnym wierszu.

Na początek tworzymy tablice z nagłówkami (nazwami kolumn):

<?
  $naglowki = array (
                              'Lp.',
                              'Imię',
                              'Nazwisko',
                              'Rok urodzenia'
                                );

   $nastepny_wiersz = "\n"; // separatory
   $nastepna_kolumna = "\t"; // separatory

?>


następnie odczytujemy odpowiednie dane z bazy danych i tworzymy serię danych (cały wiersz)

<?

function odczyt($id) {

Connect(); // domyślna funkcja do połączenia z bazą

$sql="SELECT * FROM user WHERE id='$id' "; // zapytanie o wszystkie pola z tablicy USER gdzie ID będzie równe $id
$query=mysql_query($sql); // wykonanie zapytania
if (!$user=mysql_fetch_array($query)) echo mysql_error(); //odczyt danych z warunkiem jeżeli sie nie powiedzie

$sql1="SELECT * FROM user WHERE id='$id' ";
$query1=mysql_query($sql1);
if (!$user_wiek=mysql_fetch_array($query1)) echo mysql_error();

  $seria = array (
                              $id,
                              $user['imie'],
                              $user['nazwisko'],
                              $user_wiek['rok'],
                              $następny_wiersz
                                );

return $seria;
}
?>



nasza funkcja ODCZYT($ID) zwraca nam cały wiersz danych, teraz należy umieścić tę funkcję w pętli i gotowe.


<?

if($plik = fopen("moj_plik.xls", "wb")) // utworzenie pliku
                                echo "<br>PLIK ZOSTAŁ UTWORZONY !!! ";
                                else
                                echo "Błąd tworzenia pliku !!!";



                foreach ($naglowki as $pole) { // pętla odczytująca tylko tablice
                         $dane.="$pole $nastepna_kolumna"; // zmienna $dane się zapełnia

                             }



 $sql="SELECT id FROM user";
  $query=mysql_query($sql);

while ($numer=mysql_fetch_array($query))

            foreach (odczyt($numer['id']) as $pole) { // pętla odczytująca tylko tablice
                         $dane.="$pole $nastepna_kolumna"; // zmienna $dane się zapełnia
                        $dane.=$nastepny_wiersz;
                             }


 fputs($plik, $dane); //zapisanie danych w pliku

 fclose($plik); //zamknięcie pliku

?>



Dowolnie zmieniając funkcję ODCZYT() oraz tablicę $naglowki możemy tworzyć dowolnie zapełniony plik XLS.

 


Źródło: 4programmers.net. Treść udostępniona na zasadach licencji Creative Commons Attribution

 

Autor: 4programmers.net

Licencja: Creative Commons - bez utworów zależnych