Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z if
Forum PHP.pl > Forum > Przedszkole
childofthewind
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.
by_ikar
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" />';
    }
}
childofthewind
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ć 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?
tomm
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. }
Daiquiri
Uwaga ogólna - korzystajmy z poprawnego BBCode. Zobaczcie różnicę między listingiem tomm i Waszym.
childofthewind
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!
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.