Een array maken in cookies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 00:06:09
Quote Anchor link
Momenteel ben ik bezig met een website dat een willekeurige row uit een database haalt. Sommige rows hebben een andere ID maar wel de zelfde content(imagelink noemen wij het)

Ik ben nu bezig om te voorkomen dat bezoekers 2x een row te krijgen met de zelfde content. Hiervoor ben ik nu bezig om alle Imagelinks in de cookies op te slaan zodat ik later ervoor kan zorgen dat rows waarvan de imagelink al terugkomen in de cookies niet worden geselecteerd.

Anyways, ik zou graag willen weten hoe ik deze imagelinks kan opslaan in de cookies zonder dat ik ze overelkaar heen schrijf. Momenteel kan ik alleen de vorige imagelink oproepen, aangezien de imagelink iedere keer wordt overschreven. Mijn vraag is dus hoe ik een array bouw in mijn cookie.
Gewijzigd op 01/08/2011 00:07:18 door Ardjuna Veenstra
 
PHP hulp

PHP hulp

20/04/2024 00:55:56
 
Joakim Broden

Joakim Broden

01/08/2011 00:10:54
Quote Anchor link
Ik weet niet of je array's kan opslaan in een cookie (moet je gewoon even proberen). Als dit niet kan zet je ze gewoon als een string van link1,link2,link3,link4 in je cookie. Dan kun je ze met $string = explode(',' $string); uit elkaar halen en er een array van maken. en dan met in_array kun je kijken of de imagelink al in de array staat, zo niet zet je hem er bij. Anders doe je niks.
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 00:14:13
Quote Anchor link
Okay, klinkt logisch. Hoe zou ik het beste een string in een cookie kunnen maken?

Zou het dan zoiets zijn als:
Imagelinkcookie = Imagelinkcookie + ,Imagelink

Ik ben nieuw in php en heb nog veel moeite met het schrijven van php taal.
 
Joakim Broden

Joakim Broden

01/08/2011 00:23:52
Quote Anchor link
Bijvoorbeeld met zo'n soort code: niet getest of wat dan ook.

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
<?php
    // Kijken of cookie bestaat
    $value = (isset($_COOKIE['imageLink'])) ? $_COOKIE['imageLink'] : '';

    // Array maken van de $value
    $value = explode(',', $value);

    // Kijken of de database image link al in de cookie staat
    if(in_array('HIER DE IMAGELINK VAN DE DATABASE', $value)) {
        // De image link staat al in de cookie
    }else{
        // De image link staat niet in de cookie, dus image link toevoegen aan array $value
        $value[] = 'Hier de image link van de database';
    }


    // Cookie weer updaten
    setcookie('imageLink', implode(',', $value), time()+3600);
?>
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 00:29:28
Quote Anchor link
Momenteel heb ik dit:
setcookie("clink", $link);

clink staat voor cookie image link en $link is natuurlijk de var van de imagelink.

U stelt dus voor dat ik dit vervang met:
setcookie('clink', implode(',', $link);

Als ik u goed begrepen heb?
 
The Force

The Force

01/08/2011 00:44:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT content FROM tabel GROUP BY content


Dit moet je in de database regelen, niet met cookies en arrays gaan prutsen! Als je helemaal niet wil dat er dubbele content (of imagelinks) worden opgeslagen dan moet je er een UNIQUE overheen leggen.
 
- Ariën  -
Beheerder

- Ariën -

01/08/2011 01:18:44
Quote Anchor link
of je array door serialise() halen.
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 01:24:59
Quote Anchor link
Ik snap het niet meer hoor. Naar wie van jullie moet ik luisteren? Ik wil graag informatie opslaan in mijn cookies zonder dat ik de bestaande informatie overschrijf.

Momenteel staat er:
setcookie("clink", $link);

Iedere keer wanneer ik echo $click gebruik zie ik alleen de de link van de vorige pagina. Ik wil graag alle links hebben opgeslagen.
 
Ozzie PHP

Ozzie PHP

01/08/2011 01:29:41
Quote Anchor link
Mogen mensen nooit dezelfde imagelinks te zien krijgen, of gedurende 1 sessie. Is het erg als ik nu op de website kom en ik zie een bepaalde imagelink, dat ik diezelfde imagelink de volgende keer dat ik de website bezoek weer zie? Of vind je het alleen vervelend als tijdens dezelfde sessie dezelfde imagelinks worden getoond? Indien dit laatste het geval is, zou je het miscchien veel makkelijker kunnen oplossen met een sessie-variabele.
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 01:31:12
Quote Anchor link
Nooit is de bedoeling. Ik wil dat je alles maximaal 1x ziet.
 
Ozzie PHP

Ozzie PHP

01/08/2011 01:32:07
Quote Anchor link
Ah oké, dan kun je inderdaad beter met cookies werken, maar hou er wel rekening dat niet iedereen cookies accepteert (het merendeel wel hoor).
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 01:41:03
Quote Anchor link
Dat begrijp ik. ;)

Oke, dit is wat ik nu heb gedaan:
$newlink = $clink.",".$link;
setcookie("clink", $newlink);

Ik krijg nu alle imagelinks gescheiden tussen een komma, als het goed is kan ik ze daarna scheiden door middel van implode(',')?
 
Ozzie PHP

Ozzie PHP

01/08/2011 01:44:10
Quote Anchor link
Ik denk dat je explode bedoelt.

http://www.php.net/explode
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 02:35:07
Quote Anchor link
Oke, volgens mij is het me nu gelukt. Stap 2 zal dan zijn het willekeurig selecteren in de database waarbij rekening wordt gehouden met de cookies.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $rand2
= mysql_query("SELECT ID, Link FROM grabbelton ORDER BY RAND() DESC LIMIT 1") or die(mysql_error());
    while($row = mysql_fetch_array( $rand2 )) {
        $link2 = $row['Link'];
    }

    $linkselect2 = mysql_query("SELECT ID FROM images WHERE Link ='$link2'") or die(mysql_error());
    while($row = mysql_fetch_array( $linkselect2 )) {    
        $ID = $row['ID'];
    }

?>


Weet iemand hoe ik deze code moet veranderen? Heb al een aantal dingen geprobeerd maar krijg steeds een foutmelding.

edit:

Oke, laatste fase nu, momenteel heb ik:
$pieces = explode(",", $clink);

Wat alle links uit elkaar haalt en er een array van maakt(toch?)

en dit:
$rand2 = mysql_query("SELECT ID, Link FROM grabbelton WHERE Link <> ($pieces) ORDER BY RAND() DESC LIMIT 1") or die(mysql_error());

($pieces) werkt niet, wat moet ik doen?

edit:

het zelfde probleem heb ik nu ook ondervonden bij het verwijderen van rows:
mysql_query("DELETE FROM grabbelton WHERE Link ='".$link."' limit 1 ") or die (mysql_error());

In plaats van dat er gezocht wordt naar een row waarvan de waarde Link gelijk staat aan $link, wordt er willekeurig een gekozen. Dit is niet de bedoeling.
Gewijzigd op 01/08/2011 04:19:40 door Ardjuna Veenstra
 
Eric Wagener

Eric Wagener

01/08/2011 07:28:35
Quote Anchor link
$pieces is een array, dus dat gaat niet. Je kunt $clink gewoon gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$rand2
= mysql_query("SELECT ID, Link FROM grabbelton WHERE FIELD(Link,$clink) = 0 ORDER BY RAND() DESC LIMIT 1") or die(mysql_error());
?>

Zorg wel dat je eerst test of $clink een waarde heeft en zo.
 
Ardjuna Veenstra

Ardjuna Veenstra

01/08/2011 07:58:30
Quote Anchor link
Ik ben bang dat $click niet herkent wordt als losse stukken imagelinks maar als een heel lang woord.

edit:

Helaas, het werkt niet bij mij. Ik zie nog steeds de zelfde afbeeldingen terug komen en uiteindelijk crasht het met een foutmelding die ik niet begrijp.

mysql_query("DELETE FROM grabbelton WHERE Link ='".$link."' limit 1 ") or die (mysql_error());

Dit heb ik gelukkig momenteel weten op te lossen. Bleek dus dat ik eerst een nieuwe $link kreeg en dan pas werd de juiste row gezocht, geen wonder dat steeds de verkeerde row werd verwijderd.
Gewijzigd op 01/08/2011 08:15:07 door Ardjuna Veenstra
 
Wladimir S

Wladimir S

01/08/2011 12:56:01
Quote Anchor link
Bij het schrijven van cookies werk ik als volgt:
for($i=1;$i<=aantal_te_schrijven_cookies;$i++)
{ setcookie(cookie_naam[$i], cookie_waarde[$i]);
}
Gewijzigd op 01/08/2011 13:34:04 door Wladimir S
 
Ardjuna Veenstra

Ardjuna Veenstra

02/08/2011 18:33:37
Quote Anchor link
Oke, mijn probleem heb ik nu opgelost met behulp van een loop. De script blijft gewoon net zo lang linkjes pakken totdat ie er een is tegengekomen die nog niet in de array staat. Jammer dat ik niet direct kan zoeken. De test verliep soepel maar ik ben bang dat mensen die bijvoorbeeld in de VS wonen lang zullen moeten wachten.
 



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.