Jag har försökt ett tag nu att leta reda på info om hur man gör detta, men ännu inte kunnat hitta något som hjälpt mig. (Har hittat massor av exempel, men inget som hjälpt mig något vidare.)
Hoppas därför på lite hjälp av någon som kan tala om för mig hur jag i mitt php script skall kunna få ut den datan jag vill ha ut.
(Ok, jag vet att detta är SQL forumet och inte PHP. Har dock på känn att denna frågan är med lämpad för SQL forumet, men moderator(er) är givetvis välkommna att flytta tråden till lämpligare plats).
Jag har i min databas följande tabeller (de som jag vill plocka data ur), finns fler..
-- Struktur för tabell `cc_plans`
--
CREATE TABLE IF NOT EXISTS `cc_plans` (
`id` int(11) NOT NULL auto_increment,
`type` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
`slots` varchar(11) NOT NULL default '0',
`bitrate` int(11) NOT NULL default '24',
`bandwidth` int(11) NOT NULL default '0',
`accounts` varchar(100) NOT NULL,
`proxy` varchar(100) NOT NULL default 'Disabled',
`transfer` varchar(11) NOT NULL default '0',
`destip` varchar(103) NOT NULL default 'default',
`portbase_start` varchar(7) NOT NULL default 'default',
`disable_expiry_on_creation` int(5) NOT NULL default '0',
`allow_bandwidth_payments` int(5) NOT NULL default '1',
`bandwidth_cost_per_gigabyte` varchar(100) NOT NULL default 'calculation',
`sc_trans_enabled` varchar(100) NOT NULL default '0',
`trans_upload_limit` varchar(100) NOT NULL default '30',
`cost` varchar(100) NOT NULL default '0',
`custom_link` text NOT NULL,
`display` int(5) NOT NULL default '2',
`valid` int(11) NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=52 ;
och
-- Struktur för tabell `cc_servers`
--
CREATE TABLE IF NOT EXISTS `cc_servers` (
`id` int(11) NOT NULL auto_increment,
`system_id` int(25) NOT NULL default '1',
`reseller` varchar(100) NOT NULL default 'none',
`owner` varchar(100) NOT NULL,
`plan` varchar(100) NOT NULL default 'none',
`maxuser` varchar(100) NOT NULL,
`portbase` int(11) NOT NULL default '0',
`bitrate` varchar(100) NOT NULL,
`adminpassword` varchar(100) NOT NULL,
`adminpassword_saved` varchar(150) default NULL,
`password` varchar(100) NOT NULL,
`sitepublic` varchar(100) NOT NULL default '1',
`logfile` varchar(100) NOT NULL default 'logs/log_{port}.log',
`realtime` varchar(100) NOT NULL default '1',
`screenlog` varchar(100) NOT NULL default '0',
`showlastsongs` varchar(100) NOT NULL default '10',
`tchlog` varchar(100) NOT NULL default 'Yes',
`weblog` varchar(100) NOT NULL default 'No',
`w3cenable` varchar(100) NOT NULL default 'Yes',
`w3clog` varchar(100) NOT NULL default 'logs/w3c_{port}.log',
`srcip` varchar(100) NOT NULL default 'ANY',
`destip` varchar(100) NOT NULL default 'ANY',
`yport` varchar(100) NOT NULL default '80',
`namelookups` varchar(100) NOT NULL default '0',
`relayport` varchar(100) NOT NULL default '0',
`relayserver` varchar(100) NOT NULL default 'empty',
`autodumpusers` varchar(100) NOT NULL default '0',
`autodumpsourcetime` varchar(100) NOT NULL default '30',
`contentdir` varchar(100) NOT NULL,
`introfile` varchar(100) NOT NULL,
`titleformat` varchar(100) NOT NULL,
`publicserver` varchar(100) NOT NULL default 'default',
`allowrelay` varchar(100) NOT NULL default 'Yes',
`allowpublicrelay` varchar(100) NOT NULL default 'Yes',
`listenertimer` varchar(100) NOT NULL default 'undefined',
`backupfile` varchar(100) NOT NULL,
`ripfile` varchar(250) NOT NULL default 'none',
`banfile` varchar(250) NOT NULL default 'none',
`metainterval` varchar(100) NOT NULL default '8192',
`riponly` varchar(100) NOT NULL default 'No',
`suspended` text NOT NULL,
`abuse` int(11) NOT NULL default '0',
`publicname` varchar(130) NOT NULL default 'none',
`played_mailing` int(1) NOT NULL default '0',
`messengercontrol` varchar(8) NOT NULL default 'disabled',
`streamauth` enum('disabled','enabled') NOT NULL default 'disabled',
`proxy` varchar(8) NOT NULL default 'Disabled',
`bandwidth` varchar(130) NOT NULL default 'none',
`expire` varchar(100) NOT NULL default '0',
`cost_per_month` varchar(100) NOT NULL default 'plancost',
`notified` int(1) NOT NULL default '0',
`autodj` varchar(100) NOT NULL default 'disabled',
`autodj_serverip` varchar(100) NOT NULL default 'default',
`autodj_port` varchar(7) NOT NULL default 'default',
`autodj_password` varchar(100) NOT NULL default 'default',
`autodj_bitrate` int(3) NOT NULL default '64',
`autodj_quality` varchar(15) NOT NULL default 'auto',
`autodj_upload` int(255) NOT NULL default '35',
`autodj_channels` int(1) NOT NULL default '0',
`lastplaylist` varchar(15) NOT NULL default '',
`autodj_crossfade` int(6) NOT NULL default '1',
`autodj_crossFLen` int(6) NOT NULL default '8000',
`autodj_irc` varchar(160) NOT NULL default 'N/A',
`autodj_icq` varchar(100) NOT NULL default 'N/A',
`autodj_aim` varchar(100) NOT NULL default 'N/A',
`trans_title` varchar(100) default NULL,
`trans_url` varchar(250) default NULL,
`trans_genre` varchar(20) default NULL,
`trans_shuffle` tinyint(1) NOT NULL default '0',
`laststream` int(20) NOT NULL default '0',
`commitchanges` int(11) NOT NULL default '0',
`transpid` int(100) default NULL,
`pid` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
Det jag vill uppnå, är via länken getinfo.php?username=Nisse, ställa frågan:
"Vad har användaren 'Nisse' för info" och vill då att följande händer:
Kolla i tabellen: cc_servers om användaren 'Nisse' finns där, Om så är fallet, vad har användaren 'Nisse' för plan nummer, portbase of bitrate.
(I detta exempel har 'Nisse' Plan nummer 40, portbase 12345 och Bitrate 128)
Kolla där efter i tabellen cc_plans om något matchar plan nummer 40 som vi fick från cc_servers.
I cc_plans har ett av ID fälten numret 40.
Kolla då vad som är ifyllt i fältet "Name" och "Cost".
(I detta fallet är Name="50_96_NADJ" och Cost="450"
Tillsist så presenterar scriptet fäljande data i en HTML output
"Användaren 'Nisse' använder planen '50_96_NADJ' som kostar '450'. Porten är '12345' och bitrate är satt till '128'."
I efterhand kom jag just på att jag behöver kunna ställa frågan på två olika sätt, det övre, och att fråga efter portbase (cc_servers.portbase, '8002') och då få ut samma svar som ovan.
Men jag är dessvärre inte tillräckligt bra på mysql för att kunna snida till den tidigare join-frågan för att få ut det svar jag vill ha.
Vore mycket tacksam om någon kunde tala om för mig vad jag skall fråga databasen.
select ccp.Name,
ccp.Cost,
ccs.portbase,
ccs.bitrate,
ccu.gaiastreams_uuid
from cc_plans as ccp
join cc_servers as ccs
on ccp.ID = ccs.plan
join cc_users as ccu
on ccs.owner = ccu.usermame
where ccs.owner = 'Nisse'
select ccp.Name,
ccp.Cost,
ccs.owner,
ccs.bitrate,
ccu.gaiastreams_uuid
from cc_plans as ccp
join cc_servers as ccs
on ccp.ID = ccs.plan
join cc_users as ccu
on ccs.owner = ccu.usermame
where ccs.portbase = 8002
344 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e