Avatar billede foxladi Nybegynder
19. oktober 2004 - 23:17 Der er 6 kommentarer

Hvordan søger jeg i to tabeller og får svaret ud?

Jeg har to tabeller: opskrifter og urter. Jeg ville gerne have et generelt søgefelt, så man kan søge på ord, der findes i titlen eller indholdet af de to tabeller, men det driller. Enten får jeg nul svar eller også 13 tommer.

Koden ser således ud, idet formularfeltets navn er "query":

$query = $_REQUEST["query"];

$resultat=mysql_query("SELECT * FROM opskrifter, urter WHERE opskrifter.navn LIKE '%$query%' OR urter.navn LIKE '%$query%' OR opskrifter.ingredienser LIKE '%$query%' OR urter.ingredienser LIKE '%$query%' OR virkning LIKE '%$query%'") or die(mysql_error());

$antal = mysql_num_rows($resultat);

echo "<p>Der er fundet $antal svar på din søgning\n</p>";

if ($antal >0){

while ($row = mysql_fetch_array($resultat)) {
print "<div class=\"blogs\"><h3>".$row['navn']."</h3><div class=\"ingredienser\">".$row['ingredienser']."</div> <hr> ".$row['forklaring']."<hr>Virker imod: ".$row['virkning']."</div><br>";
}} else {
    print "Der er desværre ikke fundet nogen/flere resultater af dine søgeord. Prøv igen med nogle andre, eller skriv til mig, hvis det ikke findes.";
}

Er det noget helt håbløst, jeg prøver på?

P.S. Mit niveau er ikke så avanceret, som du måske kan se af ovennævnte kode.
Avatar billede olebole Juniormester
19. oktober 2004 - 23:21 #1
<ole>

Nåja ... der er vist mange piger, der brokker sig over, de aldrig får '13 tommer'  :D

/mvh
</bole>
Avatar billede foxladi Nybegynder
19. oktober 2004 - 23:30 #2
Ups ;-) Det var vist noget af en lapsus ...

Ehem, 13 tomme svar, skulle der have stået.
Avatar billede Slettet bruger
20. oktober 2004 - 01:40 #3
Er der de samme felter i begge tabeller? Så kan du nemlig bruge UNION.

Den måde du bruger nu, vil give alle matchende rækker fra opskrifter ganget med alle matchende rækker fra urter, så hvis der var 2 resultater i den første og 3 i den anden, ville du få 6 rækker ud:

o1+u1
o2+u1
o1+u2
o2+u2
o1+u3
o2+u3

(Ikke nødvendigvis i denne rækkefølge.)
Avatar billede foxladi Nybegynder
15. februar 2005 - 17:37 #4
Hej sandbox

Sorry for det sene svar. Min fritid slap op.

Nej, der er ikke kun samme felter i begge tabeller. Nogle felter er forskellige.
Avatar billede Slettet bruger
15. februar 2005 - 18:21 #5
Så er du nødt til at gøre en af følgende:

- splitte op på to forespørgsler
- nøjes med at søge på felter, der er fælles for de to tabeller
- lave en nøgleordstabel, der henviser til de to andre

Der er dog ingen af mulighederne, der er helt gode. Måske vil det være bedre at omstrukturere databasen. Jeg kan dog ikke lige gennemskue hvordan det vil være bedst.
Avatar billede foxladi Nybegynder
15. februar 2005 - 18:26 #6
Tak for dit svar. Ja, du har ret. Jeg skal nok omstrukturere databasen. Må kigge på det.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester