Skocz do zawartości

[PHP]T_CONSTANT_ENCAPSED_STRING


Marot

Rekomendowane odpowiedzi

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

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

  • Administratorzy

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...