Gå til innhold

Anbefalte innlegg

Skrevet

Hallo. Driver å skrive en Tag cloud i php. Der tag's lagres i ei kolonne i blog_post tabellen og trenger hjelp til spørringen som skal vise alle poster som feks har tag'en PHP. de forskjellige tagene er skilt med komma eks: php,html,css,mysql,vi

Noen som har noen idè til hvordan få til dette?

Videoannonse
Annonse
Skrevet (endret)

SELECT * FROM blog_post WHERE tags LIKE '%tag%';

I PHP blir det da:

PHP
<?php

$keyword $_GET['key'];

$query "SELECT * FROM blog_post WHERE tags LIKE '%{$keyword}%'";

?>

Endret av endrebjorsvik
Skrevet
de forskjellige tagene er skilt med komma eks: php,html,css,mysql,vi

Sikker på at dette er en hensiktsmessig struktur? Funker kanskje greit om du har få poster og/eller en fulltekst-index på tag-kolonnen, men..

Skrevet

ville vel heller brukt fulltext søk på det?

 

PHP

<?php

$keyword = $_GET['key'];

$query = "SELECT * FROM blog_post WHERE MATCH(tags) AGINST('".$keyword."')";

?>

 

må ha myisam tabell og fulltext colonne for at det skal fungere... (varchar 300) feks..

Skrevet (endret)
SELECT * FROM blog_post WHERE tags LIKE '%tag%';

I PHP blir det da:

PHP
<?php

$keyword $_GET['key'];

$query "SELECT * FROM blog_post WHERE tags LIKE '%{$keyword}%'";

?>

7025510[/snapback]

 

Løsningen din fungerer i MySQL "console" men via php så returnerer bare alle rader i tabellen.

<?

$keyword = $_GET['key'];

$query = "SELECT * FROM blog_post WHERE tags LIKE '%{$keyword}%'";

$fetch = mysql_query($query);

while($result = mysql_fetch_array($fetch)){

print $result['tags'];

print "<br/>";

} ?>

Endret av hjertnes
Skrevet
Joda jeg hadde lagt inn verdi i den GET variabelen med ?key=DetJegSøkerEtter.

7027299[/snapback]

Jeg vet at det i seg selv ikke er noen løsning på problemet ditt, men du BØR ta hintet om fulltekstsøk til etteretning. Spørringer med "LIKE '%ettellerannet'" direkte dreper enhver ytelse siden databasemotorene ikke lenger kan bruke indekser til å gjøre oppslag, og voila: Du får tablescan.

Skrevet
Joda jeg hadde lagt inn verdi i den GET variabelen med ?key=DetJegSøkerEtter.

7027299[/snapback]

Jeg vet at det i seg selv ikke er noen løsning på problemet ditt, men du BØR ta hintet om fulltekstsøk til etteretning. Spørringer med "LIKE '%ettellerannet'" direkte dreper enhver ytelse siden databasemotorene ikke lenger kan bruke indekser til å gjøre oppslag, og voila: Du får tablescan.

7027697[/snapback]

Det høres ut som en langt mer solid løsning. Jeg har aldri hørt om det før, men når jeg leser om det her virker det som at det er mye mer tilrettelagt enn et LIKE '%bla-bla%'-søk. :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...