Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcja dodajaca pieniądze
Forum PHP.pl > Forum > Przedszkole
darthblue
Witam mam problem z tą funkcja
CODE
function dodaj($id, $ile) //dawanie złota
{
connect();
$ilekasy = "SELECT gold FROM gracze WHERE id='$id'";
$kasa = mysql_query($ilekasy);
$suma = $kasa + $ile;
$dajkase = "UPDATE gracze SET gold='$suma' WHERE id='$id'";
mysql_query($dajkase);
mysql_close();
}

Funkcja connect(); to polaczenie z baza
Problem polega na tym ze gdy uzyje tej funkcji
dodaj('1', '100');
to 100 domyslnych pieniedzy gracza o id 1 zmieni sie na 103 zamiast dodac 100(co wychodzi 200)
Prosze o pomoc
Wieviór
Zrób może tak:

  1. <?
  2. $dajkase = "UPDATE gracze SET gold=gold+".$ile." WHERE id=".$id;
  3. mysql_query($dajkase);
  4. ?>
mike
1. Proszę dostosować tytuł wątku do zasad panujących na forum Przedszkole;
2. A nie można prościej?
  1. UPDATE tabela SET kasa = kasa + 100 WHERE id = 1;
darthblue
Teraz wyglada to tak
CODE
function dodaj($id, $ile) //dawanie złota
{
connect();
$ilekasy = "SELECT gold FROM gracze WHERE id = '$id'";
$kasa = mysql_query($ilekasy);
$dajkase = "UPDATE gracze SET gold = $kasa + $ile WHERE id = '$id'";
mysql_query($dajkase);
mysql_close();
}

Ale nadal nie dziala, zaznaczam ze musze najpierw pozyskac informacje o posiadanej gotówce i wtedy do niej dodać określoną liczbe $ile

JUZ PO PROBLEMIE!!!
Zamienilem zapytanie na takie jak podał mike i dziala!!! Dzieki ci mike masz plusa!
rob3rt0
A tak:
Kod
function dodaj($id, $ile) //dawanie złota
{
connect();
$dajkase = "UPDATE gracze SET gold = gold + '{$ile}' WHERE id = '{$id}'";
mysql_query($dajkase);
mysql_close();
}


Po co pobierasz tą ilość złota wcześniej questionmark.gif
darthblue
Nastepny problem
CODE
$hpgracza = mysql_query("SELECT hp FROM gracze WHERE id = $id;");
$maxatk = mysql_query("SELECT max FROM gracze WHERE id = $id;");
$minatk = mysql_query("SELECT min FROM gracze WHERE id = $id;");
echo "$hpgracza";
echo "$maxatk";
echo "$minatk";


Kod zwraca takie cos Resource id #3Resource id #4Resource id #5 zamiast wartosci
Wieviór
Zobacz tak:

  1. <?php
  2. echo $hpgracza;
  3. echo $maxatk;
  4. echo $minatk;
  5. ?>
darthblue
Cytat(Wieviór @ 14.02.2008, 19:34:13 ) *
Zobacz tak:

  1. <?php
  2. echo $hpgracza;
  3. echo $maxatk;
  4. echo $minatk;
  5. ?>

hmm nie pomoglo nadal zwraca te resources
nowotny
Cytat(darthblue @ 14.02.2008, 19:31:23 ) *
Kod zwraca takie cos Resource id #3Resource id #4Resource id #5 zamiast wartosci

Naucz się pobierać wyniki zapytania... zajrzyj do manuala i sobie poczytaj co zwraca mysql_query" title="Zobacz w manualu PHP" target="_manual... już w pierwszym poście miałeś źle ale ci nikt uwagi nie zwrócił...
http://pl.wikibooks.org/wiki/PHP/Jak_to_si...ie_wynik.C3.B3w
Wieviór
  1. <?
  2. $hpgracza_zap = mysql_query("SELECT hp FROM gracze WHERE id = $id;");
  3. $maxatk_zap = mysql_query("SELECT max FROM gracze WHERE id = $id;");
  4. $minatk_zap = mysql_query("SELECT min FROM gracze WHERE id = $id;");
  5.  
  6. $hpgracza = mysql_fetch_array($hpgracza_zap);
  7. $maxatk = mysql_fetch_array($maxatk_zap);
  8. $minatk = mysql_fetch_array($minatk_zap);
  9.  
  10. echo $hpgracza;
  11. echo $maxatk;
  12. echo $minatk;
  13. ?>


