Laat maar 4 linken zien ipv alle linken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

29/10/2006 10:43:00
Quote Anchor link
Deze code laat maar 4 linkpartners zien ipv de 7 die ik er nu in heb staan.

Hoe kan dit?

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
20
21
22
23
24
25
26
27
28
<?php

$queryKliks
= "
        SELECT
p.partner_id,
p.partner_naam,
p.partner_url,
COUNT(pk.datumtijd) AS aantal_kliks
FROM
klikspartners AS pk
INNER JOIN
partners AS p
ON
pk.partner_id = p.partner_id
WHERE
YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p.partner_id
ORDER BY RAND()"
;


    $resultKliks = mysql_query($queryKliks) or die (mysql_error());
    
while ($rowKliks = mysql_fetch_object($resultKliks))
{

    echo '<a href="partneruit.php?partner_id='. $rowKliks->partner_id.'"  title="'. $rowKliks->partner_naam.'" target="_blank">-'.$rowKliks->partner_naam.'</a>&nbsp;['.$rowKliks->aantal_kliks.']<br>';
}


?>
 
PHP hulp

PHP hulp

18/11/2024 20:30:39
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 10:57:00
Quote Anchor link
Je doet een INNER JOIN, dus dat betekent dat in beide tabellen corresponderende records moeten zijn. Dat zou je even kunnen checken.
Edit:

Je zou ook nog even de WHERE condition weg kunnen halen, om te kijken of dat iets uitmaakt.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 

29/10/2006 11:01:00
Quote Anchor link
Ja, in de klikspartners tabel staan alleen de partner_id's waar op geklikt is nog voor ik die andere 3 nieuwe linkpartners had toegevoegd.

Waarschijnlijk kan ik dus beter een andere query maken om de linkpartners te tonen. Ik zal het eens proberen.
 

29/10/2006 11:12:00
Quote Anchor link
Nee, dit werkt niet, hij laat wel alle linkpartners zien maar de bijbehorende kliks kloppen niet.


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
20
21
22
23
24
25
26
27
28
29
<?php
//Kliks van partners
$queryKliks = "
        SELECT
p.partner_id,
COUNT(pk.datumtijd) AS aantal_kliks
FROM
klikspartners AS pk
INNER JOIN
partners AS p
ON
pk.partner_id = p.partner_id
WHERE
YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p.partner_id
ORDER BY RAND()"
;
$resultKliks = mysql_query($queryKliks) or die (mysql_error());
$rowKliks = mysql_fetch_object($resultKliks);

//partners gegevens
$querypartners = "SELECT * FROM partners";
$resultpartners = mysql_query($querypartners) or die (mysql_error());
        
while ($rowpartners = mysql_fetch_object($resultpartners))
{

    echo '<a href="partneruit.php?partner_id='. $rowpartners->partner_id.'"  title="'. $rowpartners->partner_naam.'" target="_blank">-'.$rowpartners->partner_naam.'</a>&nbsp;['.$rowKliks->aantal_kliks.']<br>';
}


?>
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 11:13:00
Quote Anchor link
Elsy schreef op 29.10.2006 11:01:
Ja, in de klikspartners tabel staan alleen de partner_id's waar op geklikt is nog voor ik die andere 3 nieuwe linkpartners had toegevoegd.

Waarschijnlijk kan ik dus beter een andere query maken om de linkpartners te tonen. Ik zal het eens proberen.

Klopt. Als je een LEFT JOIN zou doen, krijg je altijd alle linkpartners.
 

29/10/2006 11:17:00
Quote Anchor link
@jan

Ik heb (in de eerste code)INNER JOIN vervangen met LEFT JOIN maar dat maakt niet uit.
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 11:19:00
Quote Anchor link
Dan moet het iets met je WHERE zijn. Daar zit ook pk.datumtijd in als eis, dus blijkbaar wordt daaraan in drie van de zeven gevallen niet voldaan.
Edit:

Ik moet er trouwens vandoor. Kijk vanavond nog wel even of het is opgelost!
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 

29/10/2006 11:21:00
Quote Anchor link
Dit zijn de tabellen:

Linkpartners:

Afbeelding

En de linkpartner kliks:

Afbeelding
 
Joren de Wit

Joren de Wit

29/10/2006 11:41:00
Quote Anchor link
Als je LEFT JOIN gebruikt moet je wel even kijken welke tabel de 'linker' en welke tabel de 'rechter' is. Uit de linker tabel worden alle velden weergegeven ongeacht of er matches zijn met de rechter tabel.

Dit zou denk ik moeten werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    p.partner_id,
    COUNT(pk.datumtijd) AS aantal_kliks
FROM
    partners AS p
LEFT JOIN
    klikspartners AS pk
ON
    pk.partner_id = p.partner_id
WHERE
    YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p.partner_id
ORDER BY RAND()
 

29/10/2006 15:52:00
Quote Anchor link
Als ik dit doe dan geeft hij [4] aan overal achter.
Dit is het aantal id's dat voorkomt in de rij van partner_id van de kliks tabel.

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
20
21
22
23
24
25
26
27
28
29
30
<?php

//Kliks van partners
$queryKliks = "
      SELECT
    p.partner_id,
    COUNT(pk.datumtijd) AS aantal_kliks
