Kleine Vragen Topic #4

Gestart doorOne2xs1.965 reacties23.994 weergaven

1.966 berichten · pagina 94 van 132

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bugged schreef:
Kan ik bij het laden van een pagina met PHP de inhoud van een Javascript var aanpassen?

Scenario: Ik gebruik een grafieksplugin die data ophaalt uit Javascript d.m.v. een var "data1". Deze bevat de info om die grafiek te maken. Ik haal in PHP met een SQL-query de data op voor die grafiek. Ik wil dus die data in die Javascript var stoppen en daarmee die grafiek maken. Het gaat om het ophalen van het aantal transacties in een maand, die wil ik dus in die grafiek gebruiken.

Snippets:

Codeblok (index.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

$(document).ready(function() {
var data1 = [

for($i = 1; $i < 12; $i++){
if($result = $db->query("SELECT COUNT(*) AS count FROM transactions WHERE MONTH(date) = ".$i)->fetch_assoc()){
if($i = 12){
echo "[".$i.",".$result[count]."]";
}
else{
echo "[".$i.",".$result[count]."],";
}
}
}

?>
];

// nog meer code shit
}

[knip]

Er lijkt dus iets mis te gaan, wie kan helpen? smile
12 keer een query uitvoeren lijkt me niet de meeste efficiënte manier.. Je kunt ook per maand groeperen en dan simpel fetchen. Daarnaast zou ik de data async ophalen via een AJAX call als JSON.
0
Berichten
3.001
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Keffe schreef:
Wat mij uberhaupt al opvald is dat $i nooit 12 zal worden omdat jij zegt dat de waarde $i allen minder mag zijn dan 12 door dit: $i < 12. dit wil zeggen dat hij tot 11 mag gaan en dan stoppen. Maar in jou code zie ik een waarde 12. Dit stukje code klopt ook niet omdat je daar eigenlijk zegt dat $i altijd 12 wordt. Volgens mij mis jij een = dus zou het moeten zijn:
[COLOR= #0000BB]<?php[/COLOR]
                [URL="http://www.php.net/for"]for[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]<=[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR][COLOR= #007700]++){[/COLOR]
                    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT COUNT(*) AS count FROM transactions WHERE MONTH(date) = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700])->[/COLOR]fetch_assoc[COLOR= #007700]()){[/COLOR]
                        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700]){[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"]"[/COLOR][COLOR= #007700];
                        }[/COLOR][URL="http://www.php.net/else"]else[/URL][COLOR= #007700]{[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"],"[/COLOR][COLOR= #007700];
                        }
                    }
                }[/COLOR]
                ?>


Misschien dat dit jou probleem al op zou lossen dat weet ik niet zeker omdat ik de code zelf niet kan testen.

Werkt helaas niet. sadley
Stef schreef:
Je kan beter dmv AJAX de gegevens uit een JSON bestand halen.
Ik genereer ook een grafiek en haal de data op met de volgende code:

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

$.post("graphdata.php", {
accountID: accountID
},
function(data, status){
var results = JSON.parse(data);

var resultCount = 0;
results.forEach(function(entry) {
if(resultCount == 0) {
timestamps.push(entry[Timestamp].substr(12, 5) + " " + entry[Timestamp].substr(24, 2));
// timestamps.push(entry[Timestamp]);
followers.push(entry[DataA]);
}
resultCount++;
if(resultCount == 28) { //28 = 7 dagen
resultCount = 0;
}
});
timestamps.reverse();
followers.reverse();
drawGraph(timestamps, followers);
});

Ik gebruik Flot charts, die werkt met een
en achteraf heb je dan de data variabele in JS waarmee je de data invult. Gaat jouw manier dan nog steeds op? Ik zie bij jou namelijk eerst de data ophalen en dan drawGraph() uitvoeren, maar dat gebeurt hier dus andersom.
Milan schreef:
12 keer een query uitvoeren lijkt me niet de meeste efficiënte manier.. Je kunt ook per maand groeperen en dan simpel fetchen. Daarnaast zou ik de data async ophalen via een AJAX call als JSON.
Zie ook deels hierboven wat betreft JSON. Over de efficiëntie: Een query met SELECT date FROM transactions GROUP BY MONTH(date)?
0
Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bugged schreef:
Zie ook deels hierboven wat betreft JSON. Over de efficiëntie: Een query met SELECT date FROM transactions GROUP BY MONTH(date)?
Waarom niet? Dan hoef je die query ook niet meerdere keren op te roepen.

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9

$result = $db->query("SELECT COUNT(*) AS count FROM transactions")->fetch_assoc());

while (hier je assoc) {
if (date(M, strtotime($row[date])) == 12) {

} else {

}
}
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Bugged schreef:
Eerdere citaten tonen
Keffe schreef:
Wat mij uberhaupt al opvald is dat $i nooit 12 zal worden omdat jij zegt dat de waarde $i allen minder mag zijn dan 12 door dit: $i < 12. dit wil zeggen dat hij tot 11 mag gaan en dan stoppen. Maar in jou code zie ik een waarde 12. Dit stukje code klopt ook niet omdat je daar eigenlijk zegt dat $i altijd 12 wordt. Volgens mij mis jij een = dus zou het moeten zijn:
[COLOR= #0000BB]<?php[/COLOR]
                [URL="http://www.php.net/for"]for[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]<=[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR][COLOR= #007700]++){[/COLOR]
                    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT COUNT(*) AS count FROM transactions WHERE MONTH(date) = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700])->[/COLOR]fetch_assoc[COLOR= #007700]()){[/COLOR]
                        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700]){[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"]"[/COLOR][COLOR= #007700];
                        }[/COLOR][URL="http://www.php.net/else"]else[/URL][COLOR= #007700]{[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"],"[/COLOR][COLOR= #007700];
                        }
                    }
                }[/COLOR]
                ?>


Misschien dat dit jou probleem al op zou lossen dat weet ik niet zeker omdat ik de code zelf niet kan testen.
Werkt helaas niet. sadley
Stef schreef:
Je kan beter dmv AJAX de gegevens uit een JSON bestand halen.
Ik genereer ook een grafiek en haal de data op met de volgende code:

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

$.post("graphdata.php", {
accountID: accountID
},
function(data, status){
var results = JSON.parse(data);

var resultCount = 0;
results.forEach(function(entry) {
if(resultCount == 0) {
timestamps.push(entry[Timestamp].substr(12, 5) + " " + entry[Timestamp].substr(24, 2));
// timestamps.push(entry[Timestamp]);
followers.push(entry[DataA]);
}
resultCount++;
if(resultCount == 28) { //28 = 7 dagen
resultCount = 0;
}
});
timestamps.reverse();
followers.reverse();
drawGraph(timestamps, followers);
});

Ik gebruik Flot charts, die werkt met een
en achteraf heb je dan de data variabele in JS waarmee je de data invult. Gaat jouw manier dan nog steeds op? Ik zie bij jou namelijk eerst de data ophalen en dan drawGraph() uitvoeren, maar dat gebeurt hier dus andersom.
Milan schreef:
12 keer een query uitvoeren lijkt me niet de meeste efficiënte manier.. Je kunt ook per maand groeperen en dan simpel fetchen. Daarnaast zou ik de data async ophalen via een AJAX call als JSON.
Zie ook deels hierboven wat betreft JSON. Over de efficiëntie: Een query met SELECT date FROM transactions GROUP BY MONTH(date)?

Ja, gewoon in plaats van [c]drawGraph()[/c] doe je [c]var data = timestamps[/c] bijvoorbeeld smile
Neem eens een kijkje naar chart.js dat werkt echt heerlijk biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Bugged schreef:
Eerdere citaten tonen
Keffe schreef:
Wat mij uberhaupt al opvald is dat $i nooit 12 zal worden omdat jij zegt dat de waarde $i allen minder mag zijn dan 12 door dit: $i < 12. dit wil zeggen dat hij tot 11 mag gaan en dan stoppen. Maar in jou code zie ik een waarde 12. Dit stukje code klopt ook niet omdat je daar eigenlijk zegt dat $i altijd 12 wordt. Volgens mij mis jij een = dus zou het moeten zijn:
[COLOR= #0000BB]<?php[/COLOR]
                [URL="http://www.php.net/for"]for[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]<=[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR][COLOR= #007700]++){[/COLOR]
                    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT COUNT(*) AS count FROM transactions WHERE MONTH(date) = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700])->[/COLOR]fetch_assoc[COLOR= #007700]()){[/COLOR]
                        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]12[/COLOR][COLOR= #007700]){[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"]"[/COLOR][COLOR= #007700];
                        }[/COLOR][URL="http://www.php.net/else"]else[/URL][COLOR= #007700]{[/COLOR]
                            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"["[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]","[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]count[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"],"[/COLOR][COLOR= #007700];
                        }
                    }
                }[/COLOR]
                ?>


Misschien dat dit jou probleem al op zou lossen dat weet ik niet zeker omdat ik de code zelf niet kan testen.
Werkt helaas niet. sadley
Stef schreef:
Je kan beter dmv AJAX de gegevens uit een JSON bestand halen.
Ik genereer ook een grafiek en haal de data op met de volgende code:

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

$.post("graphdata.php", {
accountID: accountID
},
function(data, status){
var results = JSON.parse(data);

var resultCount = 0;
results.forEach(function(entry) {
if(resultCount == 0) {
timestamps.push(entry[Timestamp].substr(12, 5) + " " + entry[Timestamp].substr(24, 2));
// timestamps.push(entry[Timestamp]);
followers.push(entry[DataA]);
}
resultCount++;
if(resultCount == 28) { //28 = 7 dagen
resultCount = 0;
}
});
timestamps.reverse();
followers.reverse();
drawGraph(timestamps, followers);
});

Ik gebruik Flot charts, die werkt met een
en achteraf heb je dan de data variabele in JS waarmee je de data invult. Gaat jouw manier dan nog steeds op? Ik zie bij jou namelijk eerst de data ophalen en dan drawGraph() uitvoeren, maar dat gebeurt hier dus andersom.
Milan schreef:
12 keer een query uitvoeren lijkt me niet de meeste efficiënte manier.. Je kunt ook per maand groeperen en dan simpel fetchen. Daarnaast zou ik de data async ophalen via een AJAX call als JSON.
Zie ook deels hierboven wat betreft JSON. Over de efficiëntie: Een query met SELECT date FROM transactions GROUP BY MONTH(date)?

Je hebt if($i = 12){ ivp tweemaal een =-teken. Maar zoals men hierboven al zegt: beter maak je er één query van.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Ik heb in PHP de volgende multidimensionale array:

Codeblok (voorbeeld.php):

1

Array ( [A] => Array ( [0] => 10 [1] => 8 ) => Array ( [0] => 12 ) [C] => Array ( [0] => 2 ) [F] => Array ( [0] => 6 ) [G] => Array ( [0] => 3 ) [M] => Array ( [0] => 14 ) [O] => Array ( [0] => 9 ) [P] => Array ( [0] => 4 ) [S] => Array ( [0] => 13 [1] => 7 [2] => 1 ) [Y] => Array ( [0] => 11 ) )

De sleutel is dus een alfabetische letter die ik ook wil echoen, maar dat gaat niet omdat er dan "Array" uitkomt.
Weet iemand hoe ik die letters weer kan geven?
Ik gebruik nu de volgende code:

[B]Codeblok (voorbeeld.php):


1
2
3
4
5
6
7
8
9
10


foreach($groups as $firstletter) {
echo "

$firstletter

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}


Waarin $groups die array is.
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10


foreach($groups as $key => $firstletter) {
echo "

$key

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Stef schreef:
Ik heb in PHP de volgende multidimensionale array:

Codeblok (voorbeeld.php):
1

Array ( [A] => Array ( [0] => 10 [1] => 8 ) => Array ( [0] => 12 ) [C] => Array ( [0] => 2 ) [F] => Array ( [0] => 6 ) [G] => Array ( [0] => 3 ) [M] => Array ( [0] => 14 ) [O] => Array ( [0] => 9 ) [P] => Array ( [0] => 4 ) [S] => Array ( [0] => 13 [1] => 7 [2] => 1 ) [Y] => Array ( [0] => 11 ) )

De sleutel is dus een alfabetische letter die ik ook wil echoen, maar dat gaat niet omdat er dan "Array" uitkomt.
Weet iemand hoe ik die letters weer kan geven?
Ik gebruik nu de volgende code:

[B]Codeblok (voorbeeld.php):


1
2
3
4
5
6
7
8
9
10


foreach($groups as $firstletter) {
echo "

$firstletter

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}


Waarin $groups die array is.

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10


foreach($groups as $key => $firstletter) {
echo "

$key

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Luukvdo schreef:
Eerdere citaten tonen
Stef schreef:
Ik heb in PHP de volgende multidimensionale array:
Codeblok (voorbeeld.php):
1

Array ( [A] => Array ( [0] => 10 [1] => 8 ) => Array ( [0] => 12 ) [C] => Array ( [0] => 2 ) [F] => Array ( [0] => 6 ) [G] => Array ( [0] => 3 ) [M] => Array ( [0] => 14 ) [O] => Array ( [0] => 9 ) [P] => Array ( [0] => 4 ) [S] => Array ( [0] => 13 [1] => 7 [2] => 1 ) [Y] => Array ( [0] => 11 ) )

De sleutel is dus een alfabetische letter die ik ook wil echoen, maar dat gaat niet omdat er dan "Array" uitkomt.
Weet iemand hoe ik die letters weer kan geven?
Ik gebruik nu de volgende code:

[B]Codeblok (voorbeeld.php):


1
2
3
4
5
6
7
8
9
10


foreach($groups as $firstletter) {
echo "

$firstletter

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}


Waarin $groups die array is.

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10


foreach($groups as $key => $firstletter) {
echo "

$key

"
;
echo ""
;
foreach($firstletter as $group) {
$grp = new Group($group);
echo "$grp->groupName";
}

echo "";
}


Omg held worshippyworshippyworshippybiggrin
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Ik probeer een "aantal keer bekeken" cookie te maken.
Ik wil een array in een cookie (wat niet met een standaard php array mogelijk is). Dus zet ik een array in JSON die ik vervolgens in de cookie zet.

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14

$interests = json_decode($_COOKIE[interests]);
if(array_key_exists($groupID, $interests)) {
$currentCount = $interests[$groupID];
$newCount = $currentCount++;
$interests[$groupID] = $newCount;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}
else {
$interests[$groupID] = 1;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}

print_r(json_decode($_COOKIE[interests]));

Waarom blijft de waarde van mijn cookie [c]%5B%5D[/c]?
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Stef schreef:
Ik probeer een "aantal keer bekeken" cookie te maken.
Ik wil een array in een cookie (wat niet met een standaard php array mogelijk is). Dus zet ik een array in JSON die ik vervolgens in de cookie zet.

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14

$interests = json_decode($_COOKIE[interests]);
if(array_key_exists($groupID, $interests)) {
$currentCount = $interests[$groupID];
$newCount = $currentCount++;
$interests[$groupID] = $newCount;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}
else {
$interests[$groupID] = 1;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}

print_r(json_decode($_COOKIE[interests]));

Waarom blijft de waarde van mijn cookie [c]%5B%5D[/c]?

[c]%5B%5D[/c] is decoded []. Dus je krijgt een lege PHP array terug. Is dit na het herladen van de pagina hetzelfde? (Volgens mij kun je niet setcookie doen en erna $_COOKIE gebruiken).
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Eerdere citaten tonen
Stef schreef:
Ik probeer een "aantal keer bekeken" cookie te maken.
Ik wil een array in een cookie (wat niet met een standaard php array mogelijk is). Dus zet ik een array in JSON die ik vervolgens in de cookie zet.

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14

$interests = json_decode($_COOKIE[interests]);
if(array_key_exists($groupID, $interests)) {
$currentCount = $interests[$groupID];
$newCount = $currentCount++;
$interests[$groupID] = $newCount;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}
else {
$interests[$groupID] = 1;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}

print_r(json_decode($_COOKIE[interests]));

Waarom blijft de waarde van mijn cookie [c]%5B%5D[/c]?

[c]%5B%5D[/c] is decoded []. Dus je krijgt een lege PHP array terug. Is dit na het herladen van de pagina hetzelfde? (Volgens mij kun je niet setcookie doen en erna $_COOKIE gebruiken).

Jup, wanneer je de pagina refresht blijft de cookie hetzelfde.
Het gaat om bijvoorbeeld deze pagina:
http://chatteringstarling.com/group/Youtubers
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Stef schreef:
Eerdere citaten tonen
Milan schreef:
Eerdere citaten tonen
Stef schreef:
Ik probeer een "aantal keer bekeken" cookie te maken.
Ik wil een array in een cookie (wat niet met een standaard php array mogelijk is). Dus zet ik een array in JSON die ik vervolgens in de cookie zet.

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14

$interests = json_decode($_COOKIE[interests]);
if(array_key_exists($groupID, $interests)) {
$currentCount = $interests[$groupID];
$newCount = $currentCount++;
$interests[$groupID] = $newCount;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}
else {
$interests[$groupID] = 1;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}

print_r(json_decode($_COOKIE[interests]));
Waarom blijft de waarde van mijn cookie [c]%5B%5D[/c]?

[c]%5B%5D[/c] is decoded []. Dus je krijgt een lege PHP array terug. Is dit na het herladen van de pagina hetzelfde? (Volgens mij kun je niet setcookie doen en erna $_COOKIE gebruiken).

Jup, wanneer je de pagina refresht blijft de cookie hetzelfde.
Het gaat om bijvoorbeeld deze pagina:
http://chatteringstarling.com/group/Youtubers

Bij mij wordt de cookie uberhaupt niet aangemaakt.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Eerdere citaten tonen
Stef schreef:
Eerdere citaten tonen
Milan schreef:
Eerdere citaten tonen
Stef schreef:
Ik probeer een "aantal keer bekeken" cookie te maken.
Ik wil een array in een cookie (wat niet met een standaard php array mogelijk is). Dus zet ik een array in JSON die ik vervolgens in de cookie zet.

Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14

$interests = json_decode($_COOKIE[interests]);
if(array_key_exists($groupID, $interests)) {
$currentCount = $interests[$groupID];
$newCount = $currentCount++;
$interests[$groupID] = $newCount;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}
else {
$interests[$groupID] = 1;
$jsonInterests = json_encode($interests);
setcookie("interests", $jsonInterests, time() + (86400 * 365), "/");
}

print_r(json_decode($_COOKIE[interests]));
Waarom blijft de waarde van mijn cookie [c]%5B%5D[/c]?
[c]%5B%5D[/c] is decoded []. Dus je krijgt een lege PHP array terug. Is dit na het herladen van de pagina hetzelfde? (Volgens mij kun je niet setcookie doen en erna $_COOKIE gebruiken).

Jup, wanneer je de pagina refresht blijft de cookie hetzelfde.
Het gaat om bijvoorbeeld deze pagina:
http://chatteringstarling.com/group/Youtubers

Bij mij wordt de cookie uberhaupt niet aangemaakt.

Klik rechtsonderin eens op delete cookies en daarna weer even accepteren?
Het kan zijn dat je de pagina ooit eerder hebt bezocht. Toen is alleen de acceptedcookies cookie aangemaakt yummie
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Probeer dit eens dan:

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24



// If the cookie hasnt been set yet
// set it with an empty array

if (!isset($_COOKIE[interest]))
$_COOKIE[interest] = json_encode(array());

$interestArr = json_decode($_COOKIE[interest]);

// If the key exists, increase it
if (array_key_exists($groupID, $interestArr))
{

$interestArr[$groupID]++;
}

else
{
// If not, set its value to 1
$interestArr[$groupId] = 1;
}


// Be sure to set the cookie with setcookie and $_COOKIE
// so its changes are effective immediately

$_COOKIE[interest] = $interestArr;
setcookie(interest, json_encode($interestArr), time() + (86400 * 365));
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren