Gå til innhold

Søkemotor: hente ut fra 2 tabeller (LØST)


Anbefalte innlegg

Hei!

 

Driver å mekker et forum på sida mi, selvlagd selvfølgelig, og driver å lager en søkemotor, men jeg har et problem: siden første posten ikke ligger sammen med resten av innleggene til det emnet så må man kunne søke gjennom flere tabeller på et søk.

 

Tabellene heter "topics" og "posts" (uten quotes selvfølgelig).

I topics skal man kunne søke for "title" og "content" og i posts bare "content".

 

 

Koden jeg har skrevet hittil:

<form action="" method="get">
<input type="text" name="page" class="form_hidden" value="forum" /><input type="text" name="action" class="form_hidden" value="search" />
<p>Seach for...<br />
<input type="text" name="q" value="<?php echo htmlentities(stripslashes($_GET['q'])); ?>" /></p>
<p><input type="submit" value="Search" /></p>
</form>

<?php
if ($_GET['q']) {
$q = htmlentities(stripslashes($_GET['q']));
echo '<br />';
echo '<br />';
$abcd = mysql_query("SELECT * FROM posts WHERE content LIKE '%$q%'");
while($row = mysql_fetch_array($abcd)) {
echo htmlentities(stripslashes($row['content']));
echo '<br />';
}
}
?>

 

 

Resultatene vil jeg gjerne ha noe ala sånn her hvis noen kan fikse med det og.Det ville vært superdupert :thumbup:

Tittel på emne

Maks 100 tegn fra innholdet som kommer rett under her

www.andersmoen.com/?showtopic=id_til_emnet

 

 

Takk!

 

 

 

Edit:

Emnetittel

Endret av Anders-Moen
Lenke til kommentar
Videoannonse
Annonse

Har sikkert sagt dette mange ganger, men du må slutte å få folk til å gjøre jobben for deg. Det er ikke akkurat å "mekke selv" når du ber andre om å gjøre scriptet ditt ferdig når du ikke klarer mer..

 

Men, jeg skal hjelpe deg litt.. det du kan gjøre er å kjøre to while løkker å binne resultatet sammens. Noen mener at det er mulig å joine, men vil tro dette tar lengre tid.

 

<?php
$query = "SELECT id,tittel FROM tabell1 WHERE tittel LIKE '%".$sokeord."%'"
while($r = mysql_fetch_array($ditt_query))
{
   while($r2 = mysql_fetch_array(mysql_query("SELECT innlegg FROM tabell2 WHERE id='".$r['id']."'"))
    {
      $innlegg = substr($r2['innlegg'], 0, 100);
    }
  echo "<h3><a href=\"forum.php?innlegg=".$r['id']."\">".$r['tittel']."</a></h3>\n<p>".$innlegg."</p>\n";
}
?>

 

Har ikke testet koden, men tror det skal funke.. Neste gang, bruk google

Lenke til kommentar
Gjest Slettet+142

har jeg misforstått hvis jeg nevner INNER JOIN?

$query = "SELECT t1.id,t1.tittel,t2.innhold FROM tabell1 t1 INNER JOIN tabell2 t2 ON t1.id=t2.id WHERE t1.tittel LIKE '%{$sokeord}%'";

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142
Tipper det er mye raskere å la databasen gjøre jobben enn PHP. En liten tommelfingerregel er å nesten alltid la databasen gjøre så mye som mulig av jobben for å få best mulig ytelse, men dette kan man sjekke med en "profiler".

8507078[/snapback]

blir det for dumt å spørre hva en "profiler" er? :dontgetit:

 

og Anders-Moen... du _må_ ikke (men kan) ha ; på slutten av sql'er i php, med mindre du skal benytte deg av multiquering ;)

 

Edit: aii. det ble for dumt ja. herregud..

Edit2: Eller ikke. Jeg skjønner ikke hva en profiler gjør for en jeg. debugger?

Endret av Slettet+142
Lenke til kommentar
og Anders-Moen... du _må_ ikke (men kan) ha ; på slutten av sql'er i php, med mindre du skal benytte deg av multiquering ;)

Rart jeg fikk feilmelding på den linja helt til jeg så at det mangla en ; bak der da ;)

 

 

Edit:

Quotinga ble helt merkelig :S

Endret av Anders-Moen
Lenke til kommentar
Gjest Slettet+142

hmm.. men nå vet jeg hva det var som var feil med MrNeeon sin kode åsså. han hadde ikke mysql_query()...

 

men jeg bruker aldri ; etter sql jeg da men.. :p ok.

Lenke til kommentar

Det er jeg også klar over, og den satte jeg også på selv. Men det er det samme, jeg fikk det til når jeg fikk vite hvordan inner join-koden skal se ut.

 

En ting til:

$q = htmlentities(stripslashes($_GET['q']));

WHERE t1.title LIKE '%q%'

 

Åssen får jeg til at man søker i innholdet på en post og innholdet på posten til emnestarter? Jeg trodde jeg skulle gjøre noe sånn her, men får det ikke til å funke:

WHERE t1.title LIKE '%q%' OR (eller AND) t2.content LIKE '%$q%'

og

WHERE t1.title, t2.content LIKE '%q%'

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