2012-08-03 3 views
1

Salut J'essaie d'obtenir la valeur de n'importe quel bouton radio et de le passer à un tableau ou un commutateur, tout ce qui fonctionne, pour définir la couleur de fond. Le code suivant fonctionne et met à jour la base de données uniquement si le bouton radio par défaut est défini, comment puis-je définir le 'background_color' comme je l'ai fait par défaut ci-dessous, comme par défaut = 1, bleu = 2, rouge = 3, orange = 4, et vert = 5.Comment configurer le bouton radio en PHP?

<?php 
if(isset($_GET['success']) === true && empty($_GET['success']) === true){ 
echo 'Background color changed.'; 
}else{ 



    if(isset($_POST['color']) && $_POST['color'] == 'default'){ 
    $update_data = array(
     'background_color' => 1 
     ); 


    update_user($session_user_id, $update_data); 
    header('Location: edit_background.php?success'); 
    exit(); 

}else if(empty($errors) === false){ 
    echo output_errors($errors); 
} 
?> 

<form action="" method="post"> 
<input type="radio" name="color" value="default" <?php if($user_data['background_color'] ==1){echo 'checked="checked"';}?>/> Default<br /> 
<input type="radio" name="color" value="blue" <?php if($user_data['background_color'] ==2){echo 'checked="checked"';}?>/> Blue<br /> 
<input type="radio" name="color" value="red" <?php if($user_data['background_color'] ==3){echo 'checked="checked"';}?>/> Red<br /> 
<input type="radio" name="color" value="orange" <?php if($user_data['background_color'] ==4){echo 'checked="checked"';}?>/> Orange<br /> 
<input type="radio" name="color" value="green" <?php if($user_data['background_color'] ==5){echo 'checked="checked"';}?>/> Green<br /> 
<input type="submit" value="Submit"> 
</form> 

Répondre

2

Le code que vous avez posté manque une accolade quelque part, mais en ignorant que je pense que votre problème est la traduction entre les ID pour les couleurs et les noms. Je l'ai fait une version retravaillée de votre code qui profite de tableaux pour gérer les données:

<?php 

// Define backgrounds as an array 
$backgrounds['default'] = 1; 
$backgrounds['blue'] = 2; 
$backgrounds['red'] = 3; 
$backgrounds['orange'] = 4; 
$backgrounds['green'] = 5; 

// If a form has been posted with a valid colour 
if(isset($_POST['color']) && array_key_exists($_POST['color'], $backgrounds)){ 

    $update_data = array(
     'background_color' => $backgrounds[$_POST['color']] 
    ); 

    update_user($session_user_id, $update_data); 
    echo 'Background color changed.'; 

} 

// Output the form 
echo '<form action="" method="post">'; 

// Loop through backgrounds and display radio buttons 
foreach ($backgrounds as $bgname => $bgid) { 
    echo '<input type="radio" name="color" value="'.$bgname.'"'; 
    if ($user_data['background_color'] == $bgid){ 
     echo 'checked="checked"'; 
    } 
    echo '/> '.$bgname.'<br />'; 
} 

echo '<input type="submit" value="Submit"> 
</form>'; 
?> 
+0

Merci, mais je ne le résoudre, plus facile que je pensais que c'était je vous aime méthode, mais je l'ai déjà manié la radio les boutons s'affichent et si l'un est déjà défini, mais que votre chemin est plus net. Je vous remercie! –

1

j'ai tout compris et voulu répondre si tous ceux qui cherchent d'autre à comprendre cela peut voir, c'est ce que je devais faire: Change:

if(isset($_POST['color']) && $_POST['color'] == 'default'){ 
$update_data = array(
    'background_color' => 1 
    ); 

Pour:

if(isset($_POST['submit'])){ 

    $selected_radio = $_POST['color']; 

    if($selected_radio == 'default'){ 
     $update_data['background_color'] = 1; 
    }else if($selected_radio == 'blue'){ 
     $update_data['background_color'] = 2; 
    }else if($selected_radio == 'red'){ 
     $update_data['background_color'] = 3; 
    }else if($selected_radio == 'orange'){ 
     $update_data['background_color'] = 4; 
    }else if($selected_radio == 'green'){ 
     $update_data['background_color'] = 5; 
    } 
Questions connexes