Zoekmachine

Gestart doorTom23 reacties19 weergaven

24 berichten · pagina 1 van 2

Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Ik ben bezig met een zoekmachine voor mijn website te maken en ik moet zeggen, dat lukt redelijk, alleen nu heb ik in mijn db een rij met de naam tags staan, hoe kan ik het zo doen dat elke komma een woord scheid van de rest?

Dus dat die kijkt of dat woord daarin staat.
0
Berichten
970
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Mag ik het zoek script eens zien?
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Je moet niet met komma doen (kan wel, maar is niet enorm handig)
Query word iets van:

SELECT
blabla
FROM
blabla
WHERE
MATCH(veld) AGAINST(%hetgeen wat je zoekt%)
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
@luukvdo
Ik ga even kijken, waarom werkt het niet met LIKE?
Edit: Werkt niet.

Dat is het gedeelte wat je nodig hebt.

$sql = mysql_query("SELECT * FROM scripts WHERE tags LIKE " . $zoeken ."");
        while($fetch = mysql_fetch_assoc($sql)){
            echo<table><tr><td>;
            echoNaam:;
            echo</td><td>;
            echo $fetch[naam];
            echo</td></tr><tr><td>;
            echoUrl:;
            echo</td><td>;
            echo<a href=" . $url . $fetch[id] . "> . $url . $fetch[id] . </a>;
            echo</td></tr></table>;
        }
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Je moet tags ook in een aparte tabel opslaan, niet in een kolom. biggrin
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Dan krijg ik allemachtig veel tabellen. ofniet?

Dit is trouwens de mysql:

CREATE TABLE IF NOT EXISTS `scripts` (
  `id` int(11) NOT NULL auto_increment,
  `naam` varchar(25) NOT NULL,
  `type` varchar(50) NOT NULL,
  `tags` varchar(10) NOT NULL,
  `script` varchar(64) NOT NULL,
  `ip` varchar(128) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `naam` (`naam`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Hoezo?
CREATE TABLE tags (
id INT(10) AUTO_INCREMENT,
script_id INT(10),
tag VARCHAR(50),
PRIMARY KEY(id),
INDEX (script_id),
INDEX (tag))

edit:
volgens jouw SQL kun je maximaal 10 karakters aan tags opslaan.. dat is ook niet al te handig emo
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Waarom is dan script_id en INDEX 2 keer?

Idd, dat is niet handig.

Edit:
Waarom kan het niet allemaal in 1 tabel?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Omdat je een index van script_id en tag maakt zodat ze sneller te doorzoeken zijn. yummie
Op one2xs hebben we ook een hele zooi indexen, als we dat niet zouden hebben zou je n paar seconden op de pagina moeten wachten voordat hij geladen was, dus dat scheelt heel veel als je aardig wat data in je tabel hebt.
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Oke, waarvoor is script_id?

Hij werkt nu niet, dit is de code nu:

$sql = mysql_query("SELECT * FROM tags WHERE tags LIKE " . $zoeken ."");
        while($fetch = mysql_fetch_assoc($sql)){
            echo<table><tr><td>;
            echoNaam:;
            echo</td><td>;
            echo $fetch[naam];
            echo</td></tr><tr><td>;
            echoUrl:;
            echo</td><td>;
            echo<a href=" . $url . $fetch[id] . "> . $url . $fetch[id] . </a>;
            echo</td></tr></table>;
        }


Ik fetch nu de variabel $sql, maar ik moet ook iets fetchen waardoor die de resultaten uit de andere tabel halen, hoe moet dat?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
script_id is je id van je script.

Zoiets:
SELECT
    s.id,
    s.naam,
    s.type,
    s.script
FROM
    scripts s,
    tags t
WHERE
    t.tag LIKE %".$zoeken."%
AND
    s.id = t.script_id
GROUP BY
    s.id


Mja als je hem niet snapt gebruik dan maar de methode die je nu hebt. emo
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Nope, ik snap hem niet, maar hoe kan ik dan instellen dat hij zoekt op kommas, dat wil ik namelijk.

Lennard, ik stuur je een pb met de link van de zoekmachine.

Het script id slaat die automatisch op, dat is namelijk gewoon het id.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Hoe bedoel je, zoekt op kommas?
Je wilt zoeken op de tags die de bezoeker opgeeft lijkt me, niet op die kommas, want die kommas zijn niets meer dan om aan te geven dat de volgende tag begint.

script_id slaat hij automatisch op ja, maar niet als je zon koppeltabel hebt.

Link per PB hoeft niet per se, daar hebben we een forum voor. emo
0
Tom

Lid · Topicstarter

Berichten
3.868
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Ja, maar ik zet hem nog niet in het openbaar neer, hij is nu exclusief voor mij.

Ik wil graag dat als je een code post, dat je de woorden kan scheiden door kommas, hoe doe ik dat?
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren