webForumDet fria alternativet

Hjälp med enkel sökmaskin!

PHP

6 svar · 414 visningar · startad av klockren

Medlem sedan sep. 200151 inlägg
Frågan#1

Hej!

I en mySQL-tabell har jag lagt in ett register över mina skivor. Kolumnerna heter rec_id (unik nyckel), skiv_namn (text) , artist (text), rel_year (4 siffror), betyg (en siffra) samt nyckelord (255 tecken, avgränsade nyckelord med komma).

Hittills ser min webgränssnitt ut så att artisterna listas i ett php-dokument, när man klickar på en artist visas samtliga skivor med denna artist samt information om skivorna. Så långt sträcker sig mina php-kunskaper...

Nu vill jag även kunna välja FLER än en sort-order, text att sortera på titel OCH utgivningsår OCH betyg... hur gör jag det? (Tex artist stigande, utgivningsår stigande samt betyg sjunkande)

Sedan vill jag även konstruera en sökmotor till databasen, hur kodar jag grundstommen för denna?

Tacksam för hjälp
/novizen

Medlem sedan juni 200032 967 inlägg
#2

Sorteringen är lättlöst.

... ORDER BY artist ASC, releaseyear ASC, grade DESC

.

För att söka i textfält i en databas använder du operatorn LIKE. Exempel:

SELECT * FROM tabellen WHERE fältet LIKE '%metallica%'

En sådan SQL-fråga hämtar alla poster där strängen 'metallica' återfinns någonstans i fältet 'fältet'.

Lycka till!

Mvh,

Medlem sedan sep. 200151 inlägg
#3

Hej igen & tack för tipset!

Då kanske du/någon också vet hur jag anger flera sökord, ex

www.mindomän.com/search.php?sok&key=curt+cobain+1991

Alla dessa tre sökorden finns lagrade i kolumnen keywords i tabellen. Ska jag med något string-kommando separera orden vid varje plustecken eller hur är det man gör?

Dessutom undrar jag vad som returneras om ingenting hittas vid en sökning, alltså hur kollar jag om $result är tom efter en sökning, eftersom jag då vill visa meddelandet "Inga träffar"?
$result = mysql_query("SELECT * FROM skivor WHERE keywords LIKE '%$key%'");

Finns det något sett att se hur många "rader" som lagrats i $result sa jag INNAN utskriften av resultatet kan printa "4 skivor hittades."

MVH
Jonas

Medlem sedan juni 200032 967 inlägg
#4

Ska jag med något string-kommando separera orden vid varje plustecken eller hur är det man gör?

Jag skulle tro att det är så du får göra. Jag kan visserligen varken PHP eller MySQL, men så får man göra på min 'hemmaplan'. Separera, och bygg ihop SQL-frågan med OR eller AND mellan de olika sökdelarna, beroende på vad som önskas.

Dina andra frågor har behandlats tidigare, så pröva att söka lite här på wF, så hittar du nog svaren. :)

Mvh,

Medlem sedan sep. 200151 inlägg
#5

Hallå @nders, du har inte lust att tipsa om några trådar som behandlar mitt huvudbry... jag hittar dem tyvärr inte!

MVH
J

Medlem sedan jan. 2000224 inlägg
#6

För att få reda på hur många "träffar" du har i din $result variabel använder du t.ex mysql_num_rows..

Ex:

$result = mysql_query("SELECT * FROM table1");
$num_rows = mysql_num_rows($result);

echo "$num_rows";

Antar att du menar så här.. med - och +..
länken..

skiva.php?query=metallica+unforgiven
Använd explode().
$query  = explode("+",$query);

Då blir $query en array med metallica och unforgiven..
Sedan kan man väl sätta ihop lite OR och AND i mysql frågan och få ett reslutat. Har inte prövat men det verkar logiskt. :)

Medlem sedan dec. 20002 526 inlägg
#7

U2K, gillar inte din signatur :)
ASP vs PHP = 10-0 borde det stå....

363 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
223 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
224 ms — ändringar (db)