Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam, mam taki kod.

  1. <?php
  2. for($o=1; $o<=$liczba_szkol; $o++)
  3. {
  4. $file = fopen($plik_value[$o], 'r');
  5. $read = fread($file, 999);
  6.  
  7. echo '<tr>';
  8. echo '<td>'.$o.'</td><td>'.$read.'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  9. echo '</tr>';
  10. }
  11. ?>


Jak posortować ta tabele tak aby przy $o = 1 byla najwieksza $read i tak dalej? 1. najwieksza 2. mniejsza itd. Oczywiscie musza tez sie zgadzac wojewodztwo i nazwa, to wszystko ma byc posortowane od najwiekszego read
dangesamurai
wraz ze wzrostem $o dekrementuj $licznik=$licznik-1;


  1. <?php
  2. $licznik=999;
  3. for($o=1; $o<=$liczba_szkol; $o++)
  4. {
  5. $file = fopen($plik_value[$o], 'r');
  6. $read = fread($file, $licznik);
  7. $licznik=$licznik-1;
  8.  
  9. echo '<tr>';
  10. echo '<td>'.$o.'</td><td>'.$read.'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  11. echo '</tr>';
  12. }
  13. ?>
MateuszS
Próbowałem tak

$tablica = array($read);
$lolx = rsort($tablica[$o]);

i na wiele innnych sposobow ale lipa, prosze jakies gotowe porady bo mecze sie z tym caly wieczor, manual i google przeszukane jednak znalazlem tylko sortowanie zwyklych tablic

dangesamurai, wlepilem ten kod i nie dziala, co trzeba dodac?
erix
Cytat
Próbowałem tak

$tablica = array($read);
$lolx = rsort($tablica[$o]);

Może podaj przykładową zawartość tablicy wraz z mapowaniem klucz<->wartość?
MateuszS
sprobowalem tak

$lolx = array($read[$o] => $o);
$zonk = rsort($lolx);
potem

$zonk = array($read);
sort($zonk)
potem

$lolx = array($read => $o);
$zonk = rsort($lolx);


ze wszystkimi sortami, rsortami itd. pokazuja sie same jedynki we wszystkich wierszach, po prostu nie wiem jak to zrobic ;/

prosze o gotowe rozwiazanie. ;(
vokiel
Jak napisał erix daj nam tu
  1. <?php
  2. print_r($read);
  3. // lub
  4. var_dump($read);
  5. ?>
MateuszS
Normalnie wyswietlaja mi sie cyfry

7
3
5
2

w wierszach
probowalem

  1. <?php
  2. for($f=0; $f<=$liczba_post-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$o], 'r');
  5.    $read = fread($file, 999);
  6.    $table = array($read);
  7.    sort($table);
  8. }
  9. for($o=1; $o<=$liczba_szkol; $o++)
  10. {
  11.  
  12. $t = $o+1;
  13. echo '<tr>';
  14. echo '<td>'.$o.'</td><td>'.$table[$f].'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  15. echo '</tr>';
  16. }
  17. ?>


ale lipa
erix
Źle tablicę konstruujesz.

  1. <?php
  2. $read = fread($file, 999);
  3.   $table = array($read);
  4. ?>

Przecież to będzie zawsze zawierało tylko jeden element. tongue.gif

fgets" title="Zobacz w manualu PHP" target="_manual
MateuszS
fgets pobiera wszystkie??
nospor
Przeciez w linku co podal erix masz wyraźnie po polsku napisane...
MateuszS
Nospor: Jest po angielsku.

Ok, poprobuje dam znac jak wyszlo
nospor
Ja kliknalem ten link i mam po polsku. Widac mam tak ustawione. No ale nie problem, bys na gorze tej strony kliknal sobie:
view this page in Polish
MateuszS
Wydaje mi sie ze poprawnie to robie

  1. <?php
  2. for($f=0; $f<=$liczba_szkol-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$f], 'r');
  5.    if(!feof($file))
  6.    {
  7.        $read = fgets($file, 999);
  8.    }
  9.    $table = array($read);
  10.    arsort($table);
  11. }    
  12.    
  13.  
  14.  
  15. for($o=1; $o<=$liczba_szkol; $o++)
  16. {
  17.  
  18. $t = $o-1;
  19. echo '';
  20. echo ''.$o.''.$table[$t].''.$wojewodztwo[$o].''.$nazwa[$o].'';
  21. echo '';
  22.  
  23. }
  24. fclose($file);
  25. ?>



