Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Linie, dodawanie...
Forum PHP.pl > Forum > PHP
Robert
Witam !!
Jezeli plik mam odzielony separatorem |~| i chce pobrac ostatnia czesc z linii...
Jest to liczba tak dla sprostowania. Chcialbym by skrypt pobral z pliku najwieksza i dodal o jeden...Wiem jak dodac o jeden lecz nie wiem jak pobrac najwieksza liczbe z pliku i wtedy dodac. Liczba ta pochodzi z ostatniego ciagu...

Przyklad:
Kod
costam3|~|blabla|~|3//chodzi o ta liczbe|~|

costam2|~|blabla|~|2|~|

costam1|~|blabla|~|1|~|

W przypadku takiego schematu skrypt podczas zapisu odzielilby i pobral najwieksza liczbe z pliku tj. "3" nastepnie dodal o jeden z czego nowa wiadomosc miala by liczbe "4" itd....

Kombinuje ale caly czas wychodzi jeden smile.gif
Nitro
Wczytaj plik do tablicy, posortuj wzgledem ostatniej kolumny i pobierz odpowiedni element.
Robert
O to bedzie dobre...dzieki winksmiley.jpg
Robert
Jakos nie moge sobie poradzic smile.gif....
Najpierw wczytuje plik. Nastepnie rozdzielam pomiedzy seperator |~| i powstaje mi tablica wiem ze musze uzyc funcji array_multisort() lub usort()

Kod
$dana = file("includes/dat/news.dat");

for($q=0; $q<count($dana); $q++){

$lp = explode("|~|", $dana[$q]);

//i teraz wlasnie nie wiem jak zastosowac funkcje ktora by sortowala $lp[6]??

echo $lp[6]."|";
Nitro
Wyswietli największą liczbę:
[php:1:c33f29bbcb]
<?php
$tab = file( 'dat.dat' );
foreach ( $tab as $row ) {
$row = explode( "|~|", $row );
$tab1[] = $row[2];
}
arsort( $tab1 );
echo reset( $tab1 );
?>
[/php:1:c33f29bbcb]
Robert
Dziala smile.gif dzieki za pomoc...

Pozdrawiam
Robert
Mam jeszcze takie jedno pytanko.....jak wyswietlac ta wartosc w innych miejscach....<? echo $tab1 ?>nie wystarcza wyskakuje array....

Teraz musze tylko poprostu dodac jeden do zmiennej "$lp" do zapisu....i tak przynajmniej nigdy nie bedzie dwoch liczb takich samych....
lecz dodac sie nie da bo nie wiem jak....[php:1:a5a739230f]<?php
//czesc odpowidzialna za nadanie liczby porzadkowiej
$tab = file('includes/dat/news.dat');
foreach ($tab as $row) {
$row = explode("|~|", $row);
$lp[] = $row[6];
}
arsort($lp);
reset ($lp);
//zapis do pliku
$fp = fopen("includes/dat/news.dat", "r");
$stareDane = fread($fp, filesize("includes/dat/news.dat"));
fclose($fp);

$data = date("d.m.Y H:i:s");
$autor = $_SESSION["log"];
$tresc = str_replace("n", "<br>", $tresc);
$noweDane="$tytul|~|$tresc|~|$data|~|$autor|~|$dzial|~||~|$lp//tu musi byc dodawany o jeden|~|n";
$noweDane .= $stareDane;

$fp = fopen("includes/dat/news.dat", "w");
fputs($fp, $noweDane);
fclose($fp);
?>[/php:1:a5a739230f]
Ma ktos jakis pomysl??
Nitro
Mozna tak:
[php:1:22f1b41e14]<?php
//czesc odpowidzialna za nadanie liczby porzadkowiej
$tab = file( 'includes/dat/news.dat' );
foreach ( $tab as $row ) {
$row = explode( "|~|", trim( $row ) );
$lp[] = $row[6];
}
arsort( $lp );

//zapis do pliku
$lp_max = reset( $lp ) + 1;
$data = time( );
$autor = $_SESSION["log"];
$tresc = str_replace( "n", "<br />", $tresc );

$noweDane = "$tytul|~|$tresc|~|$data|~|$autor|~|$dzial|~||~|$lp_maxn";

$plik = fopen( 'includes/dat/news.dat', 'a+' );
flock( $plik, 2 );
fputs( $plik, "$noweDane" );
flock( $plik, 3 );
fclose( $plik );
?>[/php:1:22f1b41e14]
Kilka uwag. Date przechowuj niesformatowaną, lepiej to robić dopiero przy wyświetlaniu wyniku na stronie. Stosowanie $lp nie jest konieczne, zamiast niej możesz równie dobrze stosować numer linii w pliku, jeżeli zastosujesz tryb "a+", czyli kolejna linia jest dopisywana na końcu pliku. Dodatkowo dzięki temu trybowi otwarcia pliku dwukrotnie (tak jak to robiłeś) jet zbyteczne.
Robert
Dzieki za porady....ustosunkuje sie do nich winksmiley.jpg
Robert
ODnosnie formatowania daty......mam to robic tak questionmark.gif
[php:1:66edc1983f]<?php
date("d.m.Y H:i:s", time($info[2]))
?>[/php:1:66edc1983f]

Bo jezeli tak to mi to ie dziala.....wyswitla date i godzine ale nie ta co jest w pliku zapisana questionmark.gif
Pewnie robie cos zle wiec prosze o nakierowanie.

UPDATE:
Chyba udalo mi sie....powinno byc tak questionmark.gif
[php:1:66edc1983f]<?php
date("d.m.Y H:i:s", $info[2])
?>[/php:1:66edc1983f]
Nitro
[php:1:db0eab1e73]<?php
date("d.m.Y H:i:s", $info[2])
?>[/php:1:db0eab1e73]
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.