2012-08-03 32 views
1

嗨我想獲得任何單選按鈕設置的值,並將其傳遞給數組或開關,無論將工作,設置背景顏色。下面的代碼只有在設置了默認單選按鈕的情況下工作並更新數據庫,我如何設置'background_color',就像我在默認情況下所做的那樣,如default = 1,blue = 2,red = 3,orange = 4,和綠色= 5。如何在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> 

回答

2

您發佈的代碼在某處丟失了大括號,但忽略了我認爲您的問題是在顏色和名稱的ID之間進行了翻譯。我做了採用陣列的優勢,你的代碼的重新設計版本管理數據:

<?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

謝謝你,但我沒解決呢,比我還以爲是我喜歡你的方法,但我已經處理的無線電更容易按鈕顯示,如果已經設置,但你的方式是整潔。謝謝! – 2012-08-03 02:54:22

1

我想通了,並想回答這樣誰都希望算出這個可以看到,這是我必須做的: 變化:

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

要:

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; 
    } 
相關問題