;]
nowotny
Uprasza się o nie karmienie newbiesów gotowymi rozwiązaniami... winksmiley.jpg
darthblue
Cytat(Wieviór)
$hpgracza_zap = mysql_query(\"SELECT hp FROM gracze WHERE id = $id;\");
$maxatk_zap = mysql_query(\"SELECT max FROM gracze WHERE id = $id;\");
$minatk_zap = mysql_query(\"SELECT min FROM gracze WHERE id = $id;\");

$hpgracza = mysql_fetch_array($hpgracza_zap);
$maxatk = mysql_fetch_array($maxatk_zap);
$minatk = mysql_fetch_array($minatk_zap);

echo $hpgracza;
echo $maxatk;
echo $minatk;
?>[/php]

;]

TO tez nie dziala, wyskakuja bledy z mysql
Wieviór
  1. <?
  2. $sql = "SELECT hp FROM gracze WHERE id = ".$id;
  3. $wykonaj = mysql_query($sql);
  4. $hp = mysql_fetch_array($wykonaj);
  5.  
  6. echo $hp;
  7. ?>


Tu masz ogólny zarys. Popróbuj też coś czasem sam ;]

@nowotny - słusznie, ale niech ma ;]
darthblue
Cytat(Wieviór @ 14.02.2008, 19:56:14 ) *
  1. <?php
  2. $sql = &#092;"SELECT hp FROM gracze WHERE id = \".$id;
  3. $wykonaj = mysql_query($sql);
  4. $hp = mysql_fetch_array($wykonaj);
  5.  
  6. echo $hp;
  7. ?>


Tu masz ogólny zarys. Popróbuj też coś czasem sam ;]

@nowotny - słusznie, ale niech ma ;]

Sorry ale mysql to moja slaba strona... Skrypt zwraca ArrayArrayArray
Wieviór
No a popatrz na ten twój kod, jakieś znaczki dziwne na początku zmiennej $sql i ten slash przed id, po co?
anonim1133
Zwraca Ci tablice exclamation.gif musisz coś z nimi zrobić, albo skożystać z konkretncyh wartości, albo wyświetlić każde otrzymane pole
1) Sprawdź print_r($tablica) <- wyświetli Ci całą tablicę
2) Zainteresuj się foreach
Pozdrawiam smile.gif
darthblue
Cytat(anonim1133 @ 14.02.2008, 20:09:13 ) *
Zwraca Ci tablice exclamation.gif musisz coś z nimi zrobić, albo skożystać z konkretncyh wartości, albo wyświetlić każde otrzymane pole
1) Sprawdź print_r($tablica) <- wyświetli Ci całą tablicę
2) Zainteresuj się foreach
Pozdrawiam smile.gif

a czemuz to tablice skoro wybieram z tabeli tylko jedna zmeinna czyli np. hp
anonim1133
będę szczery też mnie to na początku bolało tongue.gif ale funkcja jak sama nazwa wskazuje pobiera tablice, ale to chyba nie jest większą przeszkodą? tablice czasem są nawet wygodniejsze przy 'obróbce' ;-)
darthblue
Cytat(anonim1133 @ 14.02.2008, 20:19:43 ) *
będę szczery też mnie to na początku bolało tongue.gif ale funkcja jak sama nazwa wskazuje pobiera tablice, ale to chyba nie jest większą przeszkodą? tablice czasem są nawet wygodniejsze przy 'obróbce' ;-)


To napraw to zeby bylo dobrze
CODE
function fightmob($id, $mhp, $maxdmg, $mindmg) //gracz o podanym id walczy z mobkiem o podanym hp, maksymalnym ataku maxdmg i minimalnym mindmg
{
connect();
$hpgracza = mysql_query("SELECT hp FROM gracze WHERE id = $id;");
$maxatk = mysql_query("SELECT max FROM gracze WHERE id = $id;");
$minatk = mysql_query("SELECT min FROM gracze WHERE id = $id;");
echo "Twoje hp: '$hpgracza', max atak to: '$maxatk' a min atak to: '$minatk'";
mysql_close();
}
fightmob('1', '1', '1', '1');
anonim1133
  1. <?php
  2. function fightmob($id, $mhp, $maxdmg, $mindmg){ //gracz o podanym id walczy z mobkiem o podanym hp, maksymalnym ataku maxdmg i min
  3. malnym mindmg
  4. connect();
  5. $q = mysql_fetch_assoc(mysql_query("SELECT `hp`,`max`,`min` FROM `gracze` WHERE `id` = '$id' LIMIT 1"));
  6. echo 'Twoje hp: '.$q[hp].', max atak to: '.$q[max].' a min atak to: '.$q[min];
  7. }
  8. fightmob('1', '1', '1', '1');
  9. ?>


tak powinno być dobrze... chociaż mogłeś poprosić, albo grzecznie spytać... aaale ;-) ZRÓB PAN, no to zrobiłem ( ty sprawdź czy działa;p )
tak swoją drogą, co funkcja to połączenie z bazą? ja się nie znam, ale teoretycznie, to chyba lepiej by było raz na początku skryptu się łączyć, i każde zapytanie korzystało by sobie z połączenia? teoretycznie powinno to być lepsze rozwiązanie... tak mi się wydaje ;-)
darthblue
Cytat(anonim1133 @ 14.02.2008, 20:37:24 ) *
  1. <?php
  2. function fightmob($id, $mhp, $maxdmg, $mindmg){ //gracz o podanym id walczy z mobkiem o podanym hp, maksymalnym ataku maxdmg i min
  3. malnym mindmg
  4. connect();
  5. $q = mysql_fetch_assoc(mysql_query(&#092;"SELECT `hp`,`max`,`min` FROM `gracze` WHERE `id` = '$id' LIMIT 1\"));
  6. echo 'Twoje hp: '.$q[hp].', max atak to: '.$q[max].' a min atak to: '.$q[min];
  7. }
  8. fightmob('1', '1', '1', '1');
  9. ?>


tak powinno być dobrze... chociaż mogłeś poprosić, albo grzecznie spytać... aaale ;-) ZRÓB PAN, no to zrobiłem ( ty sprawdź czy działa;p )
tak swoją drogą, co funkcja to połączenie z bazą? ja się nie znam, ale teoretycznie, to chyba lepiej by było raz na początku skryptu się łączyć, i każde zapytanie korzystało by sobie z połączenia? teoretycznie powinno to być lepsze rozwiązanie... tak mi się wydaje ;-)

Przepraszam za niegrzecznosc winksmiley.jpg Wkoncu dziala... Daje piwo, neikoniecznie z alkoholem
anonim1133
nie ma sprawy smile.gif w końcu za to mi płacą tongue.gif
nowotny
OT: no i darthblue się niczego nie nauczył... następnym razem znowu tu przyjdzie i znowu ktoś mu da gotowca... ehhh... :/
darthblue
Ok ostatnia sprawa, wiecej nie napisze...
CODE
function fightmob($id, $mhp, $maxdmg, $mindmg) //gracz o podanym id walczy z mobkiem o podanym hp, maksymalnym ataku maxdmg i minimalnym mindmg
{
connect();
$q = mysql_fetch_assoc(mysql_query("SELECT hp,max,min FROM gracze WHERE id = $id LIMIT 1"));

while($q[hp] > '0' && $mhp > '0'){

srand(time());
$traf = rand(0, 4);

if($traf != '0'){
srand(time());
$hit = rand($q[min], $q[max]);
$mhp = $mhp - $hit;
echo "Trafiasz kosmite. Obrażenia $hit"
}
srand(time());
$traf = rand(0, 4);
if($traf != '0')
{
srand(time());
$hit = rand($mindmg, $maxdmg);
$q[hp] = $q[hp] - $hit;
echo "Kosmita cie trafia. Obrażenia $hit"
}
}else echo "Koniec walki!!!";


}

fightmob('1', '100', '2', '5');

Taki sobie kodzik na walke ktory losuje czy jest trafienie czy pudlo a jak trafienie to losuje atak z przedzialu ataku max i min. Gdzies cos jest zle i pisze Parse error: syntax error, unexpected '}', expecting ',' or ';' na lini 24. Szuakm teraz czego brakuje jakiej klamry ale nic nie pomaga...
nowotny
Średników ci brakuje... gdzie, to już zobie znajdź... masz podane jak na tacy... :/
darthblue
Cytat(nowotny @ 14.02.2008, 21:11:12 ) *
Średników ci brakuje... gdzie, to już zobie znajdź... masz podane jak na tacy... :/

dziex szkoda ze te liczby losowe jakos tak dziwnie dzialaja caly czas takie same hity leca np.
Trafiasz kosmite. Obrazenia 23, zycie kosmity: 77
Kosmita cie trafia. Obrazenia 23, zycie: 96
Trafiasz kosmite. Obrazenia 23, zycie kosmity: 54
Kosmita cie trafia. Obrazenia 23, zycie: 92
Trafiasz kosmite. Obrazenia 23, zycie kosmity: 31
Kosmita cie trafia. Obrazenia 23, zycie: 88
Trafiasz kosmite. Obrazenia 23, zycie kosmity: 8
Kosmita cie trafia. Obrazenia 23, zycie: 84
Trafiasz kosmite. Obrazenia 23, zycie kosmity: -15
Kosmita cie trafia. Obrazenia 23, zycie: 80
Koniec walki!!!
Wygral gracz!!!

A POTEM

Trafiasz kosmite. Obrazenia 11, zycie kosmity: 89
Kosmita cie trafia. Obrazenia 11, zycie: 95
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 78
Kosmita cie trafia. Obrazenia 11, zycie: 90
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 67
Kosmita cie trafia. Obrazenia 11, zycie: 85
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 56
Kosmita cie trafia. Obrazenia 11, zycie: 80
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 45
Kosmita cie trafia. Obrazenia 11, zycie: 75
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 34
Kosmita cie trafia. Obrazenia 11, zycie: 70
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 23
Kosmita cie trafia. Obrazenia 11, zycie: 65
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 12
Kosmita cie trafia. Obrazenia 11, zycie: 60
Trafiasz kosmite. Obrazenia 11, zycie kosmity: 1
Kosmita cie trafia. Obrazenia 11, zycie: 55
Trafiasz kosmite. Obrazenia 11, zycie kosmity: -10
Kosmita cie trafia. Obrazenia 11, zycie: 50
Koniec walki!!!
Wygral gracz!!!

A czasami przez wiele tur nikt nie trafia i dopiero przy koncu sie zabija ;//
rob3rt0
to jak chcesz losowo to weź rand()
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.