Marot Opublikowano 31 Stycznia 2007 Udostępnij Opublikowano 31 Stycznia 2007 Piszę moda w .php do mojej gry na podstawie Vallheru pod adresem: www.marotgra.rtu.pl // mała reklama A teraz pora na problem: Oto fragment kodu: if (isset ($_GET['zreal'])) { if (!ereg("^[1-9][0-9]*$", $_GET['zreal'])) { error ("Zapomnij o tym!"); } $real = $db -> Execute("SELECT * FROM magazyn WHERE id=".$_GET['zreal']); if (!$real -> fields['id']) { error ("Nie ma takiej potrawy"); } if ($real -> fields['cena_sprzedazy'] > $player -> credits) { error ("Nie stać cię!"); } if ($real -> fields['ilosc'] <=0) { error ("Składniki się skończyły. Barman nie może przyrządzić potrawy!"); } $test = $db -> Execute("SELECT id FROM zamowienia WHERE id=".$_GET['zreal']); if (!$test -> fields['id']) { $db -> Execute("UPDATE magazyn SET ilosc=ilosc-1 WHERE id=".$_GET['zreal']); $db -> Execute("UPDATE saldo_karczmy SET saldo=saldo+".$real -> fields['cena_sprzedazy'].""); $db -> Execute("UPDATE players SET energy=energy+".$real -> fields['najedzenie'].", promile=promile+".$real -> fields['promile'].", najedzenie=najedzenie+".$real -> fields['najedzenie']." WHERE id=".$test -> fields['klient']""); $db -> Execute("UPDATE zamowienia SET karczmarz='".$player -> id."', zrealizowano='Y' WHERE id=".$_GET['zreal']""); $db -> Execute("UPDATE players SET credits=credits+".$real -> fields['cena_sprzedazy']." WHERE id=".$player -> id""); } else { $db -> Execute("UPDATE magazyn SET ilosc=ilosc-1 WHERE id=".$_GET['zreal']); $db -> Execute("UPDATE saldo_karczmy SET saldo=saldo+".$real -> fields['cena_sprzedazy']""); $db -> Execute("UPDATE players SET energy=energy+".$real -> fields['najedzenie'].", promile=promile+".$real -> fields['promile'].", najedzenie=najedzenie+".$real -> fields['najedzenie']." WHERE id=".$test -> fields['klient']""); $db -> Execute("UPDATE zamowienia SET karczmarz='".$player -> id."', zrealizowano='Y' WHERE id=".$_GET['zreal']""); $db -> Execute("UPDATE players SET credits=credits+".$real -> fields['cena_sprzedazy']." WHERE id=".$player -> id""); } $test -> Close(); $real -> Close(); } I wyskakuje błąd: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\***\karczma.php on line 152 Błąd występuje w tych liniach: 150 $db -> Execute("UPDATE magazyn SET ilosc=ilosc-1 WHERE id=".$_GET['zreal']); 151 $db -> Execute("UPDATE saldo_karczmy SET saldo=saldo+".$real -> fields['cena_sprzedazy'].""); 152 $db -> Execute("UPDATE players SET energy=energy+".$real -> fields['najedzenie'].", promile=promile+".$real -> fields['promile'].", najedzenie=najedzenie+".$real -> fields['najedzenie']." WHERE id=".$test -> fields['klient']""); 153 $db -> Execute("UPDATE zamowienia SET karczmarz='".$player -> id."', zrealizowano='Y' WHERE id=".$_GET['zreal']""); 154 $db -> Execute("UPDATE players SET credits=credits+".$real -> fields['cena_sprzedazy']." WHERE id=".$player -> id""); Chodzi o te kropeczki, cudzysłowia i " ' ". Ale jak to naprawić?? Mam nadzieję na szybką odpowiedź, z wytłumaczeniem na czym polega błąd, bym na przyszłość to dobrze rozumiał! :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 3 Lutego 2007 Udostępnij Opublikowano 3 Lutego 2007 Znalazłem błąd. Jest na ostatnim miejscu pogrubiony: 152 $db -> Execute("UPDATE players SET energy=energy+".$real -> fields['najedzenie'].", promile=promile+".$real -> fields['promile'].", najedzenie=najedzenie+".$real -> fields['najedzenie']." WHERE id=".$test -> fields['klient']""); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Lutego 2007 Administratorzy Udostępnij Opublikowano 3 Lutego 2007 dla dodatkowego bezpieczeństwa zamiast ".$real -> fields['najedzenie']." daj ".($real -> fields['najedzenie'])." a na końcu zamiast WHERE id=".$_GET['zreal']""); daj WHERE id=".$_GET['zreal']); bez " " lub postaw przed . - WHERE id=".$_GET['zreal'].""); (bo to kropoki brakuje, stąd błąd - niespodziewany ciąg znaków, ale cudzysłowy na koniec nie są już potrzebne bo i tak tam nic nie ma) Poza tym, gdybyś wcześniej przypisał do zmiennych gety i inne pierdoły, to było by jeszcze prościej np. zamiast: $db -> Execute("UPDATE players SET energy=energy+".$real -> fields['najedzenie'].", promile=promile+".$real -> fields['promile'].", najedzenie=najedzenie+".$real -> fields['najedzenie']." WHERE id=".$test -> fields['klient']""); było by $energy=$real -> fields['najedzenie']; $promile=$real -> fields['promile']; $najedzenie=$real -> fields['najedzenie']; $klient=$real -> fields['klient']; $db -> Execute("UPDATE players SET energy=energy+$najedzenie, promile=promile+$promile, najedzenie=najedzenie+$najedzenie WHERE id=$klient"); bo teraz wstawianie cudzysłowów mija się z celem i tylko niepotrzebnie wydłużasz działanie skryptu, bo w każdym ciągu " " szuka czy są jakieś zmienne wstawione, a w ciągach ' ' by tego nie szukał -> ułamki bo ułamki, ale zaoszczędzone sekundy :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marot Opublikowano 3 Lutego 2007 Autor Udostępnij Opublikowano 3 Lutego 2007 Dzięki, może teraz to zrozumiem. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się