Beste mensen,

Ik wil graag dat als er op een knop geklikt word, dan dat het achtergrond
waarvoor het knop gemaakt is, opgeslagen word in een cookie.
En dat als je later terug op dat site komt, dan dat het achtergrond waarvan
je ingesteld hebt er nog steeds staat. Maar dat lukt mij gewoon niet :S.
Hieronder bevindt het script waarmee het eigenlijk zou moeten lukken:


<?php

    if ($_POST['bg'])
    {
        $Achtergrond = $_POST['bg'];
        
        if ($_POST['bg'] == 'Achtergrond 1')
                            {
                                $Achter = "Achtergrond 1";
                                setcookie("Achtergrond_1", $Achtergrond, time()+3600);
                            }
        if ($_POST['bg'] == 'Achtergrond 2')
                            {
                                $Achter = "Achtergrond 2";
                                setcookie("Achtergrond_2", $Achtergrond, time()+3600);
                            }
        if ($_POST['bg'] == 'Achtergrond 3')
                            {
                                $Achter = "Achtergrond 3";
                                setcookie("Achtergrond_3", $Achtergrond, time()+3600);
                            }
                            
        echo $Achtergrond . '<br>' . $Achter;
                            
    }

?>
<html>
    <head>
    <title>Veranderen van achtergronden</title>
    </head>
    <body>
        
        <form method="POST" action="">
    <table align="center">
        <tr><td>
            <div id="bg"><table border="1" width="500px" height="300px"></div>
            <tr><td>
                <?php
                
                    if ($_POST['bg'])
                    {
                        if ($_POST['bg'] == 'Achtergrond 1')
                            {
                                echo '<style type="text/css">' .
                                        '#bg { background-image: url(bg4.jpg); }' .
                                     '</style>';
                            }
                        if ($_POST['bg'] == 'Achtergrond 2')
                            {
                                echo '<style type="text/css">' .
                                        '#bg { background-image: url(bg2.jpg); }' .
                                     '</style>';
                            }

                        if ($_POST['bg'] == 'Achtergrond 3')
                            {
                                echo '<style type="text/css">' .
                                        '#bg { background-image: url(bg3.jpg); }' .
                                     '</style>';
                            }
                    }
                    
                ?>
            </td></tr>
            </table>
        </td></tr>
        <tr><td>
            <table border="1" width="500px" height="30px">
                <tr><td align="center"> 
                    <input type="submit" name="bg" value="Achtergrond 1">
                </td><td align="center">
                    <input type="submit" name="bg" value="Achtergrond 2">
                </td><td align="center">
                    <input type="submit" name="bg" value="Achtergrond 3">
                </td></tr>
            </table>        
        </td></tr>
    </table>
        </form>
        
    </body>
</html>
Waar lees je de cookie weer uit? Nu maak je een cookie aan, maar de volgende keer dat iemand op de pagina komt doe je niets met die cookie.
Goh bedankt Raymond, je reactie helpt veel.
Geef aub een voorbeeld, want dit schiet niet op.
Ook ben ik nog nieuw met cookies etc...
Verander

<?php
setcookie("Achtergrond_1", $Achtergrond, time()+3600);
setcookie("Achtergrond_2", $Achtergrond, time()+3600);
setcookie("Achtergrond_3", $Achtergrond, time()+3600);
?>

in:

<?php
setcookie("Achtergrond", $Achtergrond, time()+3600);
?>

Je wilt namelijk maar 1 cookie (met de naam 'Achtergrond') en niet 3 verschillende cookie's
Het word dan zo:

<?php
if ($_POST['bg'] == 'Achtergrond 1')
{
     $Achter = "Achtergrond 1";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}

if ($_POST['bg'] == 'Achtergrond 2')
{
     $Achter = "Achtergrond 2";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}

if ($_POST['bg'] == 'Achtergrond 3')
{
     $Achter = "Achtergrond 3";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}
?>


Als je nu in het 2e stuk php code (in jouw script) $_POST['bg'] vervangt door een variable en die die laat afhangen van de cookie dan hbe je als het goed is het probleem opgelost.

Het word dan zoiets:

<?php
if(isset($_COOKIE['Achtergrond']))
{
     $bg = $_COOKIE['Achtergrond'];
}
                	
if (isset($bg))
{
     if ($bg == 'Achtergrond 1')
     {
           echo '<style type="text/css">' .
                   '#bg { background-image: url(bg4.jpg); }' .
                   '</style>';
     }
     
     if ($bg == 'Achtergrond 2')
     {
           echo '<style type="text/css">' .
           '#bg { background-image: url(bg2.jpg); }' .
           '</style>';
     }

     if ($bg == 'Achtergrond 3')
     {
          echo '<style type="text/css">' .
                  '#bg { background-image: url(bg3.jpg); }' .
                  '</style>';
     }
}
?>

Ik heb het nu redelijk voorgekauwd, ik hoop dat je het ook snapt.

Voor de duidelijkheid:
Als je de inhoud van een cookie wilt hebben doe je dat zo:

$_COOKIE['naamvandecookie']
Raymond schreef op 16.06.2009 19:01

Je wilt namelijk maar 1 cookie (met de naam 'Achtergrond') en niet 3 verschillende cookie's
Het word dan zo:

if ($_POST['bg'] == 'Achtergrond 1')
{
     $Achter = "Achtergrond 1";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}

if ($_POST['bg'] == 'Achtergrond 2')
{
     $Achter = "Achtergrond 2";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}

if ($_POST['bg'] == 'Achtergrond 3')
{
     $Achter = "Achtergrond 3";
     setcookie("Achtergrond", $Achtergrond, time()+3600);
}

Dit kan je volgens mij beter met een [php]switch[/php] doen.
Dat is inderdaad nog beter (ik had gewoon zijn code gepakt en de underscores weg gehaald).
Moet lijn 39 t/m 64 niet in de head gedeelte van zijn pagina?
@ Raymond

Bedankt :)
Ik zal het later in de avond meteen testen of het dan lukt of niet.
Maar nu ff flink wat trainen in de fitnis :P

-Axonar-
Mark schreef op 16.06.2009 19:08
Moet lijn 39 t/m 64 niet in de head gedeelte van zijn pagina?


Ja dat kan, maar om het makkelijker te maken heb ik ze van elkaar gescheiden.
@ Raymond

Reuze bedankt joch :P, het is me eindelijk gelukt :).
Hieronder heb je de code staan die wel werkt.
En ook begrijp ik nu hoe cookies eenmaal in elkaar zitten ;).

Mvg,
Tolga


<?php

    if ($_POST['bg'])
    {
        $Achtergrond = $_POST['bg'];
        
        if ($_POST['bg'] == 'Achtergrond 1')
                            {
                                setcookie("Achtergrond", $Achtergrond, time()+3600);
                            }
        if ($_POST['bg'] == 'Achtergrond 2')
                            {
                                setcookie("Achtergrond", $Achtergrond, time()+3600);
                            }
        if ($_POST['bg'] == 'Achtergrond 3')
                            {
                                setcookie("Achtergrond", $Achtergrond, time()+3600);
                            }
                            
    }

?>
<html>
    <head>
    <title>Veranderen van achtergronden</title>
    </head>
    <body>
        
        <form method="POST" action="">
    <table align="center">
        <tr><td>
            <div id="bg"><table border="1" width="500px" height="300px"></div>
            <tr><td>
                <?php
                    if(isset($_COOKIE['Achtergrond']))
                    {
                         $bg = $_COOKIE['Achtergrond'];
                    }
                                        
                    if (isset($bg))
                    {
                         if ($bg == 'Achtergrond 2')
                         {
                               echo '<style type="text/css">' .
                                       '#bg { background-image: url(bg4.jpg); }' .
                                       '</style>';
                         }
                         
                         if ($bg == 'Achtergrond 3')
                         {
                               echo '<style type="text/css">' .
                               '#bg { background-image: url(bg2.jpg); }' .
                               '</style>';
                         }

                         if ($bg == 'Achtergrond 1')
                         {
                              echo '<style type="text/css">' .
                                      '#bg { background-image: url(bg3.jpg); }' .
                                      '</style>';
                         }
                    }
                ?> 
            </td></tr>
            </table>
        </td></tr>
        <tr><td>
            <table border="1" width="500px" height="30px">
                <tr><td align="center"> 
                    <input type="submit" name="bg" value="Achtergrond 1">
                </td><td align="center">
                    <input type="submit" name="bg" value="Achtergrond 2">
                </td><td align="center">
                    <input type="submit" name="bg" value="Achtergrond 3">
                </td></tr>
            </table>        
        </td></tr>
    </table>
        </form>
        
    </body>
</html>


Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Graag gedaan, mooi dat het werkt.

Reageren