hjertnes Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 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?
endrebjo Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 (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 8. oktober 2006 av endrebjorsvik
Frank2004 Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 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..
zandzpider Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 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..
hjertnes Skrevet 8. oktober 2006 Forfatter Skrevet 8. oktober 2006 (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 8. oktober 2006 av hjertnes
endrebjo Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 Det er mest sannsynlig fordi $keyword er blank. Du har altså ikke satt noen verdi som den skal søke etter. I den snutten der setter du søkeord i URL'en: http://dinside.no/index.php?key=sokeord
hjertnes Skrevet 8. oktober 2006 Forfatter Skrevet 8. oktober 2006 Joda jeg hadde lagt inn verdi i den GET variabelen med ?key=DetJegSøkerEtter.
roac Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 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.
endrebjo Skrevet 8. oktober 2006 Skrevet 8. oktober 2006 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.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå