dubbele resultaten??
Giant - 17/11/2007 09:10 (laatste wijziging 17/11/2007 17:19)
PHP beginner
hallo,
ik ben bezig met een zoekfunctie te maken,
maar nu krijg ik alle resultaten een x aantal keer dubbel...
mijn query is als volgt:
$query = "SELECT * FROM `topics`, `categorien`, `leden`";
$query .= "WHERE `titel` LIKE '%".$zoek."%'";
$query .= "OR `categorie_naam` LIKE '%".$zoek."%'";
$query .= "OR `naam` LIKE '%".$zoek."%'";
$query = "SELECT * FROM `topics`, `categorien`, `leden`" ;
$query .= "WHERE `titel` LIKE '%" . $zoek . "%'" ;
$query .= "OR `categorie_naam` LIKE '%" . $zoek . "%'" ;
$query .= "OR `naam` LIKE '%" . $zoek . "%'" ;
en ik haal de resultaten daaruit op de volgende manier:
$uitvoer = mysql_query($query) or die (mysql_error());
while($lijst = mysql_fetch_object($uitvoer)) {
echo "<a href='?url=forum&page=profile&naam=".$lijst->naam."' target='_blank'>".$lijst->naam."</a><br />";
echo "<a href='?url=forum&categorie_id=".$lijst->categorie_id."' target='_blank'>".$lijst->categorie_naam."</a><br />";
echo "<a href='?url=forum&topic_id=".$lijst->topic_id."' target='_blank'>".$lijst->titel."</a><br />";
}
echo "<a href='?url=forum&page=profile&naam=" . $lijst -> naam . "' target='_blank'>" . $lijst -> naam . "</a><br />" ; echo "<a href='?url=forum&categorie_id=" . $lijst -> categorie_id . "' target='_blank'>" . $lijst -> categorie_naam . "</a><br />" ; echo "<a href='?url=forum&topic_id=" . $lijst -> topic_id . "' target='_blank'>" . $lijst -> titel . "</a><br />" ; }
heeft iemand enig idee wat ik fout doe?
edit: waar zijn de php/mysql experts wanneer je ze nodig hebt?xD
18 antwoorden
Gesponsorde links
Stijn - 17/11/2007 10:44
PHP expert
$query .= " GROUP BY id";
$query .= " GROUP BY id" ;
Voeg dit achteraan je query toe.
Je kan ipv die OR's in je query ook AND's van maken
Giant - 17/11/2007 11:25 (laatste wijziging 17/11/2007 12:53)
PHP beginner
ik heb nu als query:
$query = "SELECT * FROM `topics`, `categorien`, `leden`";
$query .= "WHERE `titel` LIKE '%".$zoek."%'";
$query .= "AND `categorie_naam` LIKE '%".$zoek."%'";
$query .= "AND `naam` LIKE '%".$zoek."%'";
$query .= " GROUP BY id";
$query = "SELECT * FROM `topics`, `categorien`, `leden`" ;
$query .= "WHERE `titel` LIKE '%" . $zoek . "%'" ;
$query .= "AND `categorie_naam` LIKE '%" . $zoek . "%'" ;
$query .= "AND `naam` LIKE '%" . $zoek . "%'" ;
$query .= " GROUP BY id" ;
edit: nu krijg ik nog steeds hetzelfde...
oftewel alle leden 1keer maar alle topics en categorien bij ieder lid opnieuw...
ranco - 17/11/2007 13:46 (laatste wijziging 17/11/2007 13:46)
PHP gevorderde
Dit kun je bereiken door DISTINCT in je query toe te voegen.
Zie deze link: http://dev.mysq...ation.html
Dus iets in de zin van : SELECT DISTINT Topics.... enz
Succes!
Giant - 17/11/2007 15:48
PHP beginner
ik heb niet het gevoel dat het in mijn query zit...
ik denk dat het hierin zit:
$uitvoer = mysql_query($query) or die (mysql_error());
while($lijst = mysql_fetch_object($uitvoer)) {
echo "<a href='?url=forum&page=profile&naam=".$lijst->naam."' target='_blank'>".$lijst->naam."</a><br />";
echo "<a href='?url=forum&categorie_id=".$lijst->categorie_id."' target='_blank'>".$lijst->categorie_naam."</a><br />";
echo "<a href='?url=forum&topic_id=".$lijst->topic_id."' target='_blank'>".$lijst->titel."</a><br />";
}
echo "<a href='?url=forum&page=profile&naam=" . $lijst -> naam . "' target='_blank'>" . $lijst -> naam . "</a><br />" ; echo "<a href='?url=forum&categorie_id=" . $lijst -> categorie_id . "' target='_blank'>" . $lijst -> categorie_naam . "</a><br />" ; echo "<a href='?url=forum&topic_id=" . $lijst -> topic_id . "' target='_blank'>" . $lijst -> titel . "</a><br />" ; }
thomasje - 17/11/2007 17:25
MySQL beginner
Zou je eens heel de code op internet kunnen zetten?
Stijn - 17/11/2007 18:28
PHP expert
Je probleem zit duidelijk in je SQL
Je selecteert van 3 tabellen. In de WHERE zeg je de kolommen wel maar je moet wel nog zeggen in welke tabellen die kolommen staan.
WHERE forum.topics LIKE ....
WHERE forum. topics LIKE ....
Giant - 17/11/2007 18:40 (laatste wijziging 17/11/2007 22:01)
PHP beginner
ik heb het nu zo:
Plaatscode: 4041
edit: werkt nu weer maar ik krijg nog steeds de usernames 1 keer per username(zoals het hoort) en de topics/categorieën bij iedere username op nieuw...
ik denk toch dat het hem in de volgende code zit:
while($lijst = mysql_fetch_object($uitvoer)) {
if($_POST['zoek_in'] == "alles"){
?>
<table width="100%" border="1px">
<tr><td width="33%">
<a href='?url=forum&page=profile&naam=<?=$check['naam'] ?>' target='_blank'><?=$check['naam'] ?></a>
</td><td width="33%">
<a href='?url=forum&categorie_id=<?=$check['categorie_id'] ?>' target='_blank'><?=$check['categorie_naam'] ?></a>
</td><td width="33%">
<a href='?url=forum&topic_id=<?=$check['topic_id'] ?>' target='_blank'><?=$check['titel'] ?></a>
</td></tr>
</table>
<?php
}
}
while($lijst = mysql_fetch_object($uitvoer)) {
if($_POST['zoek_in'] == "alles"){
?>
<table width="100%" border="1px">
<tr><td width="33%">
<a href='?url=forum&page=profile&naam=<?= $check [ 'naam' ] ?> ' target='_blank'><?= $check [ 'naam' ] ?> </a>
</td><td width="33%">
<a href='?url=forum&categorie_id=<?= $check [ 'categorie_id' ] ?> ' target='_blank'><?= $check [ 'categorie_naam' ] ?> </a>
</td><td width="33%">
<a href='?url=forum&topic_id=<?= $check [ 'topic_id' ] ?> ' target='_blank'><?= $check [ 'titel' ] ?> </a>
</td></tr>
</table>
<?php
}
}
omdat dit voor iedere gebruiker weer opnieuw langs categorien, en topics gaat toch?
als dit zo is,
weet iemand dan hoe ik dit moet oplossen?
want ik heb zelf echt geen flauw idee:'( (ben nog niet zo lang met php bezig...)
edit: het zit hem inderdaad in die code, hier staat hij online klik maar op de search button(en kijk daarna eens border)
mitshell - 17/11/2007 23:48
Nieuw lid
$query .= "GROUP BY topic_id, categorie_id, lid_id";
$query .= "GROUP BY topic_id, categorie_id, lid_id" ;
moet zijn
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id";
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id" ;
Zoals stijn al zij
Giant - 18/11/2007 08:48
PHP beginner
ook dat heeft geen effect...
het zit hem volgens mijn echt niet in de query...
en ik ben er bijna zeker van dat het wel hierin zit:
while($lijst = mysql_fetch_object($uitvoer)) {
if($_POST['zoek_in'] == "alles"){
?>
<table width="100%" border="1px">
<tr><td width="33%">
<a href='?url=forum&page=profile&naam=<?=$check['naam'] ?>' target='_blank'><?=$check['naam'] ?></a>
</td><td width="33%">
<a href='?url=forum&categorie_id=<?=$check['categorie_id'] ?>' target='_blank'><?=$check['categorie_naam'] ?></a>
</td><td width="33%">
<a href='?url=forum&topic_id=<?=$check['topic_id'] ?>' target='_blank'><?=$check['titel'] ?></a>
</td></tr>
</table>
<?php
}
}
while($lijst = mysql_fetch_object($uitvoer)) {
if($_POST['zoek_in'] == "alles"){
?>
<table width="100%" border="1px">
<tr><td width="33%">
<a href='?url=forum&page=profile&naam=<?= $check [ 'naam' ] ?> ' target='_blank'><?= $check [ 'naam' ] ?> </a>
</td><td width="33%">
<a href='?url=forum&categorie_id=<?= $check [ 'categorie_id' ] ?> ' target='_blank'><?= $check [ 'categorie_naam' ] ?> </a>
</td><td width="33%">
<a href='?url=forum&topic_id=<?= $check [ 'topic_id' ] ?> ' target='_blank'><?= $check [ 'titel' ] ?> </a>
</td></tr>
</table>
<?php
}
}
rroobb - 18/11/2007 15:39
PHP interesse
Probeer eens SELECT DISTINCT
mitshell - 18/11/2007 16:45
Nieuw lid
Giant schreef:
ook dat heeft geen effect...
het zit hem volgens mijn echt niet in de query...
en ik ben er bijna zeker van dat het wel hierin zit:
[..code..]
Je While is prima Als jij blijft geloven dat het daaraan ligt gaat je script nooit werken
je while laad niet dubbel ofzo je query pakt alles gewoon dubbel
Giant - 18/11/2007 18:12 (laatste wijziging 18/11/2007 18:13)
PHP beginner
hoe kan ik dit oplossen dan?
kan iemand mischien mijn query aanpassen zodat hij het wel goed doet?
want van dat distinct snap ik geen zak...
ben ook pas een beginner met (my)sql en php...
en ben nog niet eens een jaar met web design bezig xD
Giant - 18/11/2007 18:32
PHP beginner
@flex,
dit had ik een al een tijdje gedaan op de volgende manier:
$query = "SELECT * FROM `topics`, `categorien`, `leden`";
$query .= "WHERE topics.titel LIKE '%".$zoek."%'";
$query .= "OR categorien.categorie_naam LIKE '%".$zoek."%'";
$query .= "OR leden.naam LIKE '%".$zoek."%'";
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id";
$query = "SELECT * FROM `topics`, `categorien`, `leden`" ;
$query .= "WHERE topics.titel LIKE '%" . $zoek . "%'" ;
$query .= "OR categorien.categorie_naam LIKE '%" . $zoek . "%'" ;
$query .= "OR leden.naam LIKE '%" . $zoek . "%'" ;
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id" ;
(dit helpt nog steeds niet)
en ik snap niet hoe ik DISTINCT erin moet bouwen:'(
rroobb - 20/11/2007 14:29 (laatste wijziging 20/11/2007 14:43)
PHP interesse
$query = "SELECT DISTINCT titel,* FROM `topics`, `categorien`, `leden`";
$query .= "WHERE topics.titel LIKE '%".$zoek."%'";
$query .= "OR categorien.categorie_naam LIKE '%".$zoek."%'";
$query .= "OR leden.naam LIKE '%".$zoek."%'";
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id";
$query = "SELECT DISTINCT titel,* FROM `topics`, `categorien`, `leden`" ;
$query .= "WHERE topics.titel LIKE '%" . $zoek . "%'" ;
$query .= "OR categorien.categorie_naam LIKE '%" . $zoek . "%'" ;
$query .= "OR leden.naam LIKE '%" . $zoek . "%'" ;
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id" ;
Giant - 20/11/2007 15:52 (laatste wijziging 20/11/2007 15:56)
PHP beginner
rroobb schreef:
[..code..]
dan krijg ik de volgende error:
Citaat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `topics`, `categorien`, `leden`WHERE topics.titel LIKE '%test%'OR categor' at line 1
spaceflippie - 11/07/2008 21:16 (laatste wijziging 11/07/2008 21:17)
Nieuw lid
Moet het dit niet zijn?
$query = "SELECT DISTINCT * FROM `topics`, `categorien`, `leden`";$query .= "WHERE topics.titel LIKE '%".$zoek."%'";
$query .= "OR categorien.categorie_naam LIKE '%".$zoek."%'";
$query .= "OR leden.naam LIKE '%".$zoek."%'";
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id";
$query = "SELECT DISTINCT * FROM `topics`, `categorien`, `leden`" ; $query .= "WHERE topics.titel LIKE '%" . $zoek . "%'" ;
$query .= "OR categorien.categorie_naam LIKE '%" . $zoek . "%'" ;
$query .= "OR leden.naam LIKE '%" . $zoek . "%'" ;
$query .= "GROUP BY topics.topic_id, categorien.categorie_id, leden.lid_id" ;
Gesponsorde links
Dit onderwerp is gesloten .