Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Proste Sortowanie
Forum PHP.pl > Forum > Przedszkole
Krisso
Witam mam problem z poniższym kodem:

  1. <?php
  2. $plik = "baza.txt";
  3. $dane = file($plik); for($i=0;$i<count($dane);$i++) 
  4. { 
  5. list($autor[$i], $tytul[$i], $wyd[$i],$rw[$i],$isbn[$i],$gat1[$i],$gat2[$i],$opis[$i] ) = explode("`", $dane[$i]);
  6. } rsort($tytul); $i=0;
  7. while($i < count($tytul)) {
  8.  echo "Autor:  ".$autor[$i]."<br /> Tytuł:  ".$tytul[$i]."<br />Wydawnictwo:  ".$wyd[$i]. "<br /> Rok wydania:  " .$rw[$i]. "<br /> Numer ISBN:  " .$isbn[$i]. "<br />Gatunek:  ".$gat1[$i]. "<br /> Gatunek:  " .$gat2[$i]. "<br /> Opis:  ".$opis[$i]. "<hr />
  9. ";
  10.  $i++;
  11. }
  12. ?>


I z jakiegos powodu wynik nie jest taki jaki być powinien. Tzn. dane wejsciowe są następujące:

Cytat
Mickiewicz Adam`Dziady`PWN`1985`456123-987-987`powiesc`literacka`Nudna ksiazka ale co robic to lektura jest
Sienkiewicz Henryk`Potop`PWN`1992`1236-9875-4865`powiesc`historyczna`Fajna lekturka


A wyswietlając nie sortuje mi wszystkich inf o danym zbiorze tylko uklada tytuły książek, czego wynik jest następujący:

Cytat
Autor: Mickiewicz Adam
Tytuł: Potop
Wydawnictwo: PWN
Rok wydania: 1985
Numer ISBN: 456123-987-987
Gatunek: powiesc
Gatunek: literacka
Opis: Nudna ksiazka ale co robic to lektura jest Autor: Sienkiewicz Henryk
Tytuł: Dziady
Wydawnictwo: PWN
Rok wydania: 1992
Numer ISBN: 1236-9875-4865
Gatunek: powiesc
Gatunek: historyczna
Opis: Fajna lekturka


I co najważniejsze moje pytanie brzmi: Gdzie popełniłem błąd, że nie przenosi wszystkich inf tylko te co sortuje
BibDeep
Witaj...

Błąd w twoim skrypcie polega na posortowaniu tylko tablicy tytułów, dlatego tylko to Ci prawidłowo wyświetla.
W moim rozwiązaniu skorzystałem z tego, że każdy element wpisu ma taki sam klucz w każdej z twoich tablic (autor, tytuł itp), więc najprościej wydawało mi się posegregować elementy przy zachowaniu klucza, a następnie wykorzystać te klucze przy wyświetlaniu reszty danych każdego rekordu smile.gif... dobra, dosyć gadania, pewnie i tak już za bardzo zakręciłem...

kod poniżej...

  1. <?php
  2.  
  3. $plik = "baza.txt";
  4. $dane = file($plik);
  5. for($i=0;$i<count($dane);$i++)
  6. {
  7. list($autor[$i], $tytul[$i], $wyd[$i],$rw[$i],$isbn[$i],$gat1[$i],$gat2[$i],$opis[$i] ) = explode("`", $dane[$i]);
  8. }
  9.  
  10. asort($tytul); //sortowanie z zachowaniem kluczy
  11.  
  12.  
  13. // Ponizej wykorzystanie klucza $key z posegregowanej w kolejnosci alfabetycznej e
    lementow tablicy $tytul
  14. // Tutaj zmienna $val jest niewykorzystana, ale zostawiam, zebys wiedzial jak mozn
    a jeszcze inaczej to wykorzystac
  15. // $val to oczywiscie element tablicy, ktory posiada klucz $key
  16.  
  17. while(list ($key, $val) = each ($tytul)) 
  18. {
  19. echo "Autor: ".$autor[$key]."<br /> Tytuł: ".$tytul[$key]."<br />Wydawnictwo: ".$wyd[$key]. "<br /> Rok wydania: " .$rw[$key]. "<br /> Numer ISBN: " .$isbn[$key]. "<br />Gatunek: ".$gat1[$key]. "<br /> Gatunek: " .$gat2[$key]. "<br /> Opis: ".$opis[$key]. "<hr />";
  20. }
  21.  
  22. ?>


Zrobiłem to tak na szybko, ale nie powinno być źle... a nawet jeśli to pewnie już będziesz wiedzieć gdzie szukać smile.gif

PS: używaj odpowiednich znaczników zamiast cytatu do wyświetlania kodu php smile.gif
Krisso
Dzięki za pomoc.
Wcale za bardzo nie zakręciłeś, wszystko jest napisane zrozumiale.

Ps. Na przyszlość będę już używał odpowiednich znaczników.
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.