Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Alles wordt 3 keer weergeven (php/mySQL)

None
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.

  • Ik snap het nu helemaal, de relatie tussen de tabel gallery en fotos was er niet.

Beantwoord deze vraag

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