Wysłany: 2016-07-20, 17:41
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Prawie dobrze tylko zuawa?y?em w bazie, ?e zamiast aktualizowa? rekordy, dodaje nast?pne.
Wysłany: 2016-07-20, 18:25
eject
kurdebele
Wiek: 30 Na forum: 3659 dni Posty: 182
Nick w MP: EjecT
Piwa : 2456
teraz usun -- przy id zeby pobieralo id przy update
Wysłany: 2016-07-20, 18:29
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Nadal local connect = dbConnect ( "sqlite" , "test.db" )
if connect then
outputDebugString ( "Po??czono z baz? danych" )
else
outputDebugString ( "Nie uda?o si? po??czy? z baz? danych" )
end
function zapis ()
for k , v in ipairs ( getElementsByType ( "vehicle" )) do
local id = getElementData ( v , "car_id" )
if id then
local paliwo = getElementData ( v , "fuel" ) or 0
local przebieg = getElementData ( v , "przebieg" ) or 0
local woda = getElementData ( v , "zapelnienie" ) or 0
dbQuery ( connect , "INSERT INTO dane (paliwo,przebieg,woda, id) VALUES(?,?,?,?)" , paliwo , przebieg , woda , id )
end
end
end
addEventHandler ( "onResourceStop" , resourceRoot , zapis )
function odczyt ()
dbQuery ( connect , "SELECT * FROM dane" )
end
addEventHandler ( "onResourceStart" , resourceRoot , odczyt )
function aktualizacja ()
for k , v in ipairs ( getElementsByType ( "vehicle" )) do
local id = getElementData ( v , "car_id" )
if id then
local paliwo = getElementData ( v , "fuel" ) or 0
local przebieg = getElementData ( v , "przebieg" ) or 0
local woda = getElementData ( v , "zapelnienie" ) or 0
local test = dbExec ( connect , "UPDATE dane SET paliwo=?, przebieg=?, woda=? WHERE id=?" , paliwo , przebieg , woda , id )
if test then
outputDebugString ( "Zaktualizowano dane" )
end
end
end
end
-- setTimer ( aktualizacja , 50 , 0 )
addCommandHandler ( "zapisuj" , aktualizacja )
Wysłany: 2016-07-20, 19:41
Brzysiek
Skrypter pralek
Wiek: 27 Na forum: 5198 dni Posty: 488
Nick w MP: Brzysiek
Piwa : 1034
Nic dziwnego. W onResourceStop masz inserta, czyli z ka?dym zatrzymaniem zasobu b?d? wpisywane dane. Zamie? to na UPDATE.
Wysłany: 2016-07-20, 21:42
luki123luki123
Place Game
Wiek: 28 Na forum: 5275 dni Posty: 1948
Nick w MP: LuKiO
Piwa : 6101
marcin778 , w funkcji zapis musisz u?y? zapytania opartego o SELECT i sprawdzenie czy takie auto istnieje w bazie danych je?eli nie to dodajesz a je?eli nie to updatujesz je tylko.
Tutaj masz m?j poradnik w kt?rym prawie wszystko jest opisane.
http://gtao.pl/poradnik-sql-sqlite-vt102403.htm
"eject" napisał/a :marcin778 , Mo?na u?ywa? lecz jest to obci??enie dla servera oraz to jest wygodniejsze
To nie jest prawda. Poniewa? w ten spos?b czy standardowy dodaj?c argumenty tak samo jest obci??any serwer. A co do wygody metod to jest kwestia indywidualna.
Kolejna sprawa marcin778 , jest ni? ten Timer, lepiej u?y? komendy i je?eli gracz jest w aucie to sprawdza czy to jest auto prywatne oraz jakie ma id i sprawdzasz czy jest, je?eli jest to dodajesz je do bazy danych, a je?eli jest to tylko updatetujesz. Timer w takim zastosowaniu jest po prostu nie optymalny jak mo?na wykona? lepiej oraz efektywniej.
Wysłany: 2016-07-20, 21:59
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
Brzysiek , Nie dzia?a, nie zapisuje wcale nic.
local connect = dbConnect ( "sqlite" , "test.db" )
if connect then
outputDebugString ( "Po??czono z baz? danych" )
else
outputDebugString ( "Nie uda?o si? po??czy? z baz? danych" )
end
function zapis ()
for k , v in ipairs ( getElementsByType ( "vehicle" )) do
local id = getElementData ( v , "car_id" )
if id then
local paliwo = getElementData ( v , "fuel" ) or 0
local przebieg = getElementData ( v , "przebieg" ) or 0
local woda = getElementData ( v , "zapelnienie" ) or 0
dbExec ( connect , "UPDATE dane SET paliwo=?, przebieg=?, woda=? WHERE id=?" , paliwo , przebieg , woda , id )
end
end
end
addEventHandler ( "onResourceStop" , resourceRoot , zapis )
function odczyt ()
dbQuery ( connect , "SELECT * FROM dane" )
end
addEventHandler ( "onResourceStart" , resourceRoot , odczyt )
function aktualizacja ()
for k , v in ipairs ( getElementsByType ( "vehicle" )) do
local id = getElementData ( v , "car_id" )
if id then
local paliwo = getElementData ( v , "fuel" ) or 0
local przebieg = getElementData ( v , "przebieg" ) or 0
local woda = getElementData ( v , "zapelnienie" ) or 0
local test = dbExec ( connect , "UPDATE dane SET paliwo=?, przebieg=?, woda=? WHERE id=?" , paliwo , przebieg , woda , id )
if test then
outputDebugString ( "Zaktualizowano dane" )
end
end
end
end
-- setTimer ( aktualizacja , 50 , 0 )
addCommandHandler ( "zapisuj" , aktualizacja )
luki123luki123 , Ca?y czas korzystam z tego poradnika, ale to co teraz napisa?e? nie zbyt rozumiem to moje pierwsze kroki w SQL
Wysłany: 2016-07-21, 13:37
luki123luki123
Place Game
Wiek: 28 Na forum: 5275 dni Posty: 1948
Nick w MP: LuKiO
Piwa : 6101
marcin778 , zacznijmy co b?dzie ci potrzebne i do czego:
Więcej informacji znajdziesz w Wikipedii MTA: dbConnect
Zapis:
Więcej informacji znajdziesz w Wikipedii MTA: dbQuery
Więcej informacji znajdziesz w Wikipedii MTA: dbPoll
Więcej informacji znajdziesz w Wikipedii MTA: DbFree
zapytania:
SELECT
SELECT * FROM table_name WHERE table_column = ?
INSERT INTO
INSERT INTO table_name ( column_table , column_table , column_talbe ) VALUES ( ?, ?, ? )
UPDATE
UPDATE pojazdy SET column_name = "..zmienna.." , column_name = "..zmienna.." WHERE column_name = "..zmienna
Wysłany: 2016-07-21, 13:59
dudeks
Wiek: 31 Na forum: 6576 dni Posty: 171
Piwa : 89
luki123luki123 , jak ju? to
db ...( "UPDATE pojazdy SET column_name=?, column_name=? WHERE column_name=?" , zmienna , zmienna , zmienna )
Nie ucz z?ych nawyk?w, potem b?dzie p?acz "omg eskjuel ind?ekszyn mi tu zrobili...". Co prawda przed wszystkim to nie zabezpieczy, ale lepiej mie? to ni? nic.
Wysłany: 2016-07-21, 14:02
marcin778
Krytyk serwerów MTA
Wiek: 24 Na forum: 4149 dni Posty: 2268
Nick w MP: Marcineg
Piwa : 4662
dudeks , Rozumiem ze "column_name" mam zamieni? na nazwy kolumn.
Wysłany: 2016-07-21, 14:14
dudeks
Wiek: 31 Na forum: 6576 dni Posty: 171
Piwa : 89
Tak. Og?lnie je?eli tworzysz jaki? system pojazd?w na bazie danych to najlepiej Ci b?dzie utworzy? tabel?, powiedzmy 'vehicles' z kolumnami:
ID z auto_increment
model
pozycja
inne, jakie potrzebujesz.
ID z auto_increment b?dzie Ci nadawa?o nowe ID pojazdu z ka?dym kolejnym zapytaniem typu INSERT.
U?atwi Ci to znacz?co spraw? przy nast?pnym usuwaniu czy zapisywaniu konkretnego auta.
Tagi: pierwszy :: zapis :: sql
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: