Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Dodawanie do bazy danych - syntax error

Założony przez  konrad200399.

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:
<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
$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: 
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

$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
$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
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?

$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
$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ć
$Gole $mybb->get_input('gole'MyBB::INPUT_INT); 
Zamiast
$Gole $mybb->input['gole']; 
$Gole = (int)$Gole



Użytkownicy przeglądający ten wątek:

1 gości