Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt czytający dane z pliku txt do html
sauber94
post 19.07.2019, 10:49:34
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.05.2015

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


Cześć.
W pliku txt posiadam listę pracowników. W HTML stworzyłem pole rozwijane typu select w którym chciałbym aby była możliwość wyboru pracownika którego dane będą czytane z pliku txt. Próbowałem coś samemu utworzyć ale niestety nie znam się na PHP. Jedyne co mi wychodziło to, że dane wszystkich pracowników wyświetlały się mi na górze strony a potrzebuję by były wyświetlane w liście rozwijanej select i by można było wybrać tylko jednego pracownika.
Go to the top of the page
+Quote Post
nospor
post 19.07.2019, 11:38:48
Post #2





Grupa: Moderatorzy
Postów: 34 726
Pomógł: 5773
Dołączył: 27.12.2004




Zacznij krok po kroku. Najpierw stworz select z lista pracownikow. To chyba ogarniesz?

ps: przenosze na przedszkole


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 19.07.2019, 11:41:47
Post #3





Grupa: Zarejestrowani
Postów: 1 227
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Pokaż chociaż jak ten Twój plik tekstowy wygląda w środku. Tutaj słabo z dostępnością wróżek.
I lepiej bazę danych użyć do takich zastosowań.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
sauber94
post 19.07.2019, 11:44:42
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.05.2015

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


Select już dawno zrobiony smile.gif
W pliku tekstowym na tą chwilę widnieją imiona i nazwiska, każda osoba jedna pod drugą w tym stylu:

Jan Kowalski
Janina Kowalska


Ten post edytował sauber94 19.07.2019, 11:46:55
Go to the top of the page
+Quote Post
viking
post 19.07.2019, 11:55:38
Post #5





Grupa: Zarejestrowani
Postów: 5 346
Pomógł: 900
Dołączył: 30.08.2006

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


https://www.php.net/manual/en/function.file.php
Patrz na flagi też.


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post 19.07.2019, 12:10:45
Post #6





Grupa: Zarejestrowani
Postów: 1 227
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


No cóż. Proponuję załadować plik txt do tablicy np poprzez podzielenie go po znakach nowej linii (explode) a następnie otrzymaną tablicę wrzucić do selecta.
  1. echo '<select>';
  2. $pliktxt=file_get_contents ($sciezkadopliku);
  3. $string=explode("/n/r",$pliktxt);
  4.  
  5. foreach($string as $str){
  6. echo "<option>$str</option>";
  7. }
  8. echo "<select>";


Ten post edytował sadistic_son 19.07.2019, 12:16:44


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
emillo91
post 19.07.2019, 23:09:41
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 12
Dołączył: 29.03.2012

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


Nie trzeba korzystać z funkcji explode. Można użyć do tego przykładu: https://www.w3schools.com/php/func_filesystem_feof.asp

Explode lepiej użyć w sytuacji, gdy poszczególne dane w momencie przetwarzania linii kodu mają zostać sformatowane w określony sposób. Temat operacji na plikach warto przerobić chociażby ze względu na możliwość zapisu logów systemowych do pliku albo generowania raportów.
Go to the top of the page
+Quote Post
dublinka
post 20.07.2019, 09:07:03
Post #8





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

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


Cytat(sauber94 @ 19.07.2019, 11:44:42 ) *
Select już dawno zrobiony smile.gif
W pliku tekstowym na tą chwilę widnieją imiona i nazwiska, każda osoba jedna pod drugą w tym stylu:

Jan Kowalski
Janina Kowalska


Zawartośc pliku .txt

  1. jan Kowalski
  2. Janina Kowalska
  3. Stanisław Anioł
  4. Marek Ciechanowski
  5. Justyna Maj


Jeśli jest to linia po linii to kazda z nich jest indeksem tablicy - jeśli oczywiście robi się z pliku tablice.
Więc dodajac plik do tablicy poprzez file():

  1. $tab = file('plik.txt');


Każdą linie odczytasz wstawiajac konkretny indeks tejze tablicy:

  1. $id = 3;
  2. $tab = file('plik.txt');
  3. echo $tab[$id];


id to indeks. Musisz pamiętac ze indeksy w plikach zaczynają się od zera ( 0 ) nie od 1.
Więc linia 1 w pliku ma indeks 0.
Linia 2 ma indeks 1
Lina 3 ma indeks 2
itd...

To jesli chodzi o odczyt z pliku poprzez tablice. Oczywiscie trzeba gdzies miec te indeksy.
Nalezy zrobic jakas petle. Albo while albo for i iterowac podstawiajac pod nazwe pola <option>

Ładujac plik do tablicy nalezy pamiętać o tym że duze pliki zapchają pamięć wiec nie jest to dobre rozwiązanie jesli ładuje się przykładowo poł mega lub więcej do pamięci. W takich przypadkach najlepiej jest otworzyć plik poprzez f. fopen()

  1. $uchwyt = fopen('baza.txt', 'r'); // r to flaga oznaczajaca ze plik jest TYLKO do odczytu.


Więc tak. Otworzymy plik poprzez fopen(), zczytamy linie po linii poprzez f. fread() pobierajac 1024 znaki i iterujac $no podstawimy pod value pola <option>

Na końcu sprawdzimy czy dane są przesłane i mają wartoość liczbową (integer) i wyświetlimy konkretną linie z pliku poprzez podstawienia przeslanego indeksu (z pola option) do tablicy. Oczywiscie tutaj tez mozna zrobic to inaczej nie stosujac tablic ale tak na szybkiego.


  1. <?php
  2.  
  3. $base = 'baza.txt';
  4. $path = './';
  5.  
  6. function ShowContent($FileName, $PathName)
  7. {
  8.  
  9. $content = fopen($PathName . $FileName, 'r');
  10. flock($content, LOCK_SH);
  11.  
  12. echo "<form method=post action=" . $_SERVER['SCRIPT_NAME'] . ">";
  13. echo "<select name=ShowID>";
  14.  
  15. $no = 0;
  16. while(!feof($content))
  17. {
  18.  
  19. $GetLine = fgets($content, 1024);
  20. echo "<option value=\"" . $no . "\">" . $GetLine . "</option>";
  21. $no++;
  22.  
  23. }
  24.  
  25. flock($content, LOCK_UN);
  26. fclose($content);
  27.  
  28. echo "<select><input type=\"submit\" value=\"Pokaz\" name=\"submit\"></form>";
  29.  
  30. }
  31.  
  32. echo ShowContent($base, $path);
  33.  
  34. $id = (int)$_POST['ShowID'];
  35.  
  36. if(!is_numeric($id))
  37. {
  38. exit('blad');
  39. }
  40.  
  41. $Get = file($base);
  42. echo $Get[$id];
  43.  
  44. ?>


Nie ładuj w selecta wartosci z pliku jako value.

Ten post edytował dublinka 20.07.2019, 12:07:01
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: 22.09.2019 - 14:06