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>
Ik heb hellaas nog een klein probleem, wanneer je op de knop klikt om het achtergrond te veranderen en op te slaan als een cookie, dan moet je er soms wel 2 keer op klikken om het plaatje te zien. Of je kunt de pagina refreshen, dus dacht ik, als je op de knop klikt dan wordt het pagina 1 keer refreshed en heb ik op google naar meta refresh gezocht, maar ik kon daar niets nuttigs vinden. weet iemand anders misschien een raad?

ook heb ik mijn script nog eens aangepast (van if naar switch):


<?php

    switch ($_POST['bg'])
    {
        case 'Achtergrond 1':
            {
                setcookie("Achtergrond", $_POST['bg'], time()+3600);
            }
            break;
        case 'Achtergrond 2':
            {
                setcookie("Achtergrond", $_POST['bg'], time()+3600);
            }                
            break;
        case 'Achtergrond 3':
            {
                setcookie("Achtergrond", $_POST['bg'], time()+3600);
            }
            break;
    }

?>
<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'];
                    }
                    
                    switch ($bg) 
                    {
                        
                    case "Achtergrond 2":
                        echo    '<style type="text/css">' .
                                    '#bg { background-image: url(bg4.jpg); }' .
                                '</style>';
                        break;
                    case "Achtergrond 3":
                        echo    '<style type="text/css">' .
                                    '#bg { background-image: url(bg2.jpg); }' .
                                '</style>';
                        break;
                    case "Achtergrond 1":
                        echo    '<style type="text/css">' .
                                    '#bg { background-image: url(bg3.jpg); }' .
                                '</style>';
                        break;
                        
                    }
                ?> 
            </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>
met header() kan je de pagina refreshen.

<?php
header( 'refresh: 1');
?>
mitchel schreef op 17.06.2009 10:15
met header() kan je de pagina refreshen.

<?php
header( 'refresh: 1');
?>


Dit helpt niet want het blijft constant refreshen (per 1 sec.)...
Tolga schreef op 17.06.2009 13:54
[quote='mitchel schreef op 17.06.2009 10:15']met header() kan je de pagina refreshen.

<?php
header( 'refresh: 1');
?>


Dit helpt niet want het blijft constant refreshen (per 1 sec.)...[/quote]was vergeten er bij te zeggen dat je wel naar een pagina moet refreshen
<?php
header('refresh: 1; index.php'); // of welke je wil
?>
[/code][
mitchel schreef op 17.06.2009 14:13
[quote='Tolga schreef op 17.06.2009 13:54'][quote='mitchel schreef op 17.06.2009 10:15']met header() kan je de pagina refreshen.

<?php
header( 'refresh: 1');
?>


Dit helpt niet want het blijft constant refreshen (per 1 sec.)...[/quote]was vergeten er bij te zeggen dat je wel naar een pagina moet refreshen
<?php
header('refresh: 1; index.php'); // of welke je wil
?>
[/code]

T.T Hiermee krijg ik hetzelfde effect... :S
Je moet het eerste blok waar je de cookie zet tussen een if zetten:

<?php

if(isset($_POST['bg']))
{
switch ($_POST['bg'])
{
case 'Achtergrond 1':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
case 'Achtergrond 2':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
case 'Achtergrond 3':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
}

header('Location: index.php');
exit();
}

?>
Marien schreef op 17.06.2009 15:13
Je moet het eerste blok waar je de cookie zet tussen een if zetten:

<?php

if(isset($_POST['bg']))
{
switch ($_POST['bg'])
{
case 'Achtergrond 1':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
case 'Achtergrond 2':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
case 'Achtergrond 3':
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
}
break;
}

header('Location: index.php');
exit();
}

?>


Reuze bedankt! Het heeft gewerkt! :D
Het kan zelfs nog korter:

<?php

$waardes = array('Achtergrond 1','Achtergrond 2','Achtergrond 3');

if(isset($_POST['bg']) && in_array($_POST['bg'],$waardes) !== false)
{
setcookie("Achtergrond", $_POST['bg'], time()+3600);
header('Location: index.php');
exit();
}

?>

Op deze manier hoef je alleen maar een array aan te vullen voor meer waardes :)

Reageren