Query probleem met mysql en php
Ik ben op het moment bezig met een ruilwaarde systeem voor de wel bekende community "habbohotel". De bedoeling is dat mijn script ook ruilwaardes gaat op halen van andere fansites (Ruilwaarde.nl, Habbopagina.nl), deze waardes worden opgeslagen in mijn database table "ruilwaarde_value" dit werkt allemaal prima.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--
-- Tabel structuur voor tabel `ruilwaarde_value`
--
CREATE TABLE `ruilwaarde_value` (
`value_id` int(11) NOT NULL auto_increment,
`furni_id` int(11) NOT NULL default '0',
`furni_name` varchar(255) NOT NULL,
`value_hc` varchar(11) NOT NULL,
`value_credit` varchar(11) NOT NULL,
`value_position` enum('1','2','3') NOT NULL default '2' COMMENT '1=Up, 2=Equal, 3=Down',
`value_site` enum('1','hp','rw') NOT NULL,
PRIMARY KEY (`value_id`),
FULLTEXT KEY `furni_name` (`furni_name`)
) ENGINE=MyISAM AUTO_INCREMENT=4087 DEFAULT CHARSET=utf8 AUTO_INCREMENT=4087 ;
-- Tabel structuur voor tabel `ruilwaarde_value`
--
CREATE TABLE `ruilwaarde_value` (
`value_id` int(11) NOT NULL auto_increment,
`furni_id` int(11) NOT NULL default '0',
`furni_name` varchar(255) NOT NULL,
`value_hc` varchar(11) NOT NULL,
`value_credit` varchar(11) NOT NULL,
`value_position` enum('1','2','3') NOT NULL default '2' COMMENT '1=Up, 2=Equal, 3=Down',
`value_site` enum('1','hp','rw') NOT NULL,
PRIMARY KEY (`value_id`),
FULLTEXT KEY `furni_name` (`furni_name`)
) ENGINE=MyISAM AUTO_INCREMENT=4087 DEFAULT CHARSET=utf8 AUTO_INCREMENT=4087 ;
De meubels worden aan de hand van de opgegeven category geladen uit de database table "ruilwaarde_furni". Vervolgens word er gekeken of de "furni_name" uit de table "ruilwaarde_furni" overeen komt met een "furni_name" uit de table "ruilwaarde_value", dit gebeurt nu dus nog met de mysql function LIKE %meubelname%.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
--
-- Tabel structuur voor tabel `ruilwaarde_furni`
--
CREATE TABLE `ruilwaarde_furni` (
`furni_id` int(11) NOT NULL auto_increment,
`category_id` int(11) NOT NULL,
`furni_name` varchar(255) NOT NULL,
`furni_img` varchar(255) NOT NULL,
`furni_state` enum('1','2') NOT NULL default '2' COMMENT '1=Off, 2=On',
PRIMARY KEY (`furni_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1345 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1345 ;
-- Tabel structuur voor tabel `ruilwaarde_furni`
--
CREATE TABLE `ruilwaarde_furni` (
`furni_id` int(11) NOT NULL auto_increment,
`category_id` int(11) NOT NULL,
`furni_name` varchar(255) NOT NULL,
`furni_img` varchar(255) NOT NULL,
`furni_state` enum('1','2') NOT NULL default '2' COMMENT '1=Off, 2=On',
PRIMARY KEY (`furni_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1345 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1345 ;
Het probleem is nu alleen dat ruilwaarde.nl en habbopagina.nl niet allemaal de zelfde meubel namen hebben. Bijvoorbeeld "hc bank" en "hc-bank" wanneer ik nu dus met LIKE %hcbank% zal op vragen zal ik niet het resultaat "hc-bank" krijgen.
Dit probleem heb ik al proberen op te lossen op de volgende manier:
Code (php)
1
"SELECT `furni_name`,`value_position`,`value_hc`,`value_credit` FROM `ruilwaarde_value` WHERE `value_site` = 'rw' AND `furni_id` = '" . $meubelAssoc['furni_id'] . "' OR MATCH (furni_name) AGAINST ('+" . str_replace(" ", " +", $meubelAssoc['furni_name']) . "' IN BOOLEAN MODE)";
Alleen krijg je dus ook dingen die niet kloppen bijvoorbeeld "blaue zeeduif" ook "witte zeeduif" als resultaat te zien.
Iemand enig ideé over hoe ik dit wel kan oplossen?
Gewijzigd op 24/05/2011 00:21:56 door Tom Swinkels
Er zijn nog geen reacties op dit bericht.