Vraag & Antwoord

Webprogrammeren & scripting

Alles wordt 3 keer weergeven (php/mySQL)

7 antwoorden
  • Ik ben bezig met een pagina waar men advertenties kan plaatsen. Nu heb ik 4 tabellen (foto's, gallery, tekoop, users) waar ik gegevens uit haal. Nu krijg ik de advertenties 3 keer op het scherm :-? [quote:fe9f4159fa] <?php mysql_pconnect("localhost","racingte","2mpRhc6k"); mysql_select_db("racingte"); $result = mysql_query("select tekoop.id, tekoop.soort, tekoop.bericht, tekoop.prijs, tekoop.datum, tekoop.gallery, tekoop.user, users.id, users.naam, users.emailadres, users.telefoonnr, gallery.id, gallery.dir, fotos.gallery, fotos.filenaam from tekoop, users, gallery, fotos WHERE tekoop.user=users.id && tekoop.gallery=fotos.gallery ORDER BY tekoop.id DESC"); while($r=mysql_fetch_array($result)) { echo "$bericht<br>"; echo "$naam<br>"; } ?> [/quote:fe9f4159fa] Dit is niet de volledige code. Ik heb wat code als opmerking aangemerkt, omdat ik dacht de fout zo sneller op te sporen. De code moet het volgende doen: In de tabel tekoop staat een veld user. Hier vul ik bijv. 1 in dan moet hij in de tabel Users de gegevens er bij zoeken. En uit de tabel foto's moet hij de foto's halen. Om de foto's weer te geven is de tabel gallery noodzakelijk omdat daar de directory in staat. Ergens is er iets fout, maar wat?. Of denk ik te ingewikkeld?
  • Fout zit in je query. Ik denk dat je bij de WHERE clause ook iets als "AND tekoop.gallery = gallery.id" moet zetten.
  • Als ik ipv && AND gebruik maakt geen verschil. Ik krijg nog steed 3x het zelfde te zien. Fout zal best in de query zitten, maar ik zie hem niet :-? EDIT: Ik heb net de tabellen foto's en gallery er even uit gehaald en dan wordt alles wel 1x weergegeven. Zou het misschien met mijn tabellen te maken kunnen hebben?
  • De opmerking van Stijn ging niet over het gebruik van AND ipv &&, maar over het feit dat je 4 tabellen joined en vergeten bent een relatie in de WHERE op te nemen. Je krijgt nu een cartesisch product (wat de dubbele waarden verklaart).
  • Als ik me beperk tot 2 tabellen werkt het wel gewoon. $result = mysql_query("select tekoop.id, tekoop.soort, tekoop.bericht, tekoop.prijs, tekoop.datum, tekoop.gallery, tekoop.user, users.id, users.naam, users.emailadres, users.telefoonnr, from tekoop, users WHERE tekoop.user=users.id ORDER BY tekoop.id DESC"); Maar met 4 tabellen dus niet. Ik begrijp dat er een relatie moet zijn tussen de tabellen. Maar die is er toch ook in onderstaand voorbeeld? $result = mysql_query("select tekoop.id, tekoop.soort, tekoop.bericht, tekoop.prijs, tekoop.datum, tekoop.gallery, tekoop.user, users.id, users.naam, users.emailadres, users.telefoonnr, gallery.id, gallery.dir, fotos.gallery, fotos.filenaam from tekoop, users, gallery, fotos [i:123d390e83]WHERE tekoop.user=users.id AND tekoop.gallery=fotos.gallery[/i:123d390e83] ORDER BY tekoop.id DESC"); Zou je mij het misschien duidelijker kunnen uitleggen in 'gewone leken' taal? Ik begin elke tabel met een veld 'id' is dat wel goed?
  • [quote:ae1aab6e1b="rolla"]Ik begrijp dat er een relatie moet zijn tussen de tabellen. Maar die is er toch ook in onderstaand voorbeeld? [/quote:ae1aab6e1b] Nee, ik mis de relatie tussen fotos en gallery. Als je de query zou omschrijven naar de join-notatie, dan zie je het vanzelf. [color=blue:ae1aab6e1b]SELECT .... FROM tekoop JOIN users ON tekoop.user = user.id JOIN fotos ON tekoop.gallery = fotos.gallery JOIN gallery ON ??? [b:ae1aab6e1b]--> hier mis je dus de relatie[/b:ae1aab6e1b][/color:ae1aab6e1b] Ik jouw voorbeeld voeg je wel de gallery tabel in, maar je beschrijft niet wat de relatie is van die tabel t.o.v. van de rest. Je krijgt dus voor elke rij uit gallery een resultaat terug (je heb blijkbaar 3 galleries in je tabel staan).
  • Ik snap het nu helemaal, de relatie tussen de tabel gallery en fotos was er niet.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.