Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie plików
Forum PHP.pl > Forum > Przedszkole
SonGoace
Mam następujący problem. mam w danym katalogu 100 plików txt o nazwach od 1 do 100 czyli 1.txt 2.txt itd. W każdym z tych plików jest jakaś wartość (jakaś liczba) Jak zrobić zeby skrypt pobierał dane wartości z plików sortował je od największej do najmniejszej i wyświetlał tylko 10 największych wartości. Ale żeby wyświetlał to w ten sposób.

plik nr. 1 = 45
plik nr. 7 = 42
plik nr. 99 = 40
plik nr. 30 = 22


itd.

Bardzo prosze o pomoc !!!
Majdan
Robisz pętlę otwierającą każden z plików i zapisującą jego wartości w tablicy o indexie pliku. Później tylko sortujesz tablicę.
SonGoace
próbowałem ale mi nie wychodzi sad.gif mozecie mi cos takiego napisać - jeśli to nie duży problem - prosze to dla mnie ważne !
BzikOS
Pamiętam, że kiedyś na forum było takie pytania i chyba cośtam komuś nabazgrałem - spróbuj poszukać, chociaż przyznaję, że może być problem ze znalezieniem smile.gif
SonGoace
jest problem, znajduje ale nie ma nic co by mi pomogło sad.gif
Liko
[php:1:a580e67164]
<?php
$dir = "./dir"; // katalog w ktorym sa te pliki
$file_data = array();
if( !( $d = opendir( $dir ) ) )
{
die( "Nie mogę otworzyc katalogu" );
}
while( $txt = readdir( $d ) )
{
if( $txt != "." && $txt != ".." )
{
$file_open = file( $dir."/".$txt );
$file = explode( ".txt", $txt );
$file = $file[0];
$file_open = $file_open[0];
$file_data[$file] = $file_open;
}
}
closedir( $d );
arsort( $file_data );
foreach( $file_data as $key => $value )
{
if( $i != 10 )
{
echo "Plik nr. <b>$key</b> = <b>$value</b><br>";
$i++;
}
}
?>
[/php:1:a580e67164]

Mam nadzieję, że o to Ci chodziło. Nie wiem czy można to zrobić w szybszy sposób, ale ja to zrobilem tak.
SonGoace
działą bardzo dobrze ale czegos mi w tym brakuje. bo chodzi o to, mam te rzeczone pliki txt z zawartymi liczbami. te liczby są licznikami otwierania danych plików graficznych. chce zrobić cos takiego zeby tylko pierwsze 10 rekordów było wyświetlanych. najlepiej żeby ten skrypt twożył zmienne typu

obraz[1]="nr.pliku" wartosc[1]="jakaswartosc"
obraz[2]="nr.pliku" wartosc[2]="jakaswartosc"
obraz[3]="nr.pliku" wartosc[3]="jakaswartosc"
obraz[4]="nr.pliku" wartosc[4]="jakaswartosc
obraz[5]="nr.pliku" wartosc[5]="jakaswartosc"
obraz[6]="nr.pliku" wartosc[6]="jakaswartosc"
obraz[7]="nr.pliku" wartosc[7]="jakaswartosc"
obraz[8]="nr.pliku" wartosc[8]="jakaswartosc"
obraz[9]="nr.pliku" wartosc[9]="jakaswartosc"
obraz[10]="nr.pliku" wartosc[10]="jakaswartosc"


mam nadzieje ze to nie bedzie wymagało dużych zmian smile.gif
Majdan
Dane uzsykujesz tak:
[php:1:6befa314e3]<?php
$file_data[1] = "cos";
// 1 - numer pliku
// "cos" jego zawartosc
?>[/php:1:6befa314e3]

Nie wiem, po co chcesz to zmieniać, bo tak jest wygodnie i praktycznie. Ale skoro chcesz:
[php:1:6befa314e3]<?php
$obraz[0] = "";
wartosc[0] = "";
foreach( $file_data as $key => $value )
{
obraz[] = $key;
wartosc[] = $value;

}
?>[/php:1:6befa314e3]
Liko
[php:1:a7e2b4c22a]<?php
$dir = "./dir";
$file_data = array();
$obraz = array();
$wartosc = array();
if( !( $d = opendir( $dir ) ) )
{
die( "Nie mogę otworzyc katalogu" );
}
while( $txt = readdir( $d ) )
{
if( $txt != "." && $txt != ".." )
{
$file_open = file( $dir."/".$txt );
$file = explode( ".txt", $txt );
$file = $file[0];
$file_data[$file] = $file_open[0];
}
}
closedir( $d );
arsort( $file_data );
echo "Tablica "file_data"<br><br>";
while( list( $key, $value ) = each( $file_data ) )
{
if( $i != 10 )
{
echo "Plik nr. <b>$key</b> = <b>$value</b><br>";
$i++;
$obraz[] = $key;
$wartosc[] = $value;
}
}
unset( $i );
echo "<br><br>Tablica "obraz"<br><br>";
while( list( $key, $value ) = each( $obraz ) )
{
if( $i != 10 )
{
echo "Klucz: <b>$key</b> ma wartosc <b>$value</b><br>";
$i++;
}
}
unset( $i );
echo "<br><br>Tablica "wartosc"<br><br>";
while( list( $key, $value ) = each( $wartosc ) )
{
if( $i != 10 )
{
echo "Klucz: <b>$key</b> ma wartosc <b>$value</b><br>";
$i++;
}
}
?>[/php:1:a7e2b4c22a]

To jest wersja co nic nie wyświetla tylko tworzy tablice.

[php:1:a7e2b4c22a]
<?php
$dir = "./dir";
$file_data = array();
$obraz = array();
$wartosc = array();
if( !( $d = opendir( $dir ) ) )
{
die( "Nie mogę otworzyc katalogu" );
}
while( $txt = readdir( $d ) )
{
if( $txt != "." && $txt != ".." )
{
$file_open = file( $dir."/".$txt );
$file = explode( ".txt", $txt );
$file = $file[0];
$file_data[$file] = $file_open[0];
}
}
closedir( $d );
arsort( $file_data );
while( list( $key, $value ) = each( $file_data ) )
{
if( $i != 10 )
{
$i++;
$obraz[] = $key;
$wartosc[] = $value;
}
}
?>
[/php:1:a7e2b4c22a]
SonGoace
dzieki wielkie ale dodałem do twojego poprzedniego skryptu małe conieco i działa teraz jak nalezy.

mysle ze jak wam pokaze o co mi chodziło to zrozumiecie smile.gif

[php:1:661684b08b]<?php
$dir = "./liczniki"; // tu wpisujesz katalog w ktorym sa te pliki
$file_data = array();
if( !( $d = opendir( $dir ) ) )
{
die( "Nie mogę otworzyc katalogu" );
}
while( $txt = readdir( $d ) )
{
if( $txt != "." && $txt != "..")
{
$file_open = file( $dir."/".$txt );
$file = explode( ".txt", $txt );
$file = $file[0];
$file_open = $file_open[0];
$file_data[$file] = $file_open;
}
}
closedir( $d );
arsort( $file_data );

foreach( $file_data as $key => $value )
{
if( $i != 10 )
{
echo "Plik nr. <b>$key</b> = <b>$value</b><br>";
$obraz[$i]=$key;

$wartosc[$i]=$value;

$i++;
}
}



echo("<br><img src=obraz$obraz[1]><br>otwierany = = $wartosc[1] ");
<br><img src=obraz$obraz[2]><br>otwierany = = $wartosc[2]
<br><img src=obraz$obraz[3]><br>otwierany = = $wartosc[3]
<br><img src=obraz$obraz[4]><br>otwierany = = $wartosc[4]
<br><img src=obraz$obraz[5]><br>otwierany = = $wartosc[5]
<br><img src=obraz$obraz[6]><br>otwierany = = $wartosc[6]
<br><img src=obraz$obraz[7]><br>otwierany = = $wartosc[7]
<br><img src=obraz$obraz[8]><br>otwierany = = $wartosc[8]
<br><img src=obraz$obraz[9]><br>otwierany = = $wartosc[9]
<br><img src=obraz$obraz[10]><br>otwierany = = $wartosc[10]
?>[/php:1:661684b08b]

Wielkie dzięki smile.gif

ps. konkretnie to dodałem 27 i 29 linijke smile.gif
Majdan
A mój kod jest zły? Krótki i praktyczny.
SonGoace
Nie wiem, nawet nie sprawdzałem, od początku wydał mi sie za krutki smile.gif Moze i działa ale juz za puźno, zainstalowałem tamten i działa ok smile.gif
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.