Avatar billede backside Nybegynder
19. oktober 2004 - 16:06 Der er 4 kommentarer og
1 løsning

Søg i database

Søg i mySQL:

Table 'content'
felterne:

  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL default '',
  `last_updated` timestamp(14) NOT NULL,
  `posting_time` timestamp(14) NOT NULL,
  `text` text NOT NULL,
  `keywords` text NOT NULL,
  `position` tinyint(4) NOT NULL default '0',
  `status` tinyint(4) default NULL,

Eks.:

INSERT INTO `content` VALUES (15, 'Start', 20041018235540, 20041018235435, 'indhold af side 1', 'startside keywords forside index', 0, 1);
INSERT INTO `content` VALUES (16, 'side 2', 20041019000621, 20041019000359, 'indhold af side 2', 'keywords for side 2', 0, 1);
INSERT INTO `content` VALUES (17, 'side 3', 20041019000623, 20041019000425, 'indhold af side 3', 'bla bla', 0, 1);
INSERT INTO `content` VALUES (18, 'side 4', 20041019000624, 20041019000452, 'indhold af side 4', 'bla bla', 0, 1);

osv....

Siderne vises som page.php?id=15

Hvis jeg søger efter "forside" skal der vises et link til page.php?id=15 i den iframe hvor indholdet af 'text' vises. (ud fra 'keywords')
Hvis jeg søger efter "bla" skal der vises link til page.php?id=17 og page.php?id=18

Jeg vil på samme måde kunne søge i 'text' feltet, enten ved at vælge indhold, keywords, eller ved at vælge begge.
Altså evt. 3 søgemuligheder. (med checkbox måske)

Er det gjort forståeligt? Har prøvet mig frem det meste af dagen, men den holder sku ikke rigtig. :(
Jeg er nået til det punkt hvor en færdig løsning vil være at foretrække inden jeg hacker min egen database og udryder den med en flammekaster.
....eller det der er værre, sætter min kone til at administrerer den.
Avatar billede majkat Nybegynder
19. oktober 2004 - 21:10 #1
Forstår ikke helt hvad det er du vil have hjælp til, men er det noget a la

SELECT id FROM content WHERE keywords LIKE "%forside%"

Hvorfor overhovedet bruge keywords? Med mindre din artikelsamling er stor (tusinder af artikler) kan LIKE være særdeles effektiv.

Og hvis du vitterligt har tusinder af artikler bør du overveje at bruge FULLTEXT index og MATCH ... AGAINST
Avatar billede backside Nybegynder
19. oktober 2004 - 21:44 #2
Der er ikke plan om så stort et antal.
Og måske er det ikke nødvendigt med de keywords. Har prøvet med det jeg har fundet rundt på nettet, og hvad jeg har kunnet læse mig til.
Ved ikke om jeg er dum, eller bare ikke klog nok, men noget virker ikke.....og jeg tror ikke det er databasen. ;)
Avatar billede arne_v Ekspert
19. oktober 2004 - 22:39 #3
Er det ikke reelt et PHP problem ?

Database struktur kan diskuteres:

1)  keywords som text og WHERE LIKE '%xxx%'
2)  keywords i seperat tabel med en row per ord og JOIN og WHERE = 'xxx'
3)  FULLTEXT og MATCH AGAINST

Jeg ville nok vælge #2, men alle 3 kan bruges.

Men du skal have lavet en PHP side som checker hvilke felter der er udfyldt og
dynamisk konstruerer den SQL sætning som laver den rigtige søgning.
Avatar billede backside Nybegynder
20. oktober 2004 - 08:50 #4
Avatar billede backside Nybegynder
20. oktober 2004 - 08:51 #5
Tak for respons.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester