Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Linie, dodawanie...
Robert
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Nitro
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Wczytaj plik do tablicy, posortuj wzgledem ostatniej kolumny i pobierz odpowiedni element.
Go to the top of the page
+Quote Post
Robert
post
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


O to bedzie dobre...dzieki winksmiley.jpg
Go to the top of the page
+Quote Post
Robert
post
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


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]."|";
Go to the top of the page
+Quote Post
Nitro
post
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Robert
post
Post #6





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


Dziala smile.gif dzieki za pomoc...

Pozdrawiam
Go to the top of the page
+Quote Post
Robert
post
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
Nitro
post
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Robert
post
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


Dzieki za porady....ustosunkuje sie do nich winksmiley.jpg
Go to the top of the page
+Quote Post
Robert
post
Post #10





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Nitro
post
Post #11





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


[php:1:db0eab1e73]<?php
date("d.m.Y H:i:s", $info[2])
?>[/php:1:db0eab1e73]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:25