kupa errorow,

  1. <?php
  2. for($f=0; $f<=$liczba_szkol-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$f], 'r');
  5.  
  6.    $table = array($read);
  7.    arsort($table);
  8. }    
  9.    
  10.  
  11.  
  12. for($o=1; $o<=$liczba_szkol; $o++)
  13. {
  14.  
  15. $t = $o-1;
  16. echo '';
  17. echo ''.$o.''.$table[$t].''.$wojewodztwo[$o].''.$nazwa[$o].'';
  18. echo '';
  19.  
  20. }
  21. fclose($file);
  22. ?>


pusta tabela. Przejrzalem komentarze w manualu, staralem sie do nich dostosowac ale nic z tego nie wychodzi

dodam jeszcze

  1. <?php
  2. $nazwa[1] = 'Szkoła '; $wojewodztwo[1] = 'a';    $plik_value[1] = './szkoly/szkola1.txt';
  3. $nazwa[2] = 'Gimnazjum ';        $wojewodztwo[2] = 'a';    $plik_value[2] = './szkoly/szkola2.txt';
  4. $nazwa[3] = 'Liceum';                $wojewodztwo[3] = 'b';   $plik_value[3] = './szkoly/szkola3.txt';
  5. $nazwa[4] = 'Przedszkole';                 $wojewodztwo[4] = 'b';   $plik_value[4] = './szkoly/szkola4.txt';
  6. ?>


chce posortowac wg zawartosci liczbowej plikow $plik_value[]
erix
Cytat
Wydaje mi sie ze poprawnie to robie

Nie robisz poprawnie, bo tworzysz zmienną $table, ale tylko dla jednej (ostatniej) szkoły, bo ją cały czas nadpisujesz. tongue.gif

Cytat
chce posortowac wg zawartosci liczbowej plikow $plik_value[]

Przerób strukturę, bo raz:
  • kolejna pętla do wykonania
  • kolejne pliki do analizy
  • ciężkie do sortowania (zrób sobie tablicę wielowymiarową)
MateuszS
OK. Pobawię się tablicami. Właśnie wiedziałem że mi się to nadpisuję jednak nie miałem pojęcia jak to zmienić. Dam znać jak się uda

OK udalo mi sie posortowac z pomocą te glosy od najwiekszego do najmniejszego jednak trzeba rowniez jakos posortowac reszte tabeli wg tych glosow, macie jakies pomysly??

  1. <?php
  2. for($o=1; $o<=$liczba_szkol; $o++)
  3. {
  4. $file = fopen($plik_value[$o], 'r');
  5. $read[$o] = fgets($file, 999);
  6.  
  7. }
  8. rsort($read);
  9. for($p=0; $p<=$liczba_szkol-1; $p++)
  10. {
  11. $lp = $p+1;
  12. echo '<tr>';
  13. echo '<td>'.$lp.'</td><td>'.$read[$p].'</td><td>'.$wojewodztwo[$p].'</td><td>'.$nazwa[$p].'</td>';
  14. echo '<tr>';
  15. }
  16. ?>
erix
Cytat
najmniejszego jednak trzeba rowniez jakos posortowac reszte tabeli wg tych glosow, macie jakies pomysly??

A konkretniej? resztę tabeli
MateuszS
Mam taki skrypt

  1. <?php
  2. $refszkoly=array();
  3. $szkol=array();
  4. for($o=0; $o<$liczba_szkol; $o++)
  5. {
  6.    $file = fopen($plik_value[$o], 'r');
  7.    $line = fgets($file, 999);
  8.    fclose($file);
  9.    $splited = explode('|', $line);
  10.    $refszkoly[$o]=(int)$splited[0];
  11.    $szkol[$o]=$splited;
  12. }
  13.  
  14.  
  15. arsort($refszkoly);
  16.  
  17. $zliczam=0;
  18. foreach ($refszkoly as $id=>$count)
  19. {    
  20.    $zliczam++;
  21.    echo '<tr><td>'.$zliczam.'</td><td>'.$count.'</td><td>'.$szkol[$id][1].'</td><td>'.$szkol[$id][2].'</td></tr>';
  22. }
  23. ?>



Niby sortuje fajnie ale nie moge dodac glosu na 4 szkole nie wiem czemu, a jak zmienie w pliku 4 szkole to przy wyswietlaniu rozwala sie plik 3 a nie 4... ciezko to wytlumaczyc. Zobaczcie sami

http://mateuszs.pl/praca/glosowanie/glosowanie.php
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.