Alleen kliks van id 1 worden getoond

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

27/10/2006 17:40:00
Quote Anchor link
Op de website worden alleen de kliks van id=1 getoont die in de database zitten.
EDIT: Dus bij alle linken zie je de kliks van die id1

Hoe kan dit?

code:
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
<?php
//Geef het aantal kliks weer
    $queryKliks = "
        SELECT
linken.id,
COUNT(kliks.datumtijd) AS aantal_kliks
FROM
kliks
INNER JOIN
linken
ON
kliks.url_id = linken.menu_id
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE()) AND YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY linken.menu_id
"
;
    $resultKliks = mysql_query($queryKliks) or die (mysql_error());
    $rowKliks = mysql_fetch_object ($resultKliks);
    
    echo'<td class="kliks">Aantal keren bezocht dit jaar:&nbsp;'.$rowKliks->aantal_kliks.'</td>';
    echo'</tr>';
    echo'<tr>';
?>


Tabel van Kliks:
Afbeelding

Tabel linken:
Afbeelding

Tabel menu:
Afbeelding
Gewijzigd op 01/01/1970 01:00:00 door
 
PHP hulp

PHP hulp

18/11/2024 18:31:47
 

27/10/2006 21:54:00
Quote Anchor link
Niemand die weet hoe dit komt?
 
Robert Deiman

Robert Deiman

27/10/2006 23:13:00
Quote Anchor link
Edit:

Hele post aangepast, ik had iets over het hoofd gezien


Probeer ook eens als je GROUP BY doet op "kliks.url_id"

Ik snap ook niet helemaal wat die menu_id hierbij doet, je wilt toch van elke link appart het aantal kliks hebben, of snap ik je nu verkeerd?

Als je van elke link het aantal kliks wilt is het:

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
<?php
//Geef het aantal kliks weer
    $queryKliks = "
        SELECT
linken.id,
COUNT(kliks.datumtijd) AS aantal_kliks
FROM
kliks
INNER JOIN
linken
ON
kliks.url_id = linken.id
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE()) AND YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY linken.id
"
;
?>


Als het wel om je menu_id gaat JOIN dan de Menu tabel met de Linken tabel, aan de hand van het menu_id.

Edit:

Ik zie ook dat je er niet meer bent, en ik ga zo slapen en moet morgen werken tot 3 uur.
Daarna zal ik eens kijken of je eruit bent gekomen, en anders wel even opnieuw ernaar kijken.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 

28/10/2006 11:57:00
Quote Anchor link
Ik vind dit heel moeilijk te begrijpen, het lukt dus ook niet.

Ik heb url_id gewijzigd in link_id dat is iets beter te volgen.


Ik wil van elke link het aantal kliks laten zien.

Ik dacht dat je met dit stukje:

kliks.link_id = linken.menu_id

zegt dat die dus hetzelfde zijn in 2 tabellen.

Ik heb 3 tabellen.
1= het menu
2=de linken
3=de kliks

Het menu_id stop ik in de kliks tabel in het link_id veld

Dit is nu de code die ik hebt, het maakt niet uit of ik van linken -> menu maak.

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
//Geef het aantal kliks weer
    $queryKliks = "
        SELECT
linken.menu_id,
COUNT(kliks.datumtijd) AS aantal_kliks
FROM
kliks
INNER JOIN
linken
ON
kliks.link_id = linken.menu_id
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE()) AND YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY linken.menu_id
";



Code van de uit.php pagina, misschien doe ik hier iets niet goed.

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
31
<?php
include("login.php");
//maak verbinding met de database

$connection = mysql_connect ($hostname,$user,$password) or die
( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");

$db = mysql_select_db ($database, $connection) or die
("Sorry, maar ik kan de database niet openen.");


if(isset($_GET['id']) && (is_numeric($_GET['id'])))
{

$sql="INSERT INTO kliks
                    (datumtijd,link_id)
         VALUES
                   (NOW(), '"
.$_GET['id']. "')";
$res =mysql_query($sql) or die(mysql_error());
if(mysql_affected_rows() >0)
{

$resultLink = mysql_query("SELECT * FROM linken WHERE menu_id = ".$_GET['id']) or die(mysql_error());
$rowLink = mysql_fetch_object($resultLink);
header("Location:".$rowLink->url);
exit("U wordt doorgestuurd");
}

else
{
echo "er is iets misgegaan";
}
}

?>
Gewijzigd op 01/01/1970 01:00:00 door
 
Robert Deiman

Robert Deiman

28/10/2006 14:49:00
Quote Anchor link
Elsy schreef op 28.10.2006 11:57:
kliks.link_id = linken.menu_id

zegt dat die dus hetzelfde zijn in 2 tabellen.

Ik heb 3 tabellen.
1= het menu
2=de linken
3=de kliks

Het menu_id stop ik in de kliks tabel in het link_id veld


Dus het MENU.menu_id EN de LINKEN.menu_id en de KLIKS.link_id zijn hetzelfde voor 1 bepaalde link?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//Geef het aantal kliks weer
    $queryKliks = "
        SELECT
linken.
kliks.link_id,
COUNT(kliks.datumtijd) AS aantal_kliks
FROM
kliks
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE()) AND YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY kliks.menu_id;
"
;
?>

Volgens mij zou dit genoeg moeten zijn om van ALLE kliks het link_id op te halen, en de bijbehorende aantallen weer te geven.

Ik weet niet of het zo de bedoeling is, maar dit geeft alle kliks weer. (op ID)


Trouwens, ik bedacht nog wat. Klopt het wel wat er in de database bij de kliks staat?
 

28/10/2006 15:55:00
Quote Anchor link
Quote:
Dus het MENU.menu_id EN de LINKEN.menu_id en de KLIKS.link_id zijn hetzelfde voor 1 bepaalde link?


Dit klopt wat je zegt.

De code die erbij zit klopt niet omdat er niets achter linken. staat maar wat ik er ook achter zet het werkt weer niet.
Ik krijg oa deze foutmelding: Unknown column 'linken.menu_id' in 'field list'

[qoute]Trouwens, ik bedacht nog wat. Klopt het wel wat er in de database bij de kliks staat?[/quote]

Ik heb url_id gewijzigd in link_id als je dat bedoelt?
Gewijzigd op 01/01/1970 01:00:00 door
 

28/10/2006 16:10:00
Quote Anchor link
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
<?php//Geef het aantal kliks weer
     $queryKliks = "
        SELECT
menu.menu_id, //selecteer het menu_id
COUNT(kliks.datumtijd) AS aantal_kliks
FROM
kliks
INNER JOIN
menu
ON
kliks.link_id = menu.menu_id //het kliks.link_id is hetzelfde als het menu.menu_id
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE()) AND YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY kliks.link_id //wat dit doet weet ik niet
";
?>


Het ziet er logisch uit maar hij geeft overal 3 aan bij iedere link en dat is het aantal kliks van menu_id=1
Gewijzigd op 01/01/1970 01:00:00 door
 
Robert Deiman

Robert Deiman

28/10/2006 16:24:00
Quote Anchor link
Ik zie de logica van je query nu niet Elsy, je werkt met menu.menu_id, die zoals al bleek hetzelfde is als kliks.link_id.

Waarom dan niet gewoon:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT link_id, COUNT(kliks.datumtijd) AS aantal_kliks
FROM kliks
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE())
   AND
YEAR(kliks.datumtijd) = YEAR(CURDATE())
GROUP BY link_id


Die group by groepeert de items met hetzelfde link_id met elkaar, anders telt die ALLE kliks bij elkaar.
Volgens mij moet deze query precies hetgeen doen waarvoor die bedoeld is.
 

28/10/2006 16:39:00
Quote Anchor link
link_id moet dan toch nog geselecteerd worden van een tabel?

Hij doet het nog steeds niet. Hij geeft overal 3 aan.
 
Robert Deiman

Robert Deiman

28/10/2006 17:15:00
Quote Anchor link
Elsy schreef op 28.10.2006 16:39:
link_id moet dan toch nog geselecteerd worden van een tabel?


Kan je eens uitleggen wat je daar precies mee bedoeld? (misschien snap ik je hele vraag wel verkeerd, en is het slim om dat helemaal uit te leggen.)

Wat wil je precies bereiken met de query, gaat het om een aantal kliks op een link (en komt dat erachter te staan)?
Waarom gebruik je die andere tabellen erbij, ik "ken" je langer dan vandaag, en ga er vanuit dat dat niet voor niets is, misschien dat het duidelijker voor me wordt als je de reden daarvan eens uitlegt.

(Sorry hoor, maar ik weet anders niet wat je bedoelt, en dan kan het helpen nogal lang gaan duren)
 

28/10/2006 17:42:00
Quote Anchor link
Oke, ik zal het proberen.

Als je klikt op een link dan wordt die klik in de tabel gezet.
Nu wil ik die kliks laten zien achter de link.

(Dit werkt perfect bij mijn andere site maar hier krijg ik het niet voor elkaar.)

Omdat ik een aparte tabel heb gemaakt waar de kliks in zitten moet je volgens mij gegevens uit twee tabellen halen.

Dus de kliks uit de "kliks"-tabel en de naam van de link uit de "linken" tabel.

Misschien heb ik het wel helemaal fout en heb je genoeg aan de "kliks" tabel om de gegevens te laten zien. En denk ik dus weer veel te moeilijk.
 

28/10/2006 20:58:00
Quote Anchor link
Ik heb het !!

Ik was het dus weer veel te ver aan het zoeken.

Dit is de code die goed werkt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
//Geef het aantal kliks weer
     $queryKliks = "
       SELECT link_id, COUNT(kliks.datumtijd) AS aantal_kliks
FROM kliks
WHERE MONTH(kliks.datumtijd) = MONTH(CURDATE())
   AND
YEAR(kliks.datumtijd) = YEAR(CURDATE()) AND link_id = "
.$_GET['menu_id']."
GROUP BY link_id
"
;
?>
 
Robert Deiman

Robert Deiman

29/10/2006 13:52:00
Quote Anchor link
Die code komt me wel ergens bekend voor :P Maar wel mooi dat het nu wel gewoon 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.