Rayan Posted July 14, 2017 Report Share Posted July 14, 2017 Imi arata aceasta erroare, defiecare data cand editez ceva la users in baza de date, de ex, mi-am pus eu la contul meu (RedGun) am modificat din 0 in 6 la linia 'admin', am dat executa si mi-a aparut aceasta erroare: link: http://imgur.com/a/pvBJi http://imgur.com/a/479NL Ma puteti ajuta va rog frumos? Link to comment Share on other sites More sharing options...
0 Banditul Posted July 16, 2017 Report Share Posted July 16, 2017 (edited) Da, sa faci mai multe tabele pentru a salva astfel de date. Si sa faci relatii intre ele printr-un forgein key. Va trebui sa te uiti peste niste tutoriale MySQL pentru a invata aceste relatii, eu inca le invat, mai ales ca de multe ori sunt mult mai eficiente decat sa ai un tabel urias. Mai ales daca ai ajuns la 1000 fields intr-un tabel de destul de grav sincer, pentru ca e urias. Singura solutie e sa spargi acel tabel "users" in mai multe(ma refer sa muti de exemplu cele cu crime intr-un alt tabel , sau mai stiu eu ce astfel de date mai ai care pot fi separate de tabelul users) Si ca si sfat , sa folosesti mysql_pquery cand vei face aceste query de a incarca din diverse tabele pentru a putea incarca mai rapid si eficient datele. Pentru ca daca vei folosi mysq_tquery va dura oa vreme ca fiecare sa se execute in ordine, iar daca vei folosi mysql_query , ei bine , vei cam ingheta putin scriptul. Si daca vei avea mai multi playeri care se conecteaza i nacelasi timp, nu vreau sa ma gandesc. Deci sfatul meu, separa cateva lucuri de users in alte tabele si fa relatii de forgein key intre ele (adica intre tabele alea si tabelul users care va contine referinta la playeri) si foloseste mysql_pquery pentru a fae query-urile de SELECT pentru a putea incarca datele in paralel si sa fie putin mai eficient. Dar nu folosi mysql_pquery pentru restu, foloseste mysql_tquery. Edit: Sper ca ai inteles ceva , pentru ca nu sunt chiar atat de bun la scris explciatii. Edited July 16, 2017 by Banditul 1 Link to comment Share on other sites More sharing options...
0 Rayan Posted July 15, 2017 Author Report Share Posted July 15, 2017 (edited) Acum 22 ore, Banditul a spus: Arata cum ai structura la acel Object37 , cum e definit etc in baza dedate.Ca la el pare sa fie problema. Edit1: Nvm , amu am vazut poza a doua....Hmm Edit2: E o posibiliate sa aibe legatura cu Object37 si cum as putea rezolva? Edited July 16, 2017 by Rayan Link to comment Share on other sites More sharing options...
0 Rayan Posted July 16, 2017 Author Report Share Posted July 16, 2017 (edited) Acum 22 ore, Banditul a spus: Arata cum ai structura la acel Object37 , cum e definit etc in baza dedate.Ca la el pare sa fie problema. Edit1: Nvm , amu am vazut poza a doua....Hmm Edit2: E o posibiliate sa aibe legatura cu Object37 faza e ca am modificat eu ceva in baza de date, am marit pCrime de la 3 la pCrime20, si defiecare data cand intru sa editez un cont in baza de date de la 'users' imi da accest mesaj informativ cu galben: Warning: a form on this page has more than 1000 fields. On submission, some of the fields might be ignored, due to PHP's max_input_vars configuration EDIT: mda, observ, am sters toate pCrime20 si am lasat doar pana la pCrime3, si daia era.. gen eu aveam asa in gm: poza: http://imgur.com/a/uhBwz si am sters toate alea pCrime de la 4 (inclusiv) la 20 (pCrime) al lasat doar 1,2,3 , si faza e ca acum ca crimele comise de jucatori apar salvate doar 1,2,3 si toate pana la 20, exista alta modalitate sa rezolv? Edited July 16, 2017 by Rayan Link to comment Share on other sites More sharing options...
0 Rayan Posted July 18, 2017 Author Report Share Posted July 18, 2017 La 7/16/2017 la 20:04, Banditul a spus: Da, sa faci mai multe tabele pentru a salva astfel de date. Si sa faci relatii intre ele printr-un forgein key. Va trebui sa te uiti peste niste tutoriale MySQL pentru a invata aceste relatii, eu inca le invat, mai ales ca de multe ori sunt mult mai eficiente decat sa ai un tabel urias. Mai ales daca ai ajuns la 1000 fields intr-un tabel de destul de grav sincer, pentru ca e urias. Singura solutie e sa spargi acel tabel "users" in mai multe(ma refer sa muti de exemplu cele cu crime intr-un alt tabel , sau mai stiu eu ce astfel de date mai ai care pot fi separate de tabelul users) Si ca si sfat , sa folosesti mysql_pquery cand vei face aceste query de a incarca din diverse tabele pentru a putea incarca mai rapid si eficient datele. Pentru ca daca vei folosi mysq_tquery va dura oa vreme ca fiecare sa se execute in ordine, iar daca vei folosi mysql_query , ei bine , vei cam ingheta putin scriptul. Si daca vei avea mai multi playeri care se conecteaza i nacelasi timp, nu vreau sa ma gandesc. Deci sfatul meu, separa cateva lucuri de users in alte tabele si fa relatii de forgein key intre ele (adica intre tabele alea si tabelul users care va contine referinta la playeri) si foloseste mysql_pquery pentru a fae query-urile de SELECT pentru a putea incarca datele in paralel si sa fie putin mai eficient. Dar nu folosi mysql_pquery pentru restu, foloseste mysql_tquery. Edit: Sper ca ai inteles ceva , pentru ca nu sunt chiar atat de bun la scris explciatii. am inteles, insa nu prea ma pricep la chestiile cu baza de date, insa, imi poti da vreo idee cum sa fac sa se salveze diferit fata de acum e acum, crimele comise de jucatorul respectiv? (adica cele date cu /su , /call 112, first degree, stii tu)...pentru ca nu am nicio idee. ar trebui sa fac un alt Tabel cu Crimele comise de jucatori? gen cum e tabelul 'users' ? Link to comment Share on other sites More sharing options...
0 Banditul Posted July 18, 2017 Report Share Posted July 18, 2017 Spoiler -- phpMyAdmin SQL Dump -- version 4.7.0 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Jul 18, 2017 at 01:56 PM -- Server version: 10.1.24-MariaDB -- PHP Version: 7.1.6 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `exemplu` -- -- -------------------------------------------------------- -- -- Table structure for table `crimes` -- CREATE TABLE `crimes` ( `ID` int(10) UNSIGNED NOT NULL, `user_id` int(11) UNSIGNED NOT NULL, `Crima1` varchar(24) NOT NULL, `Crima2` varchar(24) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dumping data for table `crimes` -- INSERT INTO `crimes` (`ID`, `user_id`, `Crima1`, `Crima2`) VALUES (1, 1, 'User1', 'User2'); -- -------------------------------------------------------- -- -- Table structure for table `users` -- CREATE TABLE `users` ( `ID` int(10) UNSIGNED NOT NULL, `Name` varchar(24) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dumping data for table `users` -- INSERT INTO `users` (`ID`, `Name`) VALUES (1, 'Banditul'); -- -- Indexes for dumped tables -- -- -- Indexes for table `crimes` -- ALTER TABLE `crimes` ADD PRIMARY KEY (`ID`), ADD KEY `user_id` (`user_id`); -- -- Indexes for table `users` -- ALTER TABLE `users` ADD PRIMARY KEY (`ID`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `crimes` -- ALTER TABLE `crimes` MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; -- -- AUTO_INCREMENT for table `users` -- ALTER TABLE `users` MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; -- -- Constraints for dumped tables -- -- -- Constraints for table `crimes` -- ALTER TABLE `crimes` ADD CONSTRAINT `crimes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; Am facut un mic exemplu , desigur pare putin ciudat. Ideea de baza este acea ca tabelul users este tabelul de baza iar crimes este o derivata pentru ca in tabelul crimes avem o referinta catre tabelul users si anume user_id care face referinta la id-ul din tabelul users. Doar ca va trebui sa faci un query separat sa incarci datele din tabelul crimes si sa le incarci in variabilele din gm ale playerului. Si deasemenea trebuie sa faci un query separat la inregistre pentru a introduce in crimes datele playerului (inca nu am descoperit o modalitate mai buna de a face asta) Ceva de genul am facut eu intr-un gm pentru un sistem de Level: new query[221]; mysql_format(g_SQL, query, sizeof query, "INSERT INTO `players` (`username`, `password`, `salt`,`IP`) VALUES ('%e', '%s', '%e','%e')", APlayerData[playerid][PlayerName], APlayerData[playerid][PlayerPassword], APlayerData[playerid][Salt],IP); mysql_tquery(g_SQL, query, "OnPlayerRegister", "i", playerid); mysql_format(g_SQL, query,sizeof(query), "INSERT INTO `ExpLevel` (`pid`) VALUES ((SELECT `ID` FROM `players` WHERE `username` = '%e'))", APlayerData[playerid][PlayerName]); mysql_tquery(g_SQL, query, "",""); Asta e din dialogul de register , astfel incat in momentul in care un player se inregistreaza pe langa introducerea datelor in users se introduc si in crimes . Doar ca va trebui sa faci update la tabelul crimes in momentul in care se produce o crima. Asta e doar o idee de baza sa zic asa, as fi vrut sa stiu putin mai multe despre forgein key(cheie straina) mai ales ca folositoare cand faci diferite sisteme gen de ownership sau Level cum am facut eu. Tin baza de date mai organizata si e putin mai eficient. Trebuie sa te joci cu mysql, sa ii inveti smecheriile sa inveti cum functioneaza s.a.m.d. Link to comment Share on other sites More sharing options...
0 Rayan Posted July 18, 2017 Author Report Share Posted July 18, 2017 Mersi mult <3, ești cel mai tare. Problemă rezolvată! Link to comment Share on other sites More sharing options...
-1 Banditul Posted July 15, 2017 Report Share Posted July 15, 2017 (edited) Arata cum ai structura la acel Object37 , cum e definit etc in baza dedate.Ca la el pare sa fie problema. Edit1: Nvm , amu am vazut poza a doua....Hmm Edit2: E o posibiliate sa aibe legatura cu Object37 Edited July 15, 2017 by Banditul Link to comment Share on other sites More sharing options...
Question
Rayan
Imi arata aceasta erroare, defiecare data cand editez ceva la users in baza de date, de ex, mi-am pus eu la contul meu (RedGun) am modificat din 0 in 6 la linia 'admin', am dat executa si mi-a aparut aceasta erroare:
link:
http://imgur.com/a/pvBJi
http://imgur.com/a/479NL
Ma puteti ajuta va rog frumos?
Link to comment
Share on other sites
7 answers to this question
Recommended Posts