Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Edytawanie pliku txt
Puchatek320
post 21.08.2021, 22:38:35
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


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

...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
LowiczakPL
post 22.08.2021, 07:08:06
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


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/


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
trueblue
post 22.08.2021, 11:47:06
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Puchatek320
post 22.08.2021, 23:11:01
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:06