cookies 1 keer klikken en de div verdwijnt

Status
Niet open voor verdere reacties.

whitetigerck

Gebruiker
Lid geworden
8 aug 2008
Berichten
196
Nadat mijn vorige probleem zo succesvol is opgelost, loop ik nu weer tegen een klein probleempje. Ik heb de vorige keer dankzij de hulp van Lapixx de naam van de nieuwste file in een map gevonden. Ik heb het script nog een beetje bewerkt zodat ik ook de link kreeg van deze file, dat is allemaal goed gelukt.

Nu wil ik deze onder een link zetten op mijn website zetten, met de woorden nieuw erin, maar als deze 1 keer geklikt is moet het woord nieuw verdwijnen (of de div waar deze in staat).

Dit is mijn structuur die ik nu heb:
Ik heb eerst een afbeelding die naar dezelfde locatie linkt als de woorden nieuw, maar de woorden nieuw die zou ik graag laten verdwijnen als er 1 keer op geklikt wordt, maar het plaatje niet. Maar wanneer de variabele veranderd, dan moeten de woorden nieuw weer terugkomen.
PHP:
    <div id="newdoc">
    <?php
echo "<a href=\"$folder/$newname\" title=\"$newname\">nieuw</a>";
	?>
    </div>
        <div id="doc">
    <?php 
echo "<a href=\"$folder/$newname\" title=\"$newname\">"; ?><img width="50" border="0" <?php echo "title=\"$newname\" alt=\"$newname\"" ?>src="afbeeldingen/logo/docicon.png"/></a>
        </div>

hebben jullie een idee hoe dit het beste aangepakt kan worden?
Ik heb zitten denken dat het waarschijnlijk met cookies zou moeten, maar daar heb ik niet zo heel veel ervaring mee.
(Als het niet zo is, zeg het dan dan verander ik de titel:p)
 
als ik het goed begrijp wil je de link/woord, zodra erop geklikt is, verwijderen maar het plaatje laten staan, waarna de volgende keer de link/woord niet meer getoond word?

indien zo: Je kunt het inderdaad met cookies doen, maar ook mey SQL :) Enige "nadeel" is dat PHP dit niet kan, en dat je een combinatie van javascript met PHP moet maken...

Aanpak met cookies:
- Maak een onzichtbare container div aan via PHP. Hierin plaatst PHP de code die getoond moet worden als er nog niet geklikt is.
- Maak nog een onzichtbare container div aan via PHP en plaats hierin de code die getoond moet worden als er al WEL geklikt is.
- Maak een lege div aan die getoond word op de site.
Dan nu het javascript:
- Controleer via javascript of de cookie bestaat cookie
- Bestaat deze? gebruik dan iets als "document.getElementById('ID containerdiv met content als er al WEL geklikt is').innerHTML" om de content uit de juiste div te halen. Met dezelfde functie kun je dan de innerHTML van de getoonde div vullen met die info (zie hieronder)

Code:
if( $cookie == true )
document.getElementById('TOON').innerHTML = document.getElementById('NIETtonen').innerHTML
}else{
document.getElementById('TOON').innerHTML = document.getElementById('WELtonen').innerHTML
}


Daarnaast moet de link/woord waarop je moet klikken gebruik maken van een event die een javascript functie aanroept. Deze functie moet het volgende doen:

Code:
functie do_this() {
// Maak de cookie aan, zodat er niet nog een keer geklikt worde
// Plaats de innerHTML van de "NIETtonen" div in de "TOON" div
// [URL="http://www.google.com/search?hl=en&q=javascript+document.location"]http://www.google.com/search?hl=en&q=javascript+document.location[/URL]Link de persoon door naar de juiste pagina omdat ie op de link heeft gedrukt
}



Andere methode met SQL
- controleer via SQL of het IP adres van de gebruiker in de DB staat
- indien wel, dan NIET de link tonen.
- indien niet, dan WEL de link tonen.
- De link moet NIET linken naar het bestand, maar naar een PHP file... Zodra de PHP file is aangeroepen, moet een SQL commando het IP adres van de persoon toevoegen aan de SQL database. DAARNA moet de persoon via b.v. javascript of PHP header doorgelinkt worden naar het bestand....

in plaats van SQL database kun je ook PHP cookie gebruiken, zelfde aanpak


Succes! :thumb:
JB
 
Dankje voor je antwoord, echter lost dit mijn probleem niet helemaal op.

De link naar waar de div toe linkt wordt soms wel eens anders (in mijn geval wanneer er een ander document wordt geuploaded, dan toont hij de link naar het nieuwste document), en wanneer dat gebeurd wil ik dat het woord nieuw (dus de div id="nieuw") wel weer wordt getoond. Ik zou het liefst het gewoon in php houden en dus zonder databases werken.

Dus ik heb eigenlijk 3 div's de div van het plaatje, met daarin de div nieuw en de div oud en afhankelijk of de link nog niet geklikt is toont hij nieuw of oud. Maar hoe laat ik php 'onthouden' wanneer de link voor de gebruiker is veranderd?

Kan ik dit in een cookie zetten bv? Nogmaals ik heb totaal geen verstand van cookies;)
 
Dus ik heb eigenlijk 3 div's de div van het plaatje
Als je het princiepe begrijpt, kun je het ook met 2 divs doen, of zelfs gewoon zonder (en de getoonde div aanmaken via Javascript, en de link alleen opsnaal in een var in javascript, via PHP) maargoed :)
Code:
PHP FILE:
<javascript>
$var = "<?PHP echo $link; ?>";
</javascript>
// waarbij je "$var" in de div zet via innerHTML.


Wat is een cookie?
Een cookie is een bestand dat door het script via de browser aangemaakt wordt.Hierbij is het mogelijk bepaalde data op te slaan, zo ook de expire time (b.v. 10 dagen). Daarnaast kunnen cookies alleen uitgelezen worden door hetzelfde (sub)domein. Je kunt dus niet met je eigen domeintje een Helpmij.nl cookie uitlezen :)
Hoe het werkt? heel eenvoudig: je zegt "setcookie" en voilla, een cookie is aangemaakt met de opgegeven tekst.... "readcookie" om de tekst uit te lezen.

Hoe jij het nu moet gaan doen: Je plaatst geen tekst in de cookie, maar de "time" van het bestand waarop de persoon geklikt heeft. (of de "date" als je dat makkelijker vind).
Als de Time/Date van het huidige bestand groter is, dan toon je de link, anders niet.

COOKIE

m.v.g.
Jeffrey
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan