webForumDet fria alternativet

Sökfunktion med PHP/mySQL

Databaser & SQL

4 svar · 244 visningar · startad av Niklasson

Medlem sedan nov. 2000857 inlägg
Frågan#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/

Medlem 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

Medlem 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/

Medlem sedan nov. 2000857 inlägg
#4

eeeh.. :q

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

Medlem 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. :-)

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)