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.
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(',')?
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.

<?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.
$pieces is een array, dus dat gaat niet. Je kunt $clink gewoon gebruiken.


<?
$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.
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.
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]);
}

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.

Reageren