GamesMaxed
Legacy Member
Hallo allemaal, ik zit met een probleem, maar het is belangrijk dat ik eerst uitleg wat de bedoeling van het project is.
Ik werk sinds enkele dagen een exp tracker voor de MMO Runescape. Uit de highscores kan ik het level, exp en de rank (Highscores rank) van alle 25 skills halen. Ik heb dus een array die er zo uitzuit:
Nu is de vraag hoe ik dit makkelijk in mijn database, en zeer geoptimalliseerd doe. Voor elke 25 skills heb ik 3 aparte kolommen waar exp, level, en rank instaan. Dit moet zeer geoptimallisseerd zijn aangezien ik verwacht om ongeveer 200 gebruikers te moeten doen. Ik gebruik PDO (met bindparam).
SQL
Ik werk sinds enkele dagen een exp tracker voor de MMO Runescape. Uit de highscores kan ik het level, exp en de rank (Highscores rank) van alle 25 skills halen. Ik heb dus een array die er zo uitzuit:
Code:
array(
[0]=>
'EXP' = 5946
'LEVEL' = 25
'RANK' = 156
[1]=>
'EXP' = 2595
'LEVEL' = 5
'RANK' = 548464
)
SQL
Code:
-- phpMyAdmin SQL Dump
-- version 3.5.8.1deb1
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Genereertijd: 26 jul 2013 om 12:52
-- Serverversie: 5.5.32-0ubuntu0.13.04.1
-- PHP-versie: 5.4.9-4ubuntu2.2
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Databank: `clantracker`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `clans`
--
CREATE TABLE IF NOT EXISTS `clans` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`leader` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Gegevens worden uitgevoerd voor tabel `clans`
--
INSERT INTO `clans` (`id`, `name`, `leader`, `password`) VALUES
(1, 'Lunagang', 'Feppie64', 'Lunagang2013'),
(2, 'Robin Is Pro', 'Robin', 'RobinClan'),
(3, 'Reddit', '/r/runescape', 'Reddit FTW'),
(4, 'MineCraft', 'Notch', 'ModAPI');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `user1`
--
CREATE TABLE IF NOT EXISTS `user1` (
`date` date NOT NULL,
`total_level` smallint(6) DEFAULT NULL,
`total_exp` bigint(20) DEFAULT NULL,
`total_rank` mediumint(9) DEFAULT NULL,
`attack_level` tinyint(4) DEFAULT NULL,
`attack_exp` int(11) DEFAULT NULL,
`attack_rank` mediumint(9) DEFAULT NULL,
`defence_level` tinyint(4) DEFAULT NULL,
`defence_exp` int(11) DEFAULT NULL,
`defence_rank` mediumint(9) DEFAULT NULL,
`strength_level` tinyint(4) DEFAULT NULL,
`strength_exp` int(11) DEFAULT NULL,
`strength_rank` mediumint(9) DEFAULT NULL,
`consitution_level` tinyint(4) DEFAULT NULL,
`consitution_exp` int(11) DEFAULT NULL,
`consitution_rank` mediumint(9) DEFAULT NULL,
`ranged_level` tinyint(4) DEFAULT NULL,
`ranged_exp` int(11) DEFAULT NULL,
`ranged_rank` mediumint(9) DEFAULT NULL,
`prayer_level` tinyint(4) DEFAULT NULL,
`prayer_exp` int(11) DEFAULT NULL,
`prayer_rank` mediumint(9) DEFAULT NULL,
`magic_level` tinyint(4) DEFAULT NULL,
`magic_exp` int(11) DEFAULT NULL,
`magic_rank` mediumint(9) DEFAULT NULL,
`cooking_level` tinyint(4) DEFAULT NULL,
`cooking_exp` int(11) DEFAULT NULL,
`cooking_rank` mediumint(9) DEFAULT NULL,
`woodcutting_level` tinyint(4) DEFAULT NULL,
`woodcutting_exp` int(11) DEFAULT NULL,
`woodcutting_rank` mediumint(9) DEFAULT NULL,
`fletching_level` tinyint(4) DEFAULT NULL,
`fletching_exp` int(11) DEFAULT NULL,
`fletching_rank` mediumint(9) DEFAULT NULL,
`fishing_level` tinyint(4) DEFAULT NULL,
`fishing_exp` int(11) DEFAULT NULL,
`fishing_rank` mediumint(9) DEFAULT NULL,
`firemaking_level` tinyint(4) DEFAULT NULL,
`firemaking_exp` int(11) DEFAULT NULL,
`firemaking_rank` mediumint(9) DEFAULT NULL,
`crafting_level` tinyint(4) DEFAULT NULL,
`crafting_exp` int(11) DEFAULT NULL,
`crafting_rank` mediumint(9) DEFAULT NULL,
`smithing_level` tinyint(4) DEFAULT NULL,
`smithing_exp` int(11) DEFAULT NULL,
`smithing_rank` mediumint(9) DEFAULT NULL,
`mining_level` tinyint(4) DEFAULT NULL,
`mining_exp` int(11) DEFAULT NULL,
`mining_rank` mediumint(9) DEFAULT NULL,
`herblore_level` tinyint(4) DEFAULT NULL,
`herblore_exp` int(11) DEFAULT NULL,
`herblore_rank` mediumint(9) DEFAULT NULL,
`agility_level` tinyint(4) DEFAULT NULL,
`agility_exp` int(11) DEFAULT NULL,
`agility_rank` mediumint(9) DEFAULT NULL,
`thieving_level` tinyint(4) DEFAULT NULL,
`thieving_exp` int(11) DEFAULT NULL,
`thieving_rank` mediumint(9) DEFAULT NULL,
`slayer_level` tinyint(4) DEFAULT NULL,
`slayer_exp` int(11) DEFAULT NULL,
`slayer_rank` mediumint(9) DEFAULT NULL,
`farming_level` tinyint(4) DEFAULT NULL,
`farming_exp` int(11) DEFAULT NULL,
`farming_rank` mediumint(9) DEFAULT NULL,
`runecrafting_level` tinyint(4) DEFAULT NULL,
`runecrafting_exp` int(11) DEFAULT NULL,
`runecrafting_rank` mediumint(9) DEFAULT NULL,
`hunter_level` tinyint(4) DEFAULT NULL,
`hunter_exp` int(11) DEFAULT NULL,
`hunter_rank` mediumint(9) DEFAULT NULL,
`construction_level` tinyint(4) DEFAULT NULL,
`construction_exp` int(11) DEFAULT NULL,
`construction_rank` mediumint(9) DEFAULT NULL,
`summoning_level` tinyint(4) DEFAULT NULL,
`summoning_exp` int(11) DEFAULT NULL,
`summoning_rank` mediumint(9) DEFAULT NULL,
`dungoneering_level` tinyint(4) DEFAULT NULL,
`dungoneering_exp` int(11) DEFAULT NULL,
`dungoneering_rank` mediumint(9) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `user2`
--
CREATE TABLE IF NOT EXISTS `user2` (
`date` date NOT NULL,
`total_level` smallint(6) DEFAULT NULL,
`total_exp` bigint(20) DEFAULT NULL,
`total_rank` mediumint(9) DEFAULT NULL,
`attack_level` tinyint(4) DEFAULT NULL,
`attack_exp` int(11) DEFAULT NULL,
`attack_rank` mediumint(9) DEFAULT NULL,
`defence_level` tinyint(4) DEFAULT NULL,
`defence_exp` int(11) DEFAULT NULL,
`defence_rank` mediumint(9) DEFAULT NULL,
`strength_level` tinyint(4) DEFAULT NULL,
`strength_exp` int(11) DEFAULT NULL,
`strength_rank` mediumint(9) DEFAULT NULL,
`consitution_level` tinyint(4) DEFAULT NULL,
`consitution_exp` int(11) DEFAULT NULL,
`consitution_rank` mediumint(9) DEFAULT NULL,
`ranged_level` tinyint(4) DEFAULT NULL,
`ranged_exp` int(11) DEFAULT NULL,
`ranged_rank` mediumint(9) DEFAULT NULL,
`prayer_level` tinyint(4) DEFAULT NULL,
`prayer_exp` int(11) DEFAULT NULL,
`prayer_rank` mediumint(9) DEFAULT NULL,
`magic_level` tinyint(4) DEFAULT NULL,
`magic_exp` int(11) DEFAULT NULL,
`magic_rank` mediumint(9) DEFAULT NULL,
`cooking_level` tinyint(4) DEFAULT NULL,
`cooking_exp` int(11) DEFAULT NULL,
`cooking_rank` mediumint(9) DEFAULT NULL,
`woodcutting_level` tinyint(4) DEFAULT NULL,
`woodcutting_exp` int(11) DEFAULT NULL,
`woodcutting_rank` mediumint(9) DEFAULT NULL,
`fletching_level` tinyint(4) DEFAULT NULL,
`fletching_exp` int(11) DEFAULT NULL,
`fletching_rank` mediumint(9) DEFAULT NULL,
`fishing_level` tinyint(4) DEFAULT NULL,
`fishing_exp` int(11) DEFAULT NULL,
`fishing_rank` mediumint(9) DEFAULT NULL,
`firemaking_level` tinyint(4) DEFAULT NULL,
`firemaking_exp` int(11) DEFAULT NULL,
`firemaking_rank` mediumint(9) DEFAULT NULL,
`crafting_level` tinyint(4) DEFAULT NULL,
`crafting_exp` int(11) DEFAULT NULL,
`crafting_rank` mediumint(9) DEFAULT NULL,
`smithing_level` tinyint(4) DEFAULT NULL,
`smithing_exp` int(11) DEFAULT NULL,
`smithing_rank` mediumint(9) DEFAULT NULL,
`mining_level` tinyint(4) DEFAULT NULL,
`mining_exp` int(11) DEFAULT NULL,
`mining_rank` mediumint(9) DEFAULT NULL,
`herblore_level` tinyint(4) DEFAULT NULL,
`herblore_exp` int(11) DEFAULT NULL,
`herblore_rank` mediumint(9) DEFAULT NULL,
`agility_level` tinyint(4) DEFAULT NULL,
`agility_exp` int(11) DEFAULT NULL,
`agility_rank` mediumint(9) DEFAULT NULL,
`thieving_level` tinyint(4) DEFAULT NULL,
`thieving_exp` int(11) DEFAULT NULL,
`thieving_rank` mediumint(9) DEFAULT NULL,
`slayer_level` tinyint(4) DEFAULT NULL,
`slayer_exp` int(11) DEFAULT NULL,
`slayer_rank` mediumint(9) DEFAULT NULL,
`farming_level` tinyint(4) DEFAULT NULL,
`farming_exp` int(11) DEFAULT NULL,
`farming_rank` mediumint(9) DEFAULT NULL,
`runecrafting_level` tinyint(4) DEFAULT NULL,
`runecrafting_exp` int(11) DEFAULT NULL,
`runecrafting_rank` mediumint(9) DEFAULT NULL,
`hunter_level` tinyint(4) DEFAULT NULL,
`hunter_exp` int(11) DEFAULT NULL,
`hunter_rank` mediumint(9) DEFAULT NULL,
`construction_level` tinyint(4) DEFAULT NULL,
`construction_exp` int(11) DEFAULT NULL,
`construction_rank` mediumint(9) DEFAULT NULL,
`summoning_level` tinyint(4) DEFAULT NULL,
`summoning_exp` int(11) DEFAULT NULL,
`summoning_rank` mediumint(9) DEFAULT NULL,
`dungoneering_level` tinyint(4) DEFAULT NULL,
`dungoneering_exp` int(11) DEFAULT NULL,
`dungoneering_rank` mediumint(9) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`clan` int(11) NOT NULL,
`display_name` varchar(12) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `display_name` (`display_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `users`
--
INSERT INTO `users` (`id`, `clan`, `display_name`) VALUES
(1, 1, 'Robin House'),
(2, 1, '01564864');
