1

こんにちは私は、設定されているラジオボタンの値を取得し、それを配列またはスイッチに渡して、背景色を設定しようとしています。次のコードは、デフォルトのラジオボタンが設定されている場合にのみ機能し、データベースを更新します。このデフォルト= 1、青= 2、赤= 3、オレンジ= 4のように、以下のデフォルトで行ったように「background_color」を設定するにはどうすればよいですか。緑=5。

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

2 に答える 2

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>';
?>
于 2012-08-03T02:49:24.300 に答える
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;
    }
于 2012-08-03T02:47:16.090 に答える