Arent Opublikowano 11 Marca 2008 Udostępnij Opublikowano 11 Marca 2008 Czy ktoś może wie jak przy pomocy funkcji fgets() wydobyć np. ostatnią lub którąś od końca linię z pliku txt, oraz jak wydodrębnić samą datę i samą liczbę? 31-Jan-08 0.8812 3-Jan-08 0.8819 4-Jan-08 0.8762 przejrzałem php.net, ale widzę że ta funkcja chyba nie umożliwia czegoś takiego Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 11 Marca 2008 Filar Społeczności Udostępnij Opublikowano 11 Marca 2008 Nie chce mi się sprawdzać czy kod będzie wolny od błędu, ale lepiej już zastować funkcję file(), która zwraca cały plik w formie tablicy, gdzie każdy element to kolejna linia pliku. $tresc = file ( "sciezka_i_nazwa_do_pliku" ); Ostatnia linijka: $linijka = $tresc[ count( $tresc ) - 1 ]; Przedostatnia linijka: $linijka = $tresc[ count( $tresc ) - 2 ]; Pierwsza linijka: $linijka = $tresc[ 0 ]; Żeby wydobyć określone części tekstu, gdzie wiesz w jakim formacie jest zapisany, najlepiej posłużyć się metodą explode, która rozbija tekst i zwraca tablicę. W tym celu trzeba podać odpowiedni separator. Przykładowo ta ostatnia liczba: $rozbicie = explode( " ", $linijka[0] ); $liczba = floatval( $rozbicie[1] ); //wyciagnieto liczbe 0.8812 Rok: $rozbicie2 = explode( "-", $rozbicie[0] ); $rok = intval( $rozbicie2[2] ); // 8 Dzień: $dzien = intval( $rozbicie2[0] ); // 31 Miesiąc: $miesiac = $rozbicie[1]; // Jan A tak w o ogóle to lepiej było zapisać daty w formie uniksowego znacznika czasu (liczba zwracana przez funkcję time). Wtedy byś miał same liczby i formatowanie ich z i do daty by było znacznie łatwiejsze. Przykładowa treść pliku daty.txt: 1205244118 1205244120 1205244130 $daty = file( "daty.txt" ); $czas1 = intval( $daty[0] ); //pobieramy 120524418 echo date( "j-M-y G:i:s", $czas1 ); //wyświetli 11-Mar-08 15:01:58 Dzięki temu można łatwo sortować, bo czas jest zapisany w liczbie (w bazie danych podobnie, trzymać datę jako liczbę). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 12 Marca 2008 Udostępnij Opublikowano 12 Marca 2008 Albo wydobywać regexpem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arent Opublikowano 12 Marca 2008 Autor Udostępnij Opublikowano 12 Marca 2008 dzięki za info chciałbym jeszcze zrobić coś takiego, że po zapisaniu danych do mysql, została wyświetlona struktura podobna do xml: <set z1='09/06' z2='09' z3='text'/> <set z1='09/07' z2='07' z3='text'/> <set z1='09/08' z2='01' z3='text'/> czyli dla z1 wyświetlałoby zawartość kolumny timestamp, a dla z2 wyswietlałoby zawartosc kol. price: <set z1='timestamp' z2='price' z3='text'/> próbowałem coś takiego: $global_dbh = mysql_connect($hostname, $username, $password); mysql_select_db($db, $global_dbh); $query = "SELECT timestamp. price FROM $tablename WHERE id>=1 ORDER by id"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { echo "$row['timestamp'], $row['price]<br>\n"; } i tutaj w miejsce: echo "$row['timestamp'], $row['price]<br>\n"; próbowałem coś takiego: "<set z1='" . $row['timestamp'] . "' z2='" . $row['price'] . "' z3='text'/>"; lub tez tak $strXML .= <set z1='" . $row['timestamp'] . "' z2='" . $row['price'] . "' z3='text'/>"; ale nie działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 12 Marca 2008 Filar Społeczności Udostępnij Opublikowano 12 Marca 2008 echo '<set z1="'.$row["timestamp"].'" z2="'.$row["price"].'" z3="tekst" />'; lub echo '<set z1="'.$row["timestamp"].'" z2="'.$row["price"].'" z3="tekst" />'; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arent Opublikowano 12 Marca 2008 Autor Udostępnij Opublikowano 12 Marca 2008 <?php $hostname=('xx'); $username=('xxxx'); $password=('xxxx'); $db=('xxxxxxxx'); $tablename=('xxxxx'); $global_dbh = mysql_connect($hostname, $username, $password); mysql_select_db($db, $global_dbh); $query = "SELECT timestamp. price FROM $tablename WHERE id>=1 ORDER by id"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { echo '<set z1="'.$row["timestamp"].'" z2="'.$row["price"].'" z3="tekst" />\n'; } ?> jest coś takiego Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in xml.php on line 17 tutaj: while($row = mysql_fetch_array($result)) { Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 12 Marca 2008 Udostępnij Opublikowano 12 Marca 2008 $query = "SELECT timestamp, price FROM $tablename WHERE id>=1 ORDER by id"; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arent Opublikowano 12 Marca 2008 Autor Udostępnij Opublikowano 12 Marca 2008 $query = "SELECT timestamp, price FROM $tablename WHERE id>=1 ORDER by id"; przecież jest tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 12 Marca 2008 Udostępnij Opublikowano 12 Marca 2008 Nie jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arent Opublikowano 12 Marca 2008 Autor Udostępnij Opublikowano 12 Marca 2008 działa :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi