1 foto bij product

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent Huisman

Vincent Huisman

20/02/2011 18:10:17
Quote Anchor link
hallo,

Ik heb 2 tabbellen, een met producten en een met bijbehorende foto's. Ik heb nu de volgende SQL:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
    product.productnummer,
        product.productnaam,
        product.productbeschrijving,
        product.productprijs,
        fotos.foto
FROM
        product,
        fotos
WHERE
        fotos.productnummer = product.productnummer
AND
        product.productaantal > 0
ORDER BY
        product.productdatum
LIMIT
        20


Een product kan dus meerdere foto's hebben, nu wil ik dat hij maar 1 foto neemt maar met DISTINCT krijg ik dat niet voor elkaar.

Iemand enig idee hoe ik dit moet aanpakken?
 
PHP hulp

PHP hulp

18/06/2021 20:46:43
 
Ruben Portier

Ruben Portier

20/02/2011 19:01:09
Quote Anchor link
Wat je zou kunnen doen is PHP een random nummer laten kiezen. Dus wat je doet is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_num_rows(mysql_query("SELECT * FROM fotos WHERE id = '.$id));


Die geeft het totale gevonden foto's weer. Wat je dan kan doen is met PHP een random nummer aanmaken die niet hoger is dan het maximum foto's die net gevonden zijn.
 
Vincent Huisman

Vincent Huisman

20/02/2011 19:02:46
Quote Anchor link
Ja, maar dan heb ik 2 querys nodig en ik wilde het met 1 doen. Anders zou ik wel ORDER BY RAND() doen met LIMIT 1
 
Ruben Portier

Ruben Portier

20/02/2011 19:08:48
Quote Anchor link
Ja, ik zie net dat je inderdaad maar 1 query gebruikt.
Wat je misschien kan proberen is het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
    product.productnummer,
        product.productnaam,
        product.productbeschrijving,
        product.productprijs,
        fotos.foto
FROM
        product,
        fotos
WHERE
        fotos.productnummer = product.productnummer
AND
        product.productaantal > 0
ORDER BY
        product.productdatum,
        RAND(fotos.foto)
LIMIT
        20


Ik denk niet dat dit zal werken, maar het is het proberen waard lijkt me.
Gewijzigd op 20/02/2011 19:10:11 door Ruben Portier
 
Vincent Huisman

Vincent Huisman

20/02/2011 19:16:15
Quote Anchor link
Dan houd ik nog steeds het probleem dat hij dus óók alle foto's bij langs gaat.

Ik zal het even duidelijker maken:

Tabel product:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
productnummer    productnaam    productbeschrijving    productprijs    productdatum
1        uyg        blabla            1.5        de datum
2        uhg        blabla            10        "
3        gujh        blabla            9.95        "


Tabel fotos:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
fotonummer    productnummer    foto
1        1        images/foto1.jpg
2        2        images/foto2.jpg
3        2        images/foto3.jpg
4        3        images/foto4.jpg


Nu krijg ik dus alle foto's te zien met beschrijving en naam enzo maar ik wil dus dat alleen alle producten er zijn met bij product 2 een random foto
Gewijzigd op 20/02/2011 19:16:53 door Vincent Huisman
 
Ruben Portier

Ruben Portier

20/02/2011 19:20:20
Quote Anchor link
Ow, maar doe anders zo eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    product.productnummer,
        product.productnaam,
        product.productbeschrijving,
        product.productprijs,
        fotos.foto
FROM
        product,
        fotos
WHERE
        fotos.productnummer = product.productnummer
AND
        product.productaantal > 0
AND
        fotos.fotonummer = 1
ORDER BY
        product.productdatum
LIMIT
        20


Nu zal hij altijd fotonummer 1 nemen. Of is dit niet wat je wilt?
Ik denk dat jij zeker een random foto wil weergeven die met het productnummer overeen komt?
 
Vincent Huisman

Vincent Huisman

20/02/2011 19:21:32
Quote Anchor link
Ruben Portier op 20/02/2011 19:20:20:
Ik denk dat jij zeker een random foto wil weergeven die met het productnummer overeen komt?


Dat is wat ik wil ja.
 
Ruben Portier

Ruben Portier

20/02/2011 19:29:10
Quote Anchor link
Het spijt me zeer. Maar ik zou het echt niet weten. Misschien dat een ander lid van PHPHULP.nl nog een oplossing weet?

Veel succes!
 
Gerard M

Gerard M

21/02/2011 00:52:31
Quote Anchor link
Ok, mijn keyboard heeft geen blokhaakjes, dus even zonder bb codes.

Je kan jouw probleem oplossen met een sub select query. Eventueel kan jij het ook oplossen met een zgn. join. Het ligt er maar net aan wat jij makkelijker vindt, qua performance kan een sub select zelfs sneller zijn bij mysql, maar dat verschilt per situatie (is mijn ervaring).

SELECT
product.productnummer,
product.productnaam,
product.productbeschrijving,
product.productprijs,
(SELECT fotos.foto FROM fotos WHERE fotos.productnummer = product.productnummer LIMIT 1) AS foto
FROM
product
WHERE
product.productaantal > 0
ORDER BY
product.productdatum
LIMIT
20
 
Vincent Huisman

Vincent Huisman

21/02/2011 09:03:30
Quote Anchor link
bedankt gerard, het werkt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.