Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobieranie danych z pliku tekstowego
Forum PHP.pl > Forum > PHP
Danoc
Mam kod, który pobiera dane z pliku tekstowego
  1. <?php  
  2. $file = file('data/next_meeting.txt', 'rt');  
  3. $file_c = 1;  
  4. for ($i = 0; $i < $file_c; $i++) {  
  5. list($date, $number, $avatar1, $avatar2, $date1, $meeting1, $meeting2) = explode('|', $file[$i]);
  6.    echo '<div id="next-center">  
  7.               <div id="next-avatar-left"><img src="images/avatar/'.$avatar1.'" width="74" height="74" border="0" alt="" /></div>  
  8.               <div id="next-vs">  
  9.                    <div id="next-vs-top">&nbsp;</div>  
  10.                    <div id="next-vs-center">vs</div>  
  11.                    <div id="next-vs-top">&nbsp;</div>  
  12.               </div>  
  13.               <div id="next-avatar-right"><img src="images/avatars/'.$avatar2.'" width="74" height="74" border="0" alt="" /></div>  
  14.               <div id="next-avatar-box">&nbsp;</div//-->  
  15.          </div>  
  16.          <div id="next-top"><img src="images/piksel.gif" alt="" width="240" height="10" border="0" /></div>  
  17.          <div id="next-date">'.$date1.'<br />'.$meeting1.'<br />'.$meeting2.'</div>  
  18.          <div id="next-top"><img src="images/piksel.gif" alt="" width="240" height="5" border="0" /></div>';  
  19.          }  
  20.    ?>

Zawartość pliku tekstowego
Kod
2009-05-23|2|chrobry.gif||23.05.2009|TURNIEJ O KORONĘ|BOLESŁAWA CHROBREGO  
     2009-05-19|1|lejonen.gif|smederna.gif|19.05.2009|ELITESERIEN|

Teraz wyświetla mi tylko pierwszy wpis, czyli po każdych zawodach następne muszę wprowadzić ręcznie. Ja natomiast chciałbym na początku roku wpisać wszystkie planowane zawody i żeby skrypt sam aktualizował dane na stronie, czyli żeby była sprawdzana $date i jeżeli dzisiejsza data jest większa od wpisanej w którejś linii to wyświetlą się następne zawody.
Poza tym chciałbym jeszcze uzależnić wyświetlanie danych od $number. Jeżeli $number=1 to dane wyświetlą się w
Kod
<div id="next-center">  
                  <div id="next-avatar-left"><img  src="images/avatars/'.$avatar1.'" width="74" height="74" border="0"  alt="" /></div>
                    <div id="next-vs">  
                         <div id="next-vs-top">&nbsp;</div>  
                         <div id="next-vs-center">vs</div>  
                         <div id="next-vs-top">&nbsp;</div>  
                    </div>  
                  <div id="next-avatar-right"><img  src="images/avatars/'.$avatar2.'" width="74" height="74" border="0"  alt="" /></div>
                    <div id="next-avatar-box">&nbsp;</div//-->  
               </div>

natomiast jeżeli $number=2 to wyświetlą się
Kod
<div id="next-center1">  
                  <div id="next-avatar"><img  src="images/avatars/'.$avatar1.'" width="74" height="74" border="0"  alt="" /></div>
                </div>

Bardzo proszę o pomoc w przerobieniu tego kodu.
Pilsener
1. Wczytywanie pliku poprzez file jest mało optymalne, jak upierasz się przy plikach to radzę zapoznać się z while + fgets:
http://www.forumweb.pl/viewtopic.php?t=39103

2.
Cytat
Teraz wyświetla mi tylko pierwszy wpis
- bo ustawiłeś pętlę, żeby obracała się tylko raz (od i=0 do i=1)

3.
Cytat
jeżeli dzisiejsza data jest większa od wpisanej
- jak pobrać aktualną datę/czas: time" title="Zobacz w manualu PHP" target="_manual, jak sprawdzić, czy data jest mniejsza albo większa? Użyć funkcji strtotime" title="Zobacz w manualu PHP" target="_manual albo mktime" title="Zobacz w manualu PHP" target="_manual do przekonwertowania daty z pliku na format uniksowy następnie wystarczy prosta instrukcja warunkowa:
  1. <?php
  2. if(time() > $data){
  3.   //jeżeli aktualna data jest większa to coś tam...
  4. }else{
  5.  
  6. }
  7. ?>


4.
Cytat
jeszcze uzależnić wyświetlanie danych od $number.
- nic prostszego - ta sama instrukcja warunkowa co powyżej

5. I radzę też poczytać o HTML'u, bo kod który generujesz jest bardzo słaby
Danoc
Napisałem coś takiego
  1. <?php
  2. $file = file('schedule.txt');  
  3. $now = date('Y-m-d');
  4. for ($i = 0; $i < count($file); $i++) {  
  5.   list($date[$i], $number[$i], $meeting1[$i]) = explode(' || ', $file[$i]);
  6.  
  7.   }
  8.  
  9.   for ($i = 0; $i < count($date); $i++)  
  10.   if($now == $date[$i]) {
  11.  
  12.    echo '<div id="zielone" style="background: #339900;">'.$date[$i].'<br />'.$meeting1[$i].'</div>';
  13.    }
  14.    else {
  15.         if($now < $date[$i]) {
  16.                 echo '<div id="czerwone" style="background:#FF0000;">'.$date[$i].'<br/>'.$meeting1[$i].'</div>';
  17.                 }
  18. }
  19.    ?>

Plik tekstowy
Kod
2009-05-26 || 2 || Półfinał IMP/Gorzów
         2009-05-24 || 1 || CMSE - VI RUNDA - Leszno - Wrocław
         2009-05-23 || 2 || Turniej o Koronę Bolesława Chrobrego/Gniezno
         2009-05-19 || 1 || CMSE - V RUNDA - Wrocław - Toruń
         2009-05-10 || 1 || CMSE - V RUNDA - Wrocław - Toruń 44:46
         2009-05-05 || 1 || ELITESERIEN - II RUNDA - Lejonen - Indianerna 53:43
         2009-05-03 || 1 || CMSE - IV RUNDA - Gorzów - Wrocław 52:38

Teraz na zielonym tle wyświetla mi dzisiejsze zawody oraz na czerwonym wszystkie po dzisiejszej dacie. Ja natomiast chcę, aby wyświetlało mi dzisiejsze zawody, a jeżeli dzisiaj nie są rozgrywane to tylko najbliższe, a nie wszystkie następne. Proszę o nakierowanie jak to napisać.

P.S. Skorzystanie z while" title="Zobacz w manualu PHP" target="_manual+fgets" title="Zobacz w manualu PHP" target="_manual odłożę na później.
erix
Cytat
Ja natomiast chcę, aby wyświetlało mi dzisiejsze zawody, a jeżeli dzisiaj nie są rozgrywane to tylko najbliższe, a nie wszystkie następne.

No to zamiast:
  1. <?php
  2. if($now < $date[$i]) {
  3. ?>

To dodajesz do tego warunek, aby sprawdzało również, czy różnica bieżącej daty i daty wpisu jest mniejsza od "najbliższej".

Cytat
P.S. Skorzystanie z while+fgets odłożę na później.

Nie odkładaj. Zapomnisz, zemści się prędzej niż myślisz.

Poza tym, w Twoim przypadku pomyślałbym o jakiejś DB, chociażby o SQLite...
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.