25. februar 2007 - 13:45Der er
24 kommentarer og 1 løsning
Søgefunktion i flere tabeller og med forskellige felter
Efter inspiration fra et andet indlæg vil jeg også gerne lave en søge funktion, men den driller, da urlen skal være forskellig, alt efter hvilken tabel, der søges i - hvordan pokker gør jeg det??
<?php if($_SERVER['REQUEST_METHOD'] == 'POST') {
$sog_ord = $_POST['soegefelt']; $query = mysql_query ("SELECT * FROM lovestories, kategori WHERE lovestories.overskrift LIKE '%$sog_ord%' OR lovestories.historie LIKE '%$sog_ord%' OR lovestories.alias LIKE '%$sog_ord%' OR kategori.overskrift LIKE '%$sog_ord%' OR kategori.indhold LIKE '%$sog_ord%'") or die(mysql_error());
I min database har jeg flere forskellige tabeller, og rækkerne hedder noget forskelligt. Samtidig er det nogle forskellige url'er, der skal kaldes, alt efter hvilken tabel søgningen finder indhold i.
Hvis jeg bare søger i én tabel, kan jeg nemt få vist mit søge resultat og få url'en til at passe, men med ovenstående har jeg prøvet at søge i to tabeller, men alt efter hvilken tabel, der bliver fundet indhold i, skal url'en være forskellig - og det er det, jeg har prøvet alt illustrere med de to if-sætninger.
Jeg tror jeg forstår hvad jeg mener ja! Men hvis du får forskellige output, alt efter hvilken tabel du får output fra, så kan du jo teste om det er det ene eller andet, og så rette URL derefter?
Ja, og det var det, jeg gerne ville have hjælp til :) Jeg har prøvet alverdens forskellige kombinationer, men intet af det har virket.
Dog er jeg også i tvivl om, om min forespørgsel til databasen er rigtig, kan du vurdere det? Lige nu er det jo kun to tabeller, men det vil ende ud med 7-8 tabeller.
Og som du kan se, har alting sit eget id, men url'en er meget forskellig - og på en eller anden måde skal jeg have udskidt, at kommer indholdet fra den tabel, skal url'en se sådan ud, og kommer det fra den tabel, skal den se sådan ud.
Så prøv at lav en SQL forespørgsel SELECT * FROM lovestories, kategori WHERE lovestories.overskrift LIKE '%$sog_ord%' OR lovestories.historie LIKE '%$sog_ord%' OR lovestories.alias LIKE '%$sog_ord%' OR kategori.overskrift LIKE '%$sog_ord%' OR kategori.indhold LIKE '%$sog_ord%'
Husk at ret sog_ord til et eller andet. Så smid hvad du får af output her.
Jeg er ikke klar over, hvordan den foresprgsel, jeg laver, hvordan jeg kan få den ud, så du kan se den her? - men jeg kan da se, at svaret på forespørgelsen er helt galt... så det vil vel sige, at måden jeg har sat min forespørgelse op på, er forkert?
Jeg ser lige, det er to poster i databasen, der indeholder det, jeg spørger efter - og det bliver så fundet to gange - gange syv og igen gange to. Forstået på den måde, at de to forespørgelser bliver fundet to gange i lovestories og så bliver de listet seks gange mere - og det bliver så doblet endnu en gang i kategorier, hvor ordet slet ikke findes... ja, det er da noget, der er helt galt her :)
Efter den sidste gang, hvor vi lavede den der sql forespørgsel, kan jeg ikke få noget til at virke overhovedet... hvad pokker sker der??
Her er min kode og jeg tjekket, tjekket og tjekket og der er ikke noget, der vil :(
<?
if(isset($_POST['soegefelt'])) {
$sog_ord = $_POST['soegefelt']; $query = mysql_query ("SELECT * FROM lovestories, kategori WHERE lovestories.overskrift LIKE '%$sog_ord%' OR lovestories.historie LIKE '%$sog_ord%' OR lovestories.alias LIKE '%$sog_ord%' OR kategori.overskrift LIKE '%$sog_ord%' OR kategori.indhold LIKE '%$sog_ord%'") or die(mysql_error());
Det her er altså hul i hovedet... jeg har lige byttet rundt og rundt på linjerne, og nu dur det - det 'sjove' er bare, at det nu virker og koden er den samme som før - jeg fatter INTET...! Nå, men jeg er klar til kampen igen :)
Nu hører alting op! Det har lige virket, så gik jeg væk fra siden og tilbage - nu virker det ikke igen - og jeg har vel og mærket ikke ændret noget som helt i koden... hvad f***** sker der..
Okay, det er bare mig, der stadig er en amatør... jeg er heller ikke så gammel i det endnu.
Hvis søgefeltet ligger i forespørgelsen, kommer det ikke frem, men er der en forespørgsel i gang, kan det ses. Da jeg så rettede tingene til, var jeg igang med en forespørgsel, og dermed kunne jeg se det den anden dag og i dag, men når jeg så kommer ind på siden, kan det ikke se længere... jeg håber, du forstår, hvad jeg mener.
Mht. SELECT DISTINCT giver det ikke noget, er der noget i en celle vælter det ud med svar fra alle celler :(
Jeg har prøvet at lave min forespørgsel om, så den nu ser sådan ud: $query = mysql_query ("SELECT * FROM lovestories WHERE overskrift LIKE '%$sog_ord%' OR historie LIKE '%$sog_ord%' OR alias LIKE '%$sog_ord%'") AND ("SELECT * FROM kategori WHERE overskrift LIKE '%$sog_ord%' OR indhold LIKE '%$sog_ord%'") or die(mysql_error());
Tilsyneladende virker det, men jeg får kun resultater frem, der kommer fra tabellen lovestories. Har du en ide til, hvordan jeg kan vise de resultater, der kommer fra kategorier?
Ja, jeg vil gerne, man kan søge i alle tabeller samtidig (dog ikke i alle celler i hver tabel), men når jeg laver den aller øverste kode i denne tråd, går det jo i fisk.
Men ved du så, hvordan jeg tilpasser koden, så den virker?
Denne virker jo desværre ikke: $query = mysql_query ("SELECT * FROM lovestories, kategori WHERE lovestories.overskrift LIKE '%$sog_ord%' OR lovestories.historie LIKE '%$sog_ord%' OR lovestories.alias LIKE '%$sog_ord%' OR kategori.overskrift LIKE '%$sog_ord%' OR kategori.indhold LIKE '%$sog_ord%'") or die(mysql_error());
Okay, det prøver jeg, tak fordi du forsøgte at hjælpe!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.