Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt czytający dane z pliku txt do html
sauber94
post 19.07.2019, 10:49:34
Post #1





Grupa: Zarejestrowani
Postów: 55
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
 
Start new topic
Odpowiedzi
sauber94
post 19.07.2019, 11:44:42
Post #2





Grupa: Zarejestrowani
Postów: 55
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
dublinka
post 20.07.2019, 09:07:03
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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

Posty w temacie


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: 28.04.2024 - 18:38