Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z if
childofthewind
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2011

Ostrzeżenie: (0%)
-----


Witam,
moja przygoda z PHP ogranicza się do drobnych zmian na WordPressie.
Doszedłem do momentu, w którym prosty kod, według mnie, powinien działać, a nie działa. Znaczy działa, ale nie do końca.
Już tłumaczę. Mam stronę opartą na Wordpressie, w niej widget, który pozwala wpisywać kod PHP i on działa, bo sprawdzałem kilkukrotnie, ale dziś mam problem. Chodzi o to, że mam system, który nalicza punkty użytkownikom za komentarze i takie tam. Chciałbym, żeby wyświetlał dla nich odznaki w zależności od uzyskanych punktów.
Zrobiłem coś takiego:
  1. <?php
  2. function showUserBadge( $userID ) {
  3.  
  4. if(
  5. cp_getPoints($userID) >= 0 && cp_getPoints($userID) <= 70 ) {
  6. echo '<img src="http://ingame.com.pl/wp-content/uploads/2011/10/a1.jpg" />';
  7. } else if( cp_getPoints($userID) >= 71 && cp_getPoints($userID) <= 200 ) {
  8. echo '<img src="http://ingame.com.pl/wp-content/uploads/2011/10/a2.jpg" />';
  9.  
  10. }
  11. }
  12.  
  13. ?>
  14.  
  15. <div style="float: right;">
  16. <?php showUserBadge($user->ID); ?>
  17. </div>

Dla testów mam konto, na którym jest 65 punktów. I wszystko super, wyświetla mi obrazek a1. Jeżeli zmienię w powyższym kodzie wartości tak, by obrazek wyświetlał się od 75 punktów (na przykład), nic się nie wyświetla, czyli punkty pobiera prawidłowo, nie tym musi być problem.
Problem pojawia się, gdy zmienię wartości tak, by a1 pojawiał się do na przykład 50 punktów, a a2 od 51. Mimo, że użytkownik ma 65, wciąż wyświetla mu się tylko a1.
Nie mam pojęcia, co tam jest nie tak.
Błagam o pomoc.
Powód edycji: [Daiquiri]: Dodaje tagi
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Kod
<?php

function showUserBadge($points)
{
    if($points <= 50)
    {
        echo 'do 50';
    } elseif($points >= 51 && $points <= 200)
    {
        echo 'od 51 do 200';
    }
}


showUserBadge(51);


Czyli w twoim wypadku musiało by to tak mniej więcej wyglądać:

Kod
<?php

function showUserBadge($userID)
{
    $points = cp_getPoints($userID);
    
    if($points <= 50)
    {
        echo '<img src="http://ingame.com.pl/wp-content/uploads/2011/10/a1.jpg" />';
    } elseif($points >= 51 && $points <= 200)
    {
        echo '<img src="http://ingame.com.pl/wp-content/uploads/2011/10/a2.jpg" />';
    }
}
Go to the top of the page
+Quote Post
childofthewind
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2011

Ostrzeżenie: (0%)
-----


Niestety, nic się nie zmieniło. Nadal przy każdej konfiguracji punktowej wyświetla się obrazek a1.

W tym, co napisałeś od razu powinno pojawiać się a2, a pojawia się a1. Przypomnę, że użytkownik ma 65 punktów. Już nie wiem co mam robić (IMG:style_emoticons/default/sad.gif)

Pomyślałem, żeby spróbować zamiast echo-wać, od razu wyświetlać obrazek (jeszcze w funkcji). Da się tak? Czy musi być najpierw echo a później wywołanie?

Ten post edytował childofthewind 27.10.2011, 11:45:20
Go to the top of the page
+Quote Post
tomm
post
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

Ostrzeżenie: (0%)
-----


zobacz co Ci wyświetli jeśli zrobisz

  1. function showUserBadge($userID)
  2. {
  3. $points = cp_getPoints($userID);
  4.  
  5. if($points <= 50)
  6. {
  7. echo $points;
  8. } elseif($points >= 51 && $points <= 200)
  9. {
  10. echo $points;
  11. }
  12. }
Go to the top of the page
+Quote Post
Daiquiri
post
Post #5





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Uwaga ogólna - korzystajmy z poprawnego BBCode. Zobaczcie różnicę między listingiem tomm i Waszym.
Go to the top of the page
+Quote Post
childofthewind
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2011

Ostrzeżenie: (0%)
-----


Cytat(tomm @ 27.10.2011, 13:31:12 ) *
zobacz co Ci wyświetli jeśli zrobisz

  1. function showUserBadge($userID)
  2. {
  3. $points = cp_getPoints($userID);
  4.  
  5. if($points <= 50)
  6. {
  7. echo $points;
  8. } elseif($points >= 51 && $points <= 200)
  9. {
  10. echo $points;
  11. }
  12. }





przepraszam za złe wpisanie kodu, od teraz zwrócę na to uwagę.
Tomm, wyświetla mi liczbę 0, dzięki czemu uświadomiłeś mi, że jednak błąd musi być w pobieraniu punktów. Muszę chyba lepsze odwołanie napisać.

Już działa. Zmieniłem odwołanie na
  1. $points = cp_displayPoints($uid, 1, 0);


i już poprawnie pobiera. Dziękuję Wam, bo wszystkie posty były pomocne!

Ten post edytował childofthewind 27.10.2011, 12:54:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2025 - 06:37