Gå til innhold

[LØST] Trenger hjelp til søkefunksjon (mySQL)


Anbefalte innlegg

Hei,

 

Jeg er rimlig fersk på PHP, og skal nå lage med en søkefunksjon til databasen min. Databasen min inneholder informasjon om gjenstander; vekt, identifikasjon, navn ol. Gjennom søkefunksjonen min vil jeg ha mulighet for at brukeren skal kunne velge blant annet hvilken type gjenstander treffene skal bestå av, filtere søket etter vekt og andre opplysning som måtte ligge i databasen dersom det er valg å ta disse opplysningene med i søket (jeg har noen checkboxes som skal styre dette).

 

Her kommer problemet inn; når søket er utløst vil skriptet mitt måtte stå for hvilke av opplysningene som søket skal filteres etter. Hvordan kan jeg f. eks. få søket i databasen til å bli "SELECT * FROM item WHERE weight>'100' AND type='8'" kun dersom brukeren har valg å ta med både type og vekt i søket?

 

De par metodene jeg kan tenke meg er tunge, både å lage og å kjøre for serveren (det er viktig at dette skriptet skal kunne kjøre litt kjapt og vise mange resultater av gangen).

 

Regner med at det er et PHP-skript jeg er ute etter, og at dette ikke skal ligge under databaseseksjonen. Har lett høyt og lavt en stund, men noe slikt som dette aner jeg ikke hvor jeg skal gå for å finne, eller hva jeg må søke etter for å oppdrive iom. at det er litt spesifikt.

 

Håper jeg formulerte meg godt nok. Og på forhånd; takk for svar! :)

Endret av Milktea
Lenke til kommentar
Videoannonse
Annonse

Takk for svar. Prosjektet mitt er uheldigvis ikke tilgjengelig på en stund, så jeg får ikke arbeidet videre og testet.

 

Men slik jeg har forstått det kan man søke etter en string i et entry med LIKE. Men med koden som er skrevet her kan jeg vel ikke bestemme hvilke filtre som skal aktiveres? For meg ser det der ut som en ganske enkel søkefunksjon.

 

Jeg vil ha en søkefunksjon som er slik at man f. eks. kan søke etter et navn på gjenstanden, og hvis (altså bare hvis) brukeren har aktivert filterering etter vekt i tillegg skal dette. Hvis det også er valg filtering etter type skal dette legges i tillegg til andre aktive filtre. Eller bare et filter av gangen; hvis bare vekt er valgt skal alle resultater med vekt større enn/mindre enn vekten søkt på (dette bestemmer også brukeren) bli vist, uten at navn, id eller type skal tas med i søket.

 

Fortell meg gjerne om jeg tar feil nå, men jeg kan nesten bare ikke skjønne at den little linjen der skal kunne produsere en slik søkefunksjon jeg er ute etter...

 

Tenkte noe slikt som dette kanskje går, men det kan vel gå litt sakte? Og $cid osv. marker altså om brukeren har valg å ta med $id i søket sitt.

 

$query = "SELECT * FROM items";

 

if(isset($cid)) {

$query = $query . " WHERE id='$id'";

}

 

if(isset($cname) && !isset($cid)) {

$query = $query . " WHERE name LIKE '%$name%'";

}

 

if(isset($cweight))

 

{

 

if(strlen($query > 25)) { switch($dweight) {

case 1: $query = $query . " AND weight<'$weight'"; break;

case 2: $query = $query . " AND weight>'$weight'"; break;

default: $query = $query . " AND weight='$weight'"; } }

 

else { switch($dweight) {

case 1: $query = $query . " WEHRE weight<'$weight'"; break;

case 2: $query = $query . " WHERE weight>'$weight'"; break;

default: $query = $query . " WHERE weight='$weight'"; } }

 

}

 

$data = mysql_query($query);

Lenke til kommentar

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...