webForumDet fria alternativet

Sökfunktion med PHP/mySQL

4 svar · 242 visningar · startad av Niklasson

NiklassonMedlem sedan nov. 2000857 inlägg
#1

Jag har ett forum där alla inlägg har tabellfältet 'id'; alla huvudinlägg har ref_id 0 och alla svarsinlägg har ref_id '?'. ? är naturligtvis id:t på det huvudinlägg som man har svarat på.

Nu jobbar jag på en sökfunktion till forumet och har visserligen fått ihop det så jag antingen kan söka på alla id (alla inlägg) eller bara huvudinlägg.

Saken är den att jag vill ju söka på alla inlägg, men bara visa länken till huvudinlägget. Som jag har det nu så visas det ju så, men om både huvudinlägget och svaret innehåller söksträngen så visas ju den länken två gånger. :(

eeh, Hjälp!!

Forumet: http://www.niklasson.net/forum/
Sökfunktionen: http://www.niklasson.net/forum/sok.php

------------------
http://www.niklasson.net/

sgtpepperMedlem sedan apr. 20007 588 inlägg
#2
SELECT DISTINCT

Skulle kunna hjälpa dig, men du kan väl lägga upp din SQL-sats här så blir det lättare att hjälpa dig.

------------------
skaparen av allt som är mjukt och luktar lavendel

NiklassonMedlem sedan nov. 2000857 inlägg
#3

Här är hela koden (nästan):

if (isset($sok))
{
	if (empty($strang))
	{
	fel("Du måste skriva in någon text att söka på!");
	}
mysql_connect ("$server","$anvandare","$losen");
mysql_select_db ("$databas");
$query = "SELECT DISTINCT * FROM forum WHERE $sok LIKE '%$strang%' ORDER BY amne ASC";
$result = mysql_query($query);
	if (mysql_affected_rows() == 0)
	{
	fel("Sökningen gav tyvärr ingen träff!");
	}
	else
	{
?>
	<p class="RubrikFont">Webforum - Sökresultat
	<p>&nbsp

<table width="500" align="center" border="0" cellspacing="0" cellpadding="2">
  <tr>
   <td bgcolor="#595967" width="40%"><font color="#FFFFFF"><b>Rubrik</b></font></td>
   <td bgcolor="#595967" width="30%"><font color="#FFFFFF"><b>Skrivet av</b></font></td>
   <td bgcolor="#595967" width="25%"><font color="#FFFFFF"><b>Datum</b></font></td>
   <td bgcolor="#595967" width="5%" align="center"><font color="#FFFFFF"><b>Svar</b></font></td>
</tr>
<?
		while ($n = mysql_fetch_array($result))
		{
		$id = $n["id"];
		$namn = $n["namn"];
		$epost = $n["epost"];
		$amne = $n["amne"];
		$text = $n["text"];
		$ip = $n["ip"];
		$ref_id = $n["ref_id"];
		$datum = $n["datum"];
			if (!$ref_id)
			{
			$query = "SELECT * FROM forum WHERE id = $id";
			$resultat = mysql_query("$query");
				while ($o = mysql_fetch_array($resultat))
				{
				$id = $o["id"];
				$namn = $o["namn"];
				$epost = $o["epost"];
				$amne = $o["amne"];
				$text = $o["text"];
				$ip = $o["ip"];
				$ref_id = $o["ref_id"];
				$datum = $o["datum"];
				$dat = date("Y-m-d H:i", $datum);
				$raknasvar = mysql_num_rows(mysql_query("SELECT * FROM forum WHERE ref_id = $id"));
				mysql_query("$raknasvar");
?>
<tr>
   <td bgcolor="#F7F7F7"><a href="svar.php?id=<?=$id?>"><?=$amne?></a></td>
   <td bgcolor="#F7F7F7"><?=$namn?></td>
   <td bgcolor="#F7F7F7"><?=$dat?></td>
   <td bgcolor="#F7F7F7" align="center"><?=$raknasvar?></td>
</tr>
<?
				}
			}
			else
			{
			$query = "SELECT * FROM forum WHERE id = $ref_id";
			$resultat = mysql_query("$query");
				while ($p = mysql_fetch_array($resultat))
				{
				$id = $p["id"];
				$namn = $p["namn"];
				$epost = $p["epost"];
				$amne = $p["amne"];
				$text = $p["text"];
				$ip = $p["ip"];
				$ref_id = $p["ref_id"];
				$datum = $p["datum"];
				$dat = date("Y-m-d H:i", $datum);
				$raknasvar = mysql_num_rows(mysql_query("SELECT * FROM forum WHERE ref_id = $id"));
				mysql_query("$raknasvar");
?>
<tr>
   <td bgcolor="#F7F7F7"><a href="svar.php?id=<?=$id?>"><?=$amne?></a></td>
   <td bgcolor="#F7F7F7"><?=$namn?></td>
   <td bgcolor="#F7F7F7"><?=$dat?></td>
   <td bgcolor="#F7F7F7" align="center"><?=$raknasvar?></td>
</tr>
<?
				}
			}
		}
	}
?>
<tr>
   <td colspan="4" height="20"></td>
</tr>
<tr>
   <td colspan="4"><a href="JavaScript:history.go(-1);">&#171 Tillbaka</a></td>
</tr>
</table>

<?
mysql_close();
}

------------------
http://www.niklasson.net/

NiklassonMedlem sedan nov. 2000857 inlägg
#4

eeeh.. :q

------------------
http://www.niklasson.net/

Bones_JuniorMedlem sedan maj 200139 inlägg
#5

Om du orkar så kanske du kan lägga in id på huvudinlägget i en array och sedan kolla om refid återfinns där i.
Om så är fallet så skriv inte ut den posten.Förmodligen finns det ett enklare sätt att göra det på men jag är tyvärr inte någon guru i området. :-)

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)