Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Tablice i zmienne
Forum PHP.pl > Forum > Przedszkole
king
witam
mam taki skrypt.... pobieram dane z tabeli "users" i mam je w zmiennej $row.....i chcialbym porownac zmienna $exp z danymi w tabeli $expNeed...
skypt ma mi sluzyc do sprawdzania posiadanego expa do mojej mini-gry ktora robie dla praktyki:) ogolnie to chce zrobic cos takiego....

Plik sprawdzexp.php sprawdza ile mam posiadanego expa i jaki level, jesli mam 1level i 501expa to kolumna "level" w bazie updatuje sie i jest 2level i 501expa.....


sprawdzexp.php
  1. <?php
  2. //inkludujemy plik z hasłami
  3.  
  4.  include("config/conf.php");
  5.  
  6. //Laczenie z baza
  7. mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Nie można się połączyć z bazą: ".mysql_error());
  8. mysql_select_db($dbname) or die(mysql_error());
  9.  
  10.  
  11.  
  12.  
  13. $user = mysql_query("SELECT * FROM users WHERE login='admin'");
  14. $row = mysql_fetch_array($user);
  15.  
  16. $level=$row['level'];
  17. $exp=$row['exp'];
  18.  
  19.  
  20.  
  21.  
  22. $expNeed = array
  23. (
  24.  1 => 100,
  25.  2 => 500,
  26.  3 => 1000
  27.  // Itd.
  28. );
  29.  
  30.  
  31.  
  32. ?>



moze ktos mi pomoc?smile.gif
Maxik
Spróbuj foreach" title="Zobacz w manualu PHP" target="_manual
king
cos mi nie wychodzi. moze ktos pokazac jak mam to porownac?
np.

  1. <?php
  2. //mam zmienna
  3. $zmienna=15;
  4.  
  5. // i tablice
  6.  
  7. $expNeed = array
  8. (
  9.  1 => 100,
  10.  2 => 500,
  11.  3 => 1000
  12.  // Itd.
  13. );
  14.  
  15. // jak porowanac zmienna $zmienna z np 2 => 500,? ablo np do zmiennej $zmienna dodac 3 => 1000
  16. ?>
JoShiMa
Jeśli wczytując usera pobierasz równiez jego level to wystarczy sprawdzić:

  1. <?php
  2. $min = $expNeed[$level+1];
  3. if(exp>= $min) $level++;
  4. ?>
king
mam cos takiego.... jak mialem 570 expa to pokazywalo ze mam 2level, ale jak juz w bazie zmienilem na zebym mial 1300expa to po kazdym odswiezeniu strony level wzrasta o 1....chyba musze cos wstawic tylkko nie wiem za bardzo co:)
  1. <?php
  2. //inkludujemy plik z hasłami
  3.  
  4.  include("config/conf.php");
  5.  
  6. //Laczenie z baza
  7. mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Nie można się połączyć z bazą: ".mysql_error());
  8. mysql_select_db($dbname) or die(mysql_error());
  9.  
  10.  
  11.  
  12.  
  13. $user = mysql_query("SELECT * FROM users WHERE login='admin'");
  14. $row = mysql_fetch_array($user);
  15.  
  16. $level=$row['level'];//level gracza
  17. $exp=$row['exp'];//exp gracza
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. $expNeed = array
  26. (
  27.  1 => 100,
  28.  2 => 500,
  29.  3 => 1000
  30.  // Itd.
  31. );
  32.  
  33.  
  34. $min = $expNeed[$level+1];
  35. if($exp>= $min) {
  36. $level++;
  37. $mysql = mysql_query("UPDATE users SET level = '$level' WHERE login ='admin' ");
  38. }
  39. echo $level;
  40. ?>
elemek
sproboj tak:
  1. <?php
  2. $level_od_gory = array_reverse($expNeed);
  3. foreach ($level_od_gory as $alvl => $rexp) {
  4. if ($exp >= $rexp) {
  5. $level = $alvl;
  6. break;
  7. }
  8. }
  9. ?>

po wykonaniu tej petli zmienna level zostanie ustawiona na poziom odpowiadajacy posiadanemu doswiadczeniu.
king
hmmm to cos nie dziala.... jak ustawie sobie exp np na 560 to pokazuje ze mam 2level, jak dam na 1200 to pokazuje ze 1level, jak dam na 3000 to 0level

  1. <?php
  2. $user = mysql_query("SELECT * FROM users WHERE login='admin'");
  3. $row = mysql_fetch_array($user);
  4.  
  5. $level=$row['level'];//level gracza
  6. $exp=$row['exp'];//exp gracza
  7.  
  8. $expNeed = array
  9. (
  10.  1 => 100,
  11.  2 => 500,
  12.  3 => 1000,
  13.  4 => 2567,
  14.  // Itd.
  15. );
  16.  
  17.  
  18. $min = $expNeed[$level+1];
  19. if($exp>= $min) {
  20. $level++;
  21. $mysql = mysql_query("UPDATE users SET level = '$level' WHERE login ='admin' ");
  22. }
  23.  
  24.  
  25. $level_od_gory = array_reverse($expNeed);
  26. foreach ($level_od_gory as $alvl => $rexp) {
  27. if ($exp >= $rexp) {
  28. $level = $alvl;
  29. break;
  30. }
  31. }
  32. echo $level;
  33. ?>
JoShiMa
Cytat(king @ 21.08.2008, 16:42:47 ) *
mam cos takiego.... jak mialem 570 expa to pokazywalo ze mam 2level, ale jak juz w bazie zmienilem na zebym mial 1300expa to po kazdym odswiezeniu strony level wzrasta o 1....chyba musze cos wstawic tylkko nie wiem za bardzo co:)


To znaczy tylko, że masz w bazie niespójne dane... A nie powinno tak być smile.gif Jak ręcznie modyfikujesz exp to modyfikuj również level
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.