Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Quest "SQL"


Rekomendowane odpowiedzi

Opublikowano

Witam mam taki problem z zapytaniem

 

chcę zeby rekordy x i y zapisywały sie w tabeli tak jak jest w tym zapytaniu ale wywala mi błąd w konsoli serwera " ERROR 1062 (23000) at line 1: Duplicate entry '6564' for key 'PRIMARY' "

Oto moje zapytanie w quescie

 

query("UPDATE player.nazwa_tabeli SET `y` = '"..y.."', `z` = '"..z.."';")

 

Zapytanie działa tylko po zapisaniu wywala ten błąd w konsolu chcę zeby y i z były zapisywane a jezeli sie powtórzy to samo to aktualizowało sie np x lub y a nie duplokowało

Opublikowano

Zapisywanie kordów:

query("INSERT INTO player.nazwa_tabeli (`name`,`kord-x`,`kord-y`) VALUES ('".. pc.get_name() .."', '".. y .."', '".. z .."';")

 

Wczytywanie tych kordów:

query("SELECT `kord-x`, `kord-y` FROM player.nazwa_tabeli WHERE `name` = '".. pc.get_name() .."';")

Opublikowano

@Up nie chdzi mi o kordy chce cos takiego

 

:

 

query("UPDATE player.wymiar_wladcow SET `nick` = '"..pc.get_name( ).."', `czas` = '"..czas.."';")

 

tylko tym zapytaniem wywala mi błąd

Opublikowano

@Up nie chdzi mi o kordy chce cos takiego

 

:

 

query("UPDATE player.wymiar_wladcow SET `nick` = '"..pc.get_name( ).."', `czas` = '"..czas.."';")

 

tylko tym zapytaniem wywala mi błąd

Bo updatujesz rekord, zamiast dodać nowy ...

Poprawnie :

("INSERT INTO player.wymiar_wladcow SET `nick` = '"..pc.get_name( ).."', `czas` = '"..czas.."';")

Btw w moim topiku z funkcjami są nowsze funkcje do komunikacji z SQL'em po przez lua ;)..

1377371138-U1002370.png

Opublikowano

@Welnes

 

Zobacz w tabeli nick jesli 2x zrobie wymiar wywala mi

 

" ERROR 1062 (23000) at line 1: Duplicate entry 'Test' for key 'PRIMARY' "

 

hmm ...

 

Już wiem czemu ; p.

Edytuj tabele i taki "klucz" ustaw na kolumnę inną niż nick ;).

Po prostu główny klucz nie może się powtarzać..

1377371138-U1002370.png

Opublikowano

zrób tabele id | nick | czas

 

na id dodaj auto_increment i unique.

 

wtedy uzyj zapytania

 

("INSERT INTO player.wymiar_wladcow SET `id` = '', `nick` = '"..pc.get_name( ).."', `czas` = '"..czas.."';")

 

(w tym nie bedziesz mial problemu z dodawaniem rekordów bo kazdy nastepny bedzie mial wyzsze id)

 

optymalnie by bylo zrobic z id postaci (mniej rekordów)

 

plusem jest to, że będziesz mógł zliczyć ile razy dany gracz był na arenie.

Opublikowano

Dobra, jeśli już wybrałeś 1 sposób to się nim zajmijmy.

 

Na tamten nie patrz, sam nie wiem czy dobrze to napisałem :D

 

Usuń swoją tabelkę i masz tutaj nową:

 

CREATE TABLE `player`.`wymiar_wladcow` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nick` VARCHAR( 24 ) NOT NULL ,
`czas` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE (
`id`
)
) ENGINE = MYISAM

Opublikowano

@up

 

Przez console wywołane zapytanie działa dobrze tylko cos z gry mi się jebie

 

36232386830533792559.png

 

 

Napisałem na szybko questa do testowania i przez niego tez mi nie działa ....

 


quest testxx begin
   state start begin
		   when 9010.chat."Test Tabele" begin
				   say_title("Wpisz dane:")
	local c = input()
	local x = input()
	say("twoje wyniki to ")
	say(c)
	say(x)
	query("INSERT INTO player.wymiar_wladcow SET `id` = '', `nick` = '"..c.."', `czas` = '"..x.."")
		   end
   end
end

Opublikowano

Może nie radzi sobie z pustym polem..

 

spróbuj tak:

 

quest testxx begin
	   state start begin
					   when 9010.chat."Test Tabele" begin
									   say_title("Wpisz dane:")
		    local c = input()
		    local x = input()
		    local id = 0
		    say("twoje wyniki to ")
		    say(c)
		    say(x)
		    query("INSERT INTO player.wymiar_wladcow SET `id` = '"..id.."', `nick` = '"..c.."', `czas` = '"..x.."")
					   end
	   end
end

Opublikowano

Nie lepiej zastosować takie query zamiast je*ać sie z czymś tam.. (np. do give_baisc_weapon.quest):

query("DELETE * FROM player.achievement WHERE `name` ='".. pc.get_name() .."';")
query("INSERT INTO player.achievement (`name`,`zadanie1`,`point`) VALUES ('".. pc.get_name() .."', '1', '10');")

 

I później do update'u:

 query("INSERT INTO player.achievement SET `point` = '".. Aktualne_Punkty .."', `zadanie1` = '200' WHERE `name` = ".. pc.get_name() ..";")

 

Ja tak mam u sb i jest git. :)

Opublikowano

@up emax

 

przetestowałem poprawiony quest i w konsoli wywala

 

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''4242' at line 1

Opublikowano

zrobiłeś błąd w testowym quescie i go nie zauważyłem

 

query("INSERT INTO player.wymiar_wladcow SET `id` = '"..id.."', `nick` = '"..c.."', `czas` = '"..x.."")

 

popraw na

 

query("INSERT INTO player.wymiar_wladcow SET `id` = '"..id.."', `nick` = '"..c.."', `czas` = '"..x.."';")

Opublikowano

@Up

dzieki działa eMax 5 i max like ;) teraz mam tylko take pytanie nie chce tworzyc nowego tematu

 

 

Chce zrobic tak ze z tabeli w player o nazwie nevs ma pobierac dane tabela wygloda tak

 

Tebela w navs z kolumną text i chcę zeby z kolumny text wyswietlic text w grze w guescie jak to zrobic bo dopieru sie ucze ogarniac lua-sql i musze trochę ogarnac ;)

Opublikowano

@Up

dzieki działa eMax 5 i max like ;) teraz mam tylko take pytanie nie chce tworzyc nowego tematu

 

 

Chce zrobic tak ze z tabeli w player o nazwie nevs ma pobierac dane tabela wygloda tak

 

Tebela w navs z kolumną text i chcę zeby z kolumny text wyswietlic text w grze w guescie jak to zrobic bo dopieru sie ucze ogarniac lua-sql i musze trochę ogarnac ;)

Musisz dodać funkcję "query_array" z mojego topika z funkcjami, następnie pobrać za pomocą tej funkcji i zapytania SELECT dane z tabelki i wyświetlić je np pod pętlą for, jeśli wszystkie, a jeśli konkretne to wywołać dane z tablicy.

Tyle wiedzy Ci starczy, reszty domyślisz się sam, to forum nie jest od gotowców.

1377371138-U1002370.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...