hjertnes Skrevet 8. oktober 2006 Del 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? Lenke til kommentar
endrebjo Skrevet 8. oktober 2006 Del 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 Lenke til kommentar
Frank2004 Skrevet 8. oktober 2006 Del 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.. Lenke til kommentar
zandzpider Skrevet 8. oktober 2006 Del 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.. Lenke til kommentar
hjertnes Skrevet 8. oktober 2006 Forfatter Del 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 Lenke til kommentar
endrebjo Skrevet 8. oktober 2006 Del 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 Lenke til kommentar
hjertnes Skrevet 8. oktober 2006 Forfatter Del Skrevet 8. oktober 2006 Joda jeg hadde lagt inn verdi i den GET variabelen med ?key=DetJegSøkerEtter. Lenke til kommentar
roac Skrevet 8. oktober 2006 Del 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. Lenke til kommentar
endrebjo Skrevet 8. oktober 2006 Del 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. Lenke til kommentar
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å