Robert
21.08.2003, 11:28:04
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
Nitro
21.08.2003, 12:02:00
Wczytaj plik do tablicy, posortuj wzgledem ostatniej kolumny i pobierz odpowiedni element.
Robert
21.08.2003, 12:28:18
O to bedzie dobre...dzieki
Robert
21.08.2003, 13:44:19
Jakos nie moge sobie poradzic

....
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
21.08.2003, 14:36:05
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
21.08.2003, 14:59:59
Dziala

dzieki za pomoc...
Pozdrawiam
Robert
21.08.2003, 15:48:03
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
22.08.2003, 06:46:02
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
22.08.2003, 10:16:11
Dzieki za porady....ustosunkuje sie do nich
Robert
22.08.2003, 10:32:52
ODnosnie formatowania daty......mam to robic tak
[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
Pewnie robie cos zle wiec prosze o nakierowanie.
UPDATE:
Chyba udalo mi sie....powinno byc tak
[php:1:66edc1983f]<?php
date("d.m.Y H:i:s", $info[2])
?>[/php:1:66edc1983f]
Nitro
22.08.2003, 10:39:36
[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.