FROM
    partners AS p
LEFT JOIN
    klikspartners AS pk
ON
    pk.partner_id = p.partner_id
WHERE
    YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p.partner_id"
;
$resultKliks = mysql_query($queryKliks) or die (mysql_error());
$rowKliks = mysql_fetch_object($resultKliks);

//partners gegevens
$querypartners = "SELECT * FROM partners";
$resultpartners = mysql_query($querypartners) or die (mysql_error());
        
while ($rowpartners = mysql_fetch_object($resultpartners))
{

    echo '<a href="partneruit.php?partner_id='. $rowpartners->partner_id.'"  title="'. $rowpartners->partner_naam.'" target="_blank">-'.$rowpartners->partner_naam.'</a>&nbsp;['.$rowKliks->aantal_kliks.']<br>';
}



?>
 

29/10/2006 19:52:00
Quote Anchor link
Ik heb nu het volgende.
Hij geeft nu wel het aantal kliks weer achter de linkpartners.

Alleen geeft hij de linkpartners weer waar ook daadwerkelijk op geklikt is.
Dus als het partner_id nog niet voorkomt in de klikspartners tabel dan geeft hij die linkpartner niet weer op de pagina.

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
20
21
22
23
24
25
26
27
28
29
30
<?php

//Kliks van partners
$queryKliks = "
        SELECT
p1.partner_id,
p1.partner_naam,
p1.partner_url,
COUNT(pk.datumtijd) AS aantal_kliks
FROM
klikspartners AS pk
INNER JOIN
partners AS p1
ON
pk.partner_id = p1.partner_id
WHERE
YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p1.partner_id
ORDER BY RAND()"
;
$resultKliks = mysql_query($queryKliks) or die (mysql_error());

//partners gegevens

while ($rowKliks = mysql_fetch_object($resultKliks))
{

    echo '<a href="partneruit.php?partner_id='. $rowKliks->partner_id.'"  title="'. $rowKliks->partner_naam.'" target="_blank">-'.$rowKliks->partner_naam.'</a>&nbsp;['.$rowKliks->aantal_kliks.']<br>';
}



?>
 
Robert Deiman

Robert Deiman

29/10/2006 20:24:00
Quote Anchor link
Dat komt door de INNER JOIN Elsy, die haalt ALLEEN de linkpartners op die in Beide tabellen voorkomen.
Ik weet niet zeker, maar volgens mij moet je er een OUTER JOIN (of RIGHT JOIN, als ik het goed heb) van maken.
 

29/10/2006 20:28:00
Quote Anchor link
RIGHT of LEFT JOIN maakt geen verschil.
En OUTER JOIN geeft deze foutmelding:


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 'OUTER JOIN partners AS p1 ON pk.partner_id = p1.partner_id WHERE YEAR(pk.datumti' at line 8
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 20:33:00
Quote Anchor link
Doe eens een testquery:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT *
FROM
partners
LEFT JOIN klikspartners
ON partners.partner_id = klikspartners.partner_id
 

29/10/2006 20:42:00
Quote Anchor link
Als ik dit doe dan krijg ik alle 8 linkpartners te zien en ze herhalen zich zovaak als er op geklikt is.

Afbeelding
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 20:57:00
Quote Anchor link
Dat betekent dus dat je voor ELKE klik een nieuwe record aanmaakt in de tabel klikspartners?
 

29/10/2006 21:01:00
Quote Anchor link
Ja, omdat ik wil kunnen laten zien hoeveel kliks er per maand of per jaar waren.
Gewijzigd op 01/01/1970 01:00:00 door
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 21:24:00
Quote Anchor link
Okee, wat levert deze query op?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT partners.naam, COUNT( klikspartners.id ) AS totaal
FROM partners
LEFT JOIN klikspartners ON partners.id = klikspartners.partner_id
GROUP BY partners.naam
 
Thomas M

Thomas M

29/10/2006 21:27:00
Quote Anchor link
Elsy schreef op 29.10.2006 21:01:
Ja, omdat ik wil kunnen laten zien hoeveel kliks er per maand of per jaar waren.


Je kan dan toch in een apart tabelletje tellen? Elke keer als er geklikt wordt $waarde + 1
 
Jan Koehoorn

Jan Koehoorn

29/10/2006 21:29:00
Quote Anchor link
@ Thomas: dan wordt het wel moeilijk om het per maand te laten zien. Je hebt dan namelijk alleen een totaal zonder DATETIME.
 

29/10/2006 21:32:00
Quote Anchor link
EDIT: ik had totaal nog niet gewijzigd, volgens mij werkt het nu, even kijken.


Hij laat nu alle partners zien maar niet het aantal kliks erachter:

Afbeelding

Ik heb jouw code even aangepast met de juiste tabel namen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$queryKliks
= "
        SELECT partners.partner_naam, COUNT( klikspartners.id ) AS totaal
FROM partners
LEFT JOIN klikspartners ON partners.partner_id = klikspartners.partner_id
GROUP BY partners.partner_naam"
;
?>
Gewijzigd op 01/01/1970 01:00:00 door
 

Pagina: 1 2 volgende »



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.