Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyznaczanie końca zawartości pliku
Forum PHP.pl > Forum > Przedszkole
pawelgdz
Witam czy istnieje funkcja która sprawdza plik i pobiera z niego tylko zapisane w nim dane?

Mam plik o nazwie produkty.txt ten plik sobie wyswietlam z zastosowaniem explode()

w pętli for ...

na stronie wyswietlają mi się coprawda dane ... ale strona jest o wiele dłuższa i powstaje wiele pustych miejsc w pętli mam ..


  1. <?
  2.  ....
  3.  
  4.  $ilosc = filesize("produkty.txt");
  5.  
  6. for($i=0; $i<$ilosc; $i++) {
  7.  
  8.  echo $z[$i];
  9.  
  10. }
  11. ?>


probowałem już count() filesize() w count() wyskakuje za mało rekordów nie odczytuje mi całego pliku a w filesize() powstają puste miejsca
nospor
pokaz caly kod, jak czytasz plik, co to za tablica $z?
piszesz o explode, na czym ty tego uzywasz?
NuLL
file_get_contents

O to chodzi ? Co masz na mysli mowiac sprawdza plik ? To czy istnieje sprawdza sie file_exists
pawelgdz
  1. <?
  2.  
  3. include "connect.php";
  4.  
  5.  $deskryptor = fopen("produkty.txt", "rt");
  6.  $dane = fread($deskryptor, filesize("produkty.txt"));
  7.  $z = explode("\t", $dane);
  8.  
  9.  $content = file("produkty.txt");
  10.  $tmp = filesize("produkty.txt");
  11.  
  12.  echo "<table border=0 cellspacing=0 cellpadding=2 align=left width=1000>";
  13.  $i = 5;
  14. for($i; $i<$tmp; $i++) {
  15.  
  16.  
  17.  if ($j == 0)
  18.  echo "<tr>";
  19.  else if ($j == 4)
  20. {
  21.  echo "</tr>";
  22.  $j=0;
  23. }
  24. $j++;
  25.  
  26.  
  27. echo "<td valign=top align=left>";
  28.  
  29.  echo $z[$i-1];
  30.  
  31. echo "</td>"; 
  32.  
  33. }
  34. if ($j != 0)
  35. echo "</tr>";
  36.  
  37. echo "</table>";
  38.  
  39.  
  40.  fclose($deskryptor);
  41.  
  42. ?>


w pliku tresci oddzielane sa tabulatorami smile.gif
nospor
no i teraz zastanow sie co zrobiles winksmiley.jpg

w $z masz tablicę, kotrej elementami są kolejne tresci.

a po tej tablicy lecisz po ilosci znakow. wiadomo ze znakow masz wiecej niz tresci
zamiast:
  1. <?php
  2. $tmp = filesize("produkty.txt");
  3. ?>

powinno byc:
  1. <?php
  2. $tmp = count($z);
  3. ?>

i czemu $i zaczynasz od 5?
pawelgdz
a teraz pytanko z innej beczki bo zastanawiam się jak dodać to do bazy danych skoro mam tabele ...

  1. id (int 255) nazwa (varchar 255) cena (varchar 255)


a kazdy z elementów miesci się w tej tablicy sad.gif czyli $z[$i]
nospor
ale jak w tej tablicy? co 3?
a moze kazda taka trojka to jest jedna linia w pliku? jesli tak o wczytaj ten plik przy pomocy file() (patrz info w manualu) a potem na kazdej linijce uzyj explode.

ps: a czemu pole cena to varchar?
pawelgdz
hmm cena varchar ? nie wiem jakos zawsze tak robie ... lepszy int ?
nospor
no jesli dane będą z zakresu liczb calkowitych... to tak, lepszy int winksmiley.jpg
pawelgdz
nie rozumiem tego dzielenia wierszy pliku pojedyńczo ... nie wiem jak to zrobić sad.gif
nospor
jesli twoj plik ma taką postac:
Kod
id1 nazwa1 cena1
id2 nazwa2 cena2
.....

to wczytasz plik liniami. do tego najlepiej nadaje sie file(), ktory zwroci ci tablicę. kazdy element tej tablicy to jedna linia z pliku.

teraz przelatujesz po tej tablicy (for lub foreach lub inne) i na kazdym jej elemencie robisz explode, by dostac juz konkretne id, nazwa, cena. w ten sposob bedziesz mial dane, ktore chcesz wstawic do bazy. poprobuj,zobacz co ci zwroci file(), pokombinuj... w ten sposob moze nauczysz sie wiecej winksmiley.jpg
pawelgdz
rozumiem dziekuje bardzo !
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.