Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Edytawanie pliku txt
Forum PHP.pl > Forum > Przedszkole
Puchatek320
Cześć,
Mam 3 tabele z których wyciągam dane i chciałbym utworzyć plik txt.

Tabela 1
Id
Imię

Tabela 2
Id
Nazwisko

Tabela 3
Id
zawód


Obecnie tworzę plik txt z danymi z 1 tabeli. Który wygląda następująco

Id
Imię


Id
Imię

...

I tutaj pojawia się pytanie w jaki sposób do pliku txt po imieniu dodać nazwisko oraz zawód aby konkretne Id pokrywały się z Id z tabeli 2 i 3?


Aby wyglądało to tak


Id
Imię
Nazwisko
Zawód

Id
Imię
Nazwisko
Zawód

...
LowiczakPL
Jeśli masz serwer bez obsługi bazy danych i kombinujesz aby napisać swój system to polecam gotowca http://bencagri.github.io/Simple-TxtDb/
trueblue
Dlaczego są 3 odrębne tabele na cechy jednej osoby?

Jeśli tak zostaje, to musisz zbudować zapytanie SELECT łącząc te tabele po polu Id. Dane w kolejnych wierszach uzyskasz łącząc 3 pola z każdej tabeli poprzez funkcję CONCAT_WS, używając jako separatora znaku łamania linii. Wynik takiego zapytania eksportujesz do pliku txt.
Puchatek320
LowiczakPL - Serwer obsługuje bazy danych.
Trueblue - podałem tylko przykład co próbuje osiągnąć.

Używam laravela robie zapytanie do bazy danych i zapisuje interesujące mnie dane w tym Id do pliku txt. Później chciałbym dodać do tego pliku jeszcze 2 linijki na podstawie Id ponieważ łącze kilka tabel w celu dobrania reszty danych

Po kilku dniach w końcu wymyśliłem jak to wykonać. Zostawię rozwiązanie może ktoś będzie potrzebował:

Tabela 1
Id
Imię

Pobieramy ostatni rekord z bazy danych zapisujemy go do zmiennej $ostatni


  1. $url = "nazwa pliku";
  2. $myfile = fopen($url, "w") or die("Unable to open file!");
  3.  
  4.  
  5. $txt = "";
  6. $i = 0;
  7. while ($i <= $ostatni) {
  8. $new_id = $i++;
  9.  
  10. if (tabela::where('id', '=', $new_id)->exists()) {
  11.  
  12.  
  13.  
  14. $pracownik = DB::table('tabela')
  15. ->where('id', $new_id)
  16. ->get();
  17. foreach($pracownik as $pracownik ){
  18. $pracownik _id = $pracownik ->id;
  19. $pracownik _name = $pracownik ->name;
  20. $pracownik _rating = $pracownik ->rating;
  21.  
  22. $txt .= "ID: ".$pracownik_id."\n".
  23. "Ocena: ".$pracownik_rating."\n".
  24. "Imie: ".$pracownik _name."\n";
  25.  
  26.  
  27.  
  28. }
  29.  
  30.  
  31. $pracownik1 = DB::table('tabela1')
  32. ->where('id', $new_id)
  33. ->get();
  34.  
  35. $txt .= "Praca: ";
  36. foreach($pracownik1 as $pracownik1 ){
  37. $pracownik_praca = $pracownik1 ->praca;
  38.  
  39. $txt .= " ".$pracownik_praca ;
  40. }
  41. $txt .= "\n";
  42.  
  43.  
  44. }
  45.  
  46. $txt .= "\n";
  47. $txt .= "\n";
  48. $txt .= "\n";
  49.  
  50.  
  51. }
  52.  
  53.  
  54. fwrite($myfile, $txt);
  55. fclose($myfile);
  56.  


Otrzymujemy wynik

Id
Ocena
Imie
Zawód

Oczywiście kod zmieniamy w taki sposób jak potrzebujemy. Spędziłem nad tym problemem kilka dni może komuś to pomoże.
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.