Milktea Skrevet 8. oktober 2007 Del Skrevet 8. oktober 2007 (endret) 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 14. oktober 2007 av Milktea Lenke til kommentar
Stian Jacobsen Skrevet 9. oktober 2007 Del Skrevet 9. oktober 2007 SELECT FROM database.tabell WHERE rad LIKE '%__SOKEORD_HER__%' ORDER BY enrad LIMIT 9999 DESC Lenke til kommentar
Mats Danielsen Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 (endret) Det svaret var litt uklart, vil dette bli riktig?: SELECT FROM database.tabell WHERE rad LIKE '%__pizza__%' ORDER BY enrad LIMIT 9999 DESC Endret 10. oktober 2007 av mats-dani Lenke til kommentar
Ståle Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 hvis du vil soke pa pizza, ma du ha LIKE '%pizza%' Lenke til kommentar
Milktea Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 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
Stian Jacobsen Skrevet 11. oktober 2007 Del Skrevet 11. oktober 2007 bruk WHERE rad LIKE '%".htmlentites($_POST['q'])."%' Lenke til kommentar
Milktea Skrevet 14. oktober 2007 Forfatter Del Skrevet 14. oktober 2007 Takk for svar, da tror jeg at jeg regner dette som løst. 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å