Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyróżnienie danych wyświetlanych z bazy
Forum PHP.pl > Forum > Przedszkole
shreker
Witam.
Mam bazę w postaci powiedzmy: id, wartosc.
Wartosci w bazie jest powiedzmy 20.
Potrzebuję wyróżnić 5 największych wartości wyświetlając je innymi kolorami każda.
buliq
I z czym masz problem?
Szymciosek
Przy generowaniu tabeli w php ( ta, która ma Ci się wyświetlić ) robisz dla pierwszych pięciu przelotów pętli echo + class 'colored' (tutaj jakiś tr/td czy co tam chcesz)

Oczywiście dane zwrócone z bazy muszą być posortowane.
shreker
Kompletnie nie o to chodzi.
wyświetlam dane tak:
zapytanie: select * from tabela order by id asc
  1. while ($wiersz = sqlite_fetch_array($dane))
  2. {
  3. echo $dane['wartosc'];
  4. }

Tak jak napisałem sortowanie musi zostać po id, nie można go zmienić. Chodzi o to że wartości zmieniają się w bazie, a wyróżnionych ma zostać 5 najwyższych, w tym każda innym kolorem.
Najprościej byłoby zmienić w zapytaniu sortowanie, ale kolejność ma zostać po id.
Podejrzewam że trzeba było by puścić wyniki drugą pętlą, albo coś w tym rodzaju, tylko jak?
buliq
pobierasz dane z bazy i zapisujesz w tablicy, przy okazji robisz tablicę pomocniczą w której zapisujesz samą wartość $pomoc[] = $dane['wartosc'];

sortujesz $pomoc z zachowaniem klucza, wycinasz 5 elementów z największymi wartościami

robisz pętlę do wyświetlenia danych sprawdzasz albo według klucza, albo in_array jeżeli wartość elementu jest w tablicy to jest jedna z 5

@edit:

Ewentualnie, robisz sql order według wartosc 5 wyników, pobierasz same id, zapisujesz w tablicy, robisz ten swój sql, robisz pętlę if wartosc elementu jest w poprzednim sql.
shreker
Jakbyś mógł buliq uchylić nieco bardziej rąbka tajemnicy. Do tablicy dane jasna sprawa, całość w istniejącej pętli da się zrobić. Tylko jak póżniej $pomoc "rozpracować" ?
buliq
Zastanów się ewentualnie nad tym drugim pomysłem.

W pomocy zapisujesz tylko wartości, które posortujesz przy pomocy arsort i wytniesz z nich pierwsze 5 elementów:
  1. $cut = array_slice($pomoc, 0, 5);

Teraz, w $cut masz dane $key => $value gdzie $value to wartosc.

Musisz pamiętać że podczas zapisywania danych z bazy do tablicy, robiłeś to w tej samej kolejności co wartosc do tablicy $pomoc.

Jeżeli będziesz wyświetlał dane przy pomocy foreach, czy też for, to będziesz znał indeks elementu. Jeżeli indeks tego elementu istnieje w tablicy $pomoc, to jest to jedna z 5 największych wartości.

Druga opcja, to sprawdzenie czy wartosc danego elementu jest w tablicy $pomoc;
shreker
Dzięki, zgodnie z sugestią zrobiłem dwie pętle i porównałem wyświetlane wartości z tablicą. Reszta to już css. Wszystko hula, pozdrawiam
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.