2017-10-03 12 views
1

J'ai un menu déroulant avec 4 combinaisons de couleurs différentes. Ils sont supposés changer la couleur d'arrière-plan, la police et la taille de la police. Je l'ai mis en place comment je pense que c'est supposé aller mais quand je frappe soumettre rien ne se passe actuellement. Après avoir frappé soumettre le choix est supposé enregistrer dans un cookie.Changer la couleur selon le choix sur la liste déroulante et stocker dans cookie

<select name="userColorChoice"> 
    <option value="default"<?php if ($color =="default"){ echo "selected='selected'";}?>>Default</option> 
    <option value="highContrast"<?php if ($color =="highContrast"){ echo "selected='selected'";}?>>High Contrast</option> 
    <option value="comboTwo"<?php if ($color =="comboTwo"){ echo "selected='selected'";}?>>Color Combo 2</option> 
    <option value="comboThree"<?php if ($color =="comboThree"){ echo "selected='selected'";}?>>Color Combo 3</option> 
    <input type="submit" name="submitColor"> 
</select> 


//COOKIE PART 
$color = "default"; 
if (isset($_GET['submitColor'])){ 
    setcookie("langCookie", "unimportant",time()-2000); 
    header("Location:trivia.php"); 
} 


if (isset($_POST['userColorChoice'])){ 
    $color=$_POST['userColorChoice']; 
    setcookie("langCookie",$color,time()+2000000); 
} else if(isset($_COOKIE['langCookie'])){ 
    $color = $_COOKIE['langCookie']; 
} else{ 
    $color = "default"; 
} 


//switch statement to set values based on the user selection 
switch ($color){ 
    case"default": 
     echo '<body style="background-color:white">'; 
     echo '<body style="color:black">'; 
     echo '<body style="font-size:medium">'; 
     break; 
    case "highContrast": 
     echo '<body style="background-color: red">'; 
     echo '<body style="color:black">'; 
     echo '<body style="font-size:x-large">'; 
     break; 
    case"comboTwo": 
     echo '<body style="background-color:black">'; 
     echo '<body style="color:white">'; 
     echo '<body style="font-size:large">'; 
     break; 
    case"comboThree": 
     echo '<body style="background-color:red">'; 
     echo '<body style="color:blue">'; 
     echo '<body style="font-size:medium">'; 
     break; 
    default: 
     echo '<body style="background-color:white">'; 
     echo '<body style="color:black">'; 
     echo '<body style="font-size:medium">'; 
     break; 
} 
+0

Soumettre une demande via le formulaire. Définir la méthode comme un message. et non requis par défaut 2 fois. et si vous le redirigez alors il n'a pas été en mesure de définir cette couleur de corps de page –

+0

Juste une suggestion, utilisez CSS à la place et changez la StyleSheet basée sur la liste déroulante. Cela permettra beaucoup plus à l'avenir et sera encore plus facile à maintenir. – webnoob

Répondre

0

Un élément <select> peut seulement contenir <option> éléments. Mettez le <input> dehors, et assurez-vous qu'ils sont à la fois dans un <form>:

<form method=post> 
    <select name="userColorChoice"> 
     <option value="default"<?php if ($color =="default"){ echo "selected='selected'";}?>>Default</option> 
     <option value="highContrast"<?php if ($color =="highContrast"){ echo "selected='selected'";}?>>High Contrast</option> 
     <option value="comboTwo"<?php if ($color =="comboTwo"){ echo "selected='selected'";}?>>Color Combo 2</option> 
     <option value="comboThree"<?php if ($color =="comboThree"){ echo "selected='selected'";}?>>Color Combo 3</option> 
    </select> 
    <input type="submit" name="submitColor"> 
</form> 

Le code PHP doit être dans une balise <?php.

0

D'abord je présume que le code de sélection est réellement après le reste de celui-ci? Si vous l'avez avant votre étiquette de corps et avant de définir quelle $ couleur est ce serait un problème.

Ensuite, je vois $ _GET ['submitColor'] mais $ _POST ['userColorChoice']. Utilisez-vous une méthode get ou post sur votre formulaire?

Vous utilisez également une redirection d'en-tête si le paramètre $ _GET ['submitColor'] est défini, de sorte que tout code après cela n'est pas exécuté.