Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie po kolorze
Forum PHP.pl > Forum > Przedszkole
benzulli
Witam

Mam pewien problem, mianowicie chciałbym posortować imiona osób, które są online, w tym celu używam takiej funkcji:

  1. $rows = mysql_query("SELECT * FROM people ORDER BY name ASC");
  2. while ($row = mysql_fetch_array($rows))
  3. {
  4. $name = $row['name'];
  5. if(preg_match("/$name/", $link)) {
  6. echo '<li><span style="color:green">'.$row['name'].'</span></li></br>';
  7. } else {
  8. echo '<li><span style="color:red">'.$row['name'].'</span></li></br>';
  9. }
  10. }


Mam listę 20 imion, która sortuje się alfabetycznie, tylko chciałbym, żeby rekordy o kolorze zielonym wyświetlały się pierwsze (osoby online), a następnie osoby o kolorze czerwonym (osoby offline). Stan osób online pobieram z cURLa, tak więc baza danych odpada.
pitu
W tej pętli zamiast wyświetlać wrzucaj nicki do tablic online i offline. W następnej pętli wyświetl najpierw osoby z tablicy online, następnie z offline.
Pyton_000
Dodawaj do tablicy odpowiednio a potem wyświetlaj
Michael2318
Zapisz sobie do tablicy te wszystkie rekordy:

  1. $arr_online = array();
  2. $arr_offline = array();
  3. while ($row = mysql_fetch_array($rows))
  4. {
  5. $name = $row['name'];
  6. if(preg_match("/$name/", $link)) {
  7. $arr_online[] = '<li><span style="color:green">'.$row['name'].'</span></li></br>';
  8. } else {
  9. $arr_offline[] = '<li><span style="color:red">'.$row['name'].'</span></li></br>';
  10. }
  11. }


I teraz wyświetl, najpierw tablicę z osobami online, potem z osobami offline:

  1. // wyświetlamy userów z tablicy ONLINE
  2. for($i=0; $i<=(count($arr_online)-1); $i++)
  3. {
  4. echo $arr_online[$i];
  5. }
  6.  
  7. // wyświetlamy userów z tablicy OFFLINE
  8. for($i=0; $i<=(count($arr_offline)-1); $i++)
  9. {
  10. echo $arr_offline[$i];
  11. }
benzulli
Dzięki wszystkim.

Przez 2-3 lata piszę cos czasami w php, często szukam czegoś w internecie, po kilka godzin, lecz kiedy nie mogę natrafić na odpowiednią opcję wystarczy, że napiszę posta tutaj, a po chwili dostanę gotowy kod. Coś pięknego, wielkie dzięki, Panowie smile.gif
Michael2318
W sumie to można to zrobić jeszcze prościej:

  1. $arr_online = '';
  2. $arr_offline = '';
  3. while ($row = mysql_fetch_array($rows))
  4. {
  5. $name = $row['name'];
  6. if(preg_match("/$name/", $link)) {
  7. $arr_online .= '<li><span style="color:green">'.$row['name'].'</span></li></br>';
  8. } else {
  9. $arr_offline .= '<li><span style="color:red">'.$row['name'].'</span></li></br>';
  10. }
  11. }
  12.  
  13. echo $arr_online.$arr_offline;
benzulli

A jeszcze jedno, np. jak bym chciał zrobić coś takiego:

1. <a href="strona.pl/index.php?name=michal">michal</a>
2. <a href="strona.pl/index.php?name=tomek">tomek</a>
3. <a href="strona.pl/index.php?name=ania">ania</a>

czyli ogólnie coś takiego

<a href="strona.pl/index.php?name=zmienna">zmienna</a>,
wcześniej mogłem coś takiego zrobić, a teraz?
Michael2318
No to robisz to po prostu wewnątrz tych zmiennych, np. to:

  1. $arr_online .= '<li><span style="color:green">'.$row['name'].'</span></li></br>';


zmieniasz na:

  1. $arr_online .= '<a href="strona.pl/index.php?name='.$zmienna.'">'.$zmienna.'</a>';
benzulli
Jeszcze raz dzięki, także za cierpliwość.
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.