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/
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
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> 
<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);">« Tillbaka</a></td>
</tr>
</table>
<?
mysql_close();
}
------------------
http://www.niklasson.net/
eeeh.. :q
------------------
http://www.niklasson.net/
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. :-)