Webboard

Pełna wersja: Dodawanie do bazy danych - syntax error
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB: 1.8.6
adres forum: kbhax.xaa.pl
na czym polega problem (screen, opis, komunikaty, nazwa stylu/theme/szablonu):

Napisałem kod mający dodawać do rekordu w bazie danych daną liczbę. Polega to na tym, że osoba wpisuje w jedno okienko nazwę użytkownika, w drugie okienko wartość jaka ma być dodawana do rekordu w bazie danych. Po zapisaniu tego wszystkiego wyskakuje mi błąd " Parse error: syntax error, unexpected 'username' (T_STRING) in /home/sensithe/public_html/dodawanie.php on line 57 " 

W bazie danych użytkownik jest pod nazwą "username", a Gole pod nazwą "Gole".

kod w szablonie:
Kod PHP:
<form action="dodawanie.php" method="post"
nick:<br /> 
<
input type="text" name="username" /><br /> 
e-mail:<br /> 
<
input type="text" name="gole" /><br /> 
<
input type="submit" value="dodaj" /> 
</
form

kod w dodawanie.php
Kod PHP:
$username $_POST['username']; 
$Gole $_POST['gole']; 

if(isset(
$_POST['gole'])){
            
$_POST['gole'] = (int)$_POST['gole'];
            if(
$_POST['gole'] < 1) echo "<p class='error'>musisz zatrudnić minimum 1 trenera</p>";
            else {
              
mysql_query("update mybb_users set Gole = Gole + ".$_POST['Gole'].  where username "$_POST['username']);
              
$username['Gole'] += $_POST['gole'];
              echo "
<class='note'>Dodano gole dla użytkownika</p>";
        } 


Błąd wyskakuje w linijce: 
Kod PHP:
mysql_query("update mybb_users set Gole = Gole + ".$_POST['Gole'].  where username "$_POST['username']); 

Coś, ktoś? Z góry dzięki za pomoc :)
Spróbuj $mybb->get_input i $mybb->input
Pewnie robię coś źle, bo nadal wyskakuje ten błąd

Kod PHP:
$username $_POST['username']; 
$Gole $_POST['gole']; 

if(isset(
$_POST['gole'])){
                
$_POST['gole'] = (int)$_POST['gole'];
                if(
$_POST['gole'] < 0) echo "<p class='error'>musisz wpisać minimum 0 goli</p>";
                else {
                    
mysql_query("update mybb_users set Gole = Gole + ".$_POST['gole'].  where username "$mybb->input['username']);
                    
$username['Gole'] += $_POST['gole'];
                    echo "
<class='note'>Dodano gole dla użytkownika</p>"; 
Gole = Gole + ".$_POST['Gole']

tu masz zle
Kod PHP:
$username $_POST['username']; 
$Gole $_POST['gole']; 

if(isset(
$_POST['gole'])){
                
$_POST['gole'] = (int)$_POST['gole'];
                if(
$_POST['gole'] < 0) echo "<p class='error'>musisz wpisać minimum 0 goli</p>";
                else {
                    
mysql_query("update mybb_users set Gole = Gole + "$_POST['gole']"  where username = "$_POST['username']);
                    
$username['Gole'] += $_POST['gole'];
                    echo 
"<p class='note'>Dodano gole dla użytkownika</p>";
                } 

A błąd wyskakuje tym razem o treści:
Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in /home/sensithe/public_html/dodawanie.php on line 57
Kod PHP:
mysql_query("update mybb_users set Gole = 'Gole + ".$_POST['gole']."'  where username = '".$_POST['username']."'"); 
Hmm, niby wszystko działa, po naciśnięciu wyskakuje napis dodano gole ale po sprawdzeniu w bazie nic się nie zmieniło i jest tak jak było. Może być to kwestia tego, że gdzieś walnąłem literówkę i nie znajduje bazy danych o nazwie Gole?

Kod PHP:
$username $_POST['username']; 
$Gole $_POST['gole']; 

if(isset(
$_POST['gole'])){
                
$_POST['gole'] = (int)$_POST['gole'];
                if(
$_POST['gole'] < 0) echo "<p class='error'>musisz wpisać minimum 0 goli</p>";
                else {
                    
mysql_query("update mybb_users set Gole = 'Gole + ".$_POST['gole']."'  where username = '".$_POST['username']."'");                                        echo "<p class='note'>Dodano gole dla użytkownika</p>";
                                }

jakiej bazy? widząc wycinek nie da sie nic powiedziec
druga sprawa to jest dzirawe, szukac usera po nicku, nie nie, tak sie nie robi

Twój kod nie jest bezpieczny, ktoś może Ci narobić bigosu

poczytaj o sql injection
Kod PHP:
$username $mybb->user['uid']; 
$Gole $mybb->input['gole']; 

if(isset(
$Gole)){
    
$Gole = (int)$Gole;
    if(
$Gole 0) echo "<p class='error'>musisz wpisać minimum 1 goli</p>";
    else {
        
$db->update_query("users"$gole"WHERE uid={$username}");                             
        echo 
"<p class='note'>Dodano gole dla użytkownika</p>";
    }


Może zadziała :D
Żeby to zadziałało trzeba dołączyć global.php z głównego katalogu forum.
Do tego można użyć
Kod PHP:
$Gole $mybb->get_input('gole'MyBB::INPUT_INT); 
Zamiast
Kod PHP:
$Gole $mybb->input['gole']; 
$Gole = (int)$Gole