Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Dziwny wynik równania
Forum PHP.pl > Forum > Przedszkole
Lethys
Piszę gry browserową i obecnie tworzę więzienie z możliwością wykupienia więźnia poprzez zapłatę kaucji. Mój problem polega na tym że zapłata różni się od tej która jest pokazana w tabeli.

Aby wam pokazać o co chodzi zrobiłem screeny :





No i teraz kod ( zmienna $kaucja to ten wzór ) :

  1. <?php
  2. if (!$top) {
  3. $tsel = mysql_query("select * from players where wiezienie='1' and miasto='$stat[miasto]'");
  4. while ($top = mysql_fetch_array($tsel)) {
  5. $kara = floor(($top[kara]/10));
  6. $kaucja = floor(($top[kara]*123)/10);
  7. print "<tr><td><center>$top[user]</center></td><td><center>$kara dni</center></td><td><center>$kaucja złota</center></td><td><center><a href=wiezienie.php?top=$top[id]>Zapłać</a></center></td>";
  8. }
  9. print "</table><br>";
  10. }
  11.  
  12.  
  13.  
  14. if ($top) {
  15. if (empty ($top[id])) {
  16. print "<font color=\"#FF0000\"><b><center><br>Nie ma takiego gracza lub nie znajduje się on w więzieniu!<br><br></center></b></font><meta http-equiv=\"Refresh\" content=\"1; url=wiezienie.php\">";
  17. }
  18. if ($kaucja > $stat[money]) {
  19. print "<font color=\"#FF0000\"><b><center><br>Nie masz tyle pieniędzy!<br><br></center></b></font><meta http-equiv=\"Refresh\" content=\"1; url=wiezienie.php\">";
  20. }
  21. $kaucja = floor(($top[kara]*123)/10);
  22.  
  23.  
  24. mysql_query("update players set money=$stat[money]-$kaucja where id=$stat[id]") or die("Nie można wpłacić kaucji");
  25. print "<br><br><center><font color=\"#008000\">Zapłaciłeś <b>$kaucja</b> pieniędzy kaucji i uwolniłeś gracza (id <b>$top[user]</b>) z więzienia.</font><br><br><br></font><meta http-equiv=\"Refresh\" content=\"2; url=wiezienie.php\">";
  26. mysql_query("update players set wiezienie=0 where id=$top[id]");
  27. mysql_query("update players set kara=0 where id=$top[id]");
  28. }
  29. ?>



Wzór zapłaty jest taki sam jak wyświetlane w tabeli, nie rozumiem czemu inna liczba wychodzi :/

Może ktoś zerknąć ?
VegA
Mogę się tylko domyślać, ale nie jestem pewny biggrin.gif masz tutaj 2x $kaucja (raz w IF a raz po za IF) Spróbuj raz dać if np. na początku przed tym if (!$top) { Może to coś da, ale nie jestem pewny haha.gif
Myślę tak ponieważ na początku wynik jest dobry, a później zły. Najpierw masz $kaucja i później też biggrin.gif Czyli możliwe, że z tym drugim jest coś źle tongue.gif

Drugi błąd jaki mi przyszedł do głowy to taki, że na początku masz dobrą kaucje chodzi mi o to, że dobrze ją pobiera z bazy, a za drugim nie. Daj to:

  1. <?php
  2. $tsel = mysql_query("select * from players where wiezienie='1' and miasto='$stat[miasto]'");
  3. $kara = floor(($top[kara]/10));
  4. $kaucja = floor(($top[kara]*123)/10);
  5. ?>


na samym początku przed if za raz po <?php i wykasuj to drugie $kaucja = (...) które jest prawie na końcu smile.gif możliwe, że teraz będzie działać. Tyle mi przyszło do głowy. Spróbuj tych dwóch sposobów i napisz czy działa.
Lethys
@Twoje sposoby nie działały ale sam już rozwiązałem smile.gif

Przed updatami do bazy danych dałem zmienne z pętli :

  1. <?php
  2. $tsel = mysql_query("select * from players where wiezienie='1' and miasto='$stat[miasto]'");
  3. $top = mysql_fetch_array($tsel);
  4. $kaucja = floor(($top[kara]*123)/10);
  5. ?>
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.