Problem z modyfikacją - [Problem] Ratio + beermod
[K] - 14-02-2008, 01:04 Temat postu: [Problem] Ratio + beermod Witam.
Potrzebuje 'wsadzic' do beermoda funkcje, ktora bedize wyswietlala w profilu oraz w widoku tematu pod avatarem piwne ratio, czyli stosunek piw otrzymanych do postawionych.
Wlasciwie wiem jak funkcja ma wygladac (albo tylko jestem blisko ), ale nie wiem jak zrobic zeby skrypt pobieral z bazy info o tym ile dany user ma piw.
Zmodyfikowalem troche funkcje viewprofile w beermod.php i mam teraz cos takiego
Kod: | function viewprofile($userdata)
{
global $template, $phpEx;
$beer_ratio = $user_beers_dst / $user_beers_src;
$lang = $this->lang;
$template->assign_block_vars('user_beers', array(
'L_RATIO' => $lang['Beermod_ratio'],
'RATIO' => sprintf($beer_ratio),
'L_BEERS' => $lang['Beermod_beers'],
'BEERS' => sprintf($lang['Beermod_viewprofile'], append_sid("beermod.$phpEx?mode=user_got&" . POST_USERS_URL . "=" . $userdata['user_id']), $userdata['user_beers_dst'], append_sid("beermod.$phpEx?mode=user_gave&" . POST_USERS_URL . "=" . $userdata['user_id']), $userdata['user_beers_src']),
));
} |
Jestem (prawie) pewny ze to jest zle $beer_ratio = $user_beers_dst / $user_beers_src; tzn nie tyle zle co skrypt niewie skad ma pobrac info o ilosci piw, bo jak tak odpale forum to mam taki blad
Cytat: | Warning: Division by zero in C:\Program Files\WebServ\httpd\includes\functions_beermod.php on line 408 | wiec on 'mysli' ze wartosc user_beers_src = 0, a tak wcale nie jest
Ale juz nie pisze swoich przemyslen na ten temat tylko zglaszam sie z prosba o mozliwie jak najszybsza pomoc w rozwiazaniu tego babola
Z góry dziekuje.
Pozdrawiam.
PS: Wyczytalem gdzies, ze jesli w php dzielimy przez 0 to wyskakuje blad. W takim razie chcialbym aby skrypt wykonywal takie dzialanie Cytat: | piwa_otrzymane {dzielone przez} (piwa_wystawione + 1) |
EDIT:
Dobra poglowkowalem troche i mi sie udało
kod powinien wygladac tak
Kod: |
function viewprofile($userdata)
{
global $template, $phpEx;
$user_beers_src = $userdata['user_beers_src'];
$user_beers_dst = $userdata['user_beers_dst'];
$beer_ratio = $user_beers_src / ($user_beers_dst);
$lang = $this->lang;
$template->assign_block_vars('user_beers', array(
'L_RATIO' => $lang['Beermod_ratio'],
'RATIO' => sprintf($beer_ratio),
'L_BEERS' => $lang['Beermod_beers'],
'BEERS' => sprintf($lang['Beermod_viewprofile'], append_sid("beermod.$phpEx?mode=user_got&" . POST_USERS_URL . "=" . $userdata['user_id']), $userdata['user_beers_dst'], append_sid("beermod.$phpEx?mode=user_gave&" . POST_USERS_URL . "=" . $userdata['user_id']), $userdata['user_beers_src']),
));
} |
Jednak jest tu blad w sytuacji gdy user_beers_dst = 0, a samo dodanie 1 spowoduje, ze skrypt bedzie podawal bledny/nieprawdziwy wynik
Jesli ktos wie jak dopisac cos w stylu "gdy user_beers_dst = 0 pokaz ratio = nieskonczonosc, to byłoby milutko
Jesli ktos jest chetny na ten dodatek to 5 zł - zart Postaram sie wrzucic pelna instrukcje co gdzie podmienic, bo teraz juz padam ;p
warna - 14-02-2008, 07:54
Jeśli nie chcesz dzielić przez zero i zaginać czasoprzestrzeni ( ), to spróbuj dać zamiast tego:
Kod: | $beer_ratio = $user_beers_src / ($user_beers_dst); |
to:
Kod: | $beer_ratio = ( $user_beers_dst != 0 ) ? $user_beers_src / $user_beers_dst : 'nieskonczonosc'; |
Nie testowałem, ale powinno trykać.
[K] - 14-02-2008, 08:02
Cud miod i orzeszki
Tego mi trzabyło, a ja sie meczylem z jakimis if(costam blalal... to co dales smiga pieknie.
Kolejny raz warna dostaje ode mnie warna heh
Poincik polecial
Teraz juz naprawde ide spac :]
warna - 14-02-2008, 08:24
Dobranoc
|
|
|