Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ Skrypt czytający dane z pliku txt do html

Napisany przez: sauber94 19.07.2019, 10:49:34

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.

Napisany przez: nospor 19.07.2019, 11:38:48

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

ps: przenosze na przedszkole

Napisany przez: sadistic_son 19.07.2019, 11:41:47

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ń.

Napisany przez: 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

Napisany przez: viking 19.07.2019, 11:55:38

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

Napisany przez: sadistic_son 19.07.2019, 12:10:45

No cóż. Proponuję załadować plik txt do tablicy np poprzez podzielenie go po znakach nowej linii (http://php.net/explode, plaintext

  1. http://www.php.net/echo '<select>';
  2. $pliktxt=http://www.php.net/file_get_contents ($sciezkadopliku);
  3. $string=http://www.php.net/explode("/n/r",$pliktxt);
  4.  
  5. foreach($string as $str){
  6. http://www.php.net/echo "<option>$str</option>";
  7. }
  8. http://www.php.net/echo "<select>";
[PHP] pobierz, plaintext

Napisany przez: emillo91 19.07.2019, 23:09:41

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.

Napisany przez: dublinka 20.07.2019, 09:07:03

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 = http://www.php.net/file('plik.txt');


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

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


Nie ładuj w selecta wartosci z pliku jako value.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)