Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wybrany kolor dla wybranej grupy userów
Forum PHP.pl > Forum > PHP
Lejto
Jak zrobić takie coś? Jest sobie lista zalogowanych userów i chce aby np. jest sobie user Stachu i ma on 33 postów więc nick "Stachu" jest napisany czcionką czerwoną i wszyscy zalogowani co maja więcej niż 30 postów są napisani czcionka czerwona i tak samo z innymi ci co maja np. po 20 są na żółto. Jak to zrobić? Wybrany kolor przypisać do danego usera w bazie czy if edytujący ciągi znaków? A może:
  1. <?php
  2. echo "<font color='.$kolor.'>Stachu</font>";
  3. ?>
xbigos
Kod
if($ile_postow > 29){
$kolor = "red";
}
else{
$kolor = "black";
}

potem sobie dodajesz else if.
A masz informacje o grupach i kolorach grup przetrzymywane w bazie?
Lejto
mam tylko liczbę postów
grupy jak by sie dało chciałem zrobić na ifach ale chyba będę je miał w bazie
Fishu
Lepiej zrobić w grupach bo też wystarczą ify smile.gif a jak nie masz grup no to tak jak podał poprzedni kolega smile.gif
  1. <?php
  2. if($ile_postow >= 20)
  3. $color="yellow";
  4. else if($ile_postow >= 30)
  5. $color="red";
  6. else
  7. $color="#000000";
  8. ?>

Jeżeli postów jest 20 lub więcej to kolor żółty
Jeżeli postów jest 30 lub więcej to kolor czerwony
Jeżeli nie pasuje do pozostałych to kolor czarny
Oczywiście te opisy są dla newbie. Ale radziłbym ci zrobić grupy i ify przydzielające do grup smile.gif
xbigos
@fishu nie dawaj mu badziewia.
dla 100 kolor też jest żółty.
  1. <?php
  2. $ile_postow = 19;
  3. if($ile_postow < 20)//jesli mniejsze od 20 to kolor = zółty
  4. {
  5. $color="yellow";
  6. }
  7. else if($ile_postow >= 20)// jesli wieksze lub równe 20 kolor = czerwony
  8. {
  9. $color="red";
  10. }
  11. ?>


a tutaj masz cos o operatorach porównania zeby było CI troche łatwiej warunki poznać.
http://www.egrafik.pl/kurs-php/operators.comparision.php
Lejto
znam operatory porównania smile.gif
ale przeczytać nie zaszkodzi
xbigos
Jeśli chcesz jakąś pomoc to opisz dokładnie problem i coś się wyskrobie. Jutro w pracypewnie bede sie nudził więc napisze cos:) własnie pracuje nad systemem użytkowników wraz z grupami do mojej www ale na troche innej zasadzie bedzie to wszystko działać.
Lejto
@xbigos na jakiej zasadzie?
xbigos
2 tabele
---
1. grupy
2. uzytkownik

kazdy uzytkownik po osiagniciu jakiejs liczby wypowiedzi otrzymuje jakas range. rangi specjalne. no i oczywiscie prawa dostępu dla grup, dla odpowiednich podstron. Lubie wszystko mieć w bazie.
Lejto
i nie działa nie wyświetla prawidłowych kolorów błąd w zapytaniu mam ale nie wiem gdzie liczbę postów zapisuje bo bazy jak sie ktoś zaloguje kod
  1. <?php
  2. ........
  3.  
  4.  while($zapytaj_o_online1 = mysql_fetch_assoc($query5)) 
  5. {  
  6. $sql = "SELECT * FROM kto_online"; 
  7. $query = mysql_query($sql);
  8. $rows = mysql_num_rows($query);
  9. $row = mysql_fetch_array($query);
  10.  
  11. $ile_postow = $row[postow];
  12. if($ile_postow < 20)//jesli mniejsze od 20 to kolor = zółty
  13. {
  14. $color="yellow";
  15. }
  16. else if($ile_postow >= 20)// jesli wieksze lub równe 20 kolor = czerwony
  17. {
  18. $color="red";
  19. }
  20.  
  21. //dalsza część 
  22.  
  23. echo "<font color=$color>";
  24. echo ($zapytaj_o_online1['nick']);
  25.  echo "</font>";
  26. echo ', ';
  27. }
  28. ?>

zapytanie chyba jest złe bo jak np. zapisze 1 usera do kto_online z 2 postami powinna się jego nazwa na żółto pokazać i tak jest a jak zapisze 2 usera z 66 postami to jego nazwa powinna sie na czerwono pokazać a tez sie pokazuje na żółty

nie wiecie gdzie jest błąd?

to trzeba w jakiejś pętli umieści? nie w tej while
  1. <?php
  2. $sql = "SELECT * FROM kto_online"; 
  3. $query = mysql_query($sql);
  4. $rows = mysql_num_rows($query);
  5. $row = mysql_fetch_array($query);
  6.  
  7. $ile_postow = $row[postow];
  8. if($ile_postow < 20)//jesli mniejsze od 20 to kolor = zółty
  9. {
  10. $color="yellow";
  11. }
  12. else if($ile_postow >= 20)// jesli wieksze lub równe 20 kolor = czerwony
  13. {
  14. $color="red";
  15. }
  16. ?>

czy where dać?
pomóżcie!
Hazel
Jeśli w tabeli kto_online masz na pewno kolumnę postow, to powinno działać bez zarzutu, wiec upewnij się. Sprawdzaj za pomoca echo lub var_dump, co zawiera zmienna $ile_postow w odpowiednich miejscach kodu.

edit: jeśli masz więcej niż jednego usera w tabeli kto_online (więcej niż jeden rekord, to powinna być pętla, najczęściej while):
  1. <?php
  2. $sql = "SELECT * FROM kto_online"; 
  3. $query = mysql_query($sql);
  4. while ($row = mysql_fetch_array($query))
  5. {
  6. $ile_postow = $row[postow];
  7. if($ile_postow < 20)//jesli mniejsze od 20 to kolor = zółty
  8. {
  9. $color="yellow";
  10. }
  11. else if($ile_postow >= 20)// jesli wieksze lub równe 20 kolor = czerwony
  12. {
  13. $color="red";
  14. }
  15.  // tutaj dajesz echo i wyświetlasz nick usera
  16. }
  17. ?>
Lejto
nic z tego nadal źle wyświetla
Cytat
zapytanie chyba jest złe bo jak np. zapisze 1 usera do kto_online z 2 postami powinna się jego nazwa na żółto pokazać i tak jest a jak zapisze 2 usera z 66 postami to jego nazwa powinna sie na czerwono pokazać a tez sie pokazuje na żółty
Hazel
Cytat
Sprawdzaj za pomoca echo lub var_dump, co zawiera zmienna $ile_postow w odpowiednich miejscach kodu.

I napisz, co Ci wyszło z tego sprawdzania. Bez tego ani rusz, bo kod jest niby poprawny.
Lejto
var_dump poprawnie wyświetla dane muszę mieć gdzies błąd w skrypcie
edit: dam jeszcze kod:
  1. <?php
  2. {
  3.  $sql = "SELECT * FROM kto_online"; 
  4. $query = mysql_query($sql);
  5. while ($row = mysql_fetch_array($query))
  6. {
  7. $ile_postow = $row[postow];
  8. if($ile_postow < 20)//jesli mniejsze od 20 to kolor = zółty
  9. {
  10. $color="yellow";
  11. }
  12. else if($ile_postow >= 20)// jesli wieksze lub równe 20 kolor = czerwony
  13. {
  14. $color="red";
  15. }
  16.  
  17. var_dump($ile_postow);  // tutaj dajesz echo i wyświetlasz nick usera
  18. }
  19.  
  20.  
  21. while($zapytaj_o_online1 = mysql_fetch_assoc($query5)) 
  22. {  
  23.  
  24.  
  25. echo "<font color=$color>";
  26.  echo ($zapytaj_o_online1['nick']);
  27.  echo "</font>";
  28. echo ', ';
  29. }
  30. ?>

edit a jak
  1. <?php
  2. echo "<font color=$color>";
  3. ?>
wywaliłem z while i wstawiłem pomiędzy petle to tylko 1 usera koloruje
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.