0

ケースごとに新しいステートメントを作成せずに、変数に基づいて「if」ステートメントを変更するにはどうすればよいですか? 私の選択ドロップダウン「タイムライン」には25以上のオプションが入力されるため、phpスクリプトでifステートメントを作成したい

変数を設定する HTML:

<p>Current Status: </p> <select name="timeline" id="timeline">
            <option value="completed" selected>Completed</option>
            <option value="active">Active</option>
</select>

PHP:

     $current_state = $_POST['timeline'];
     $current = strtotime("now");

while($row = mysql_fetch_array($results)){




        if($current_state == "completed"){
             $end = strtotime($row['End']);

             $my_if = "if($current > $end){";

        }

        if($current_state == "active"){

           $end = strtotime($row['End']);
           $start = strtotime($row['Start']);

           $my_if = "if($start < $current && $end > $current){";

        }
                //THIS IS WHERE THE IF STATEMENT WOULD BE USED
                echo $my_if;

                            echo '<tr>
                            <td>'. $row['ID']  .'</td>
                            <td>'. $row['Name']  .'</td>
                            <td>'. $row['LastName']  .'</td>

                        </tr>';
                }
}
4

2 に答える 2

2

ロジックを完全に作り直す必要があります

$completed = $_POST['timeline'] == 'completed';
while($row = mysql_fetch_array($results)) {
    $end = strtotime($row['End']);
    if (!$completed)
      $start = strtotime($row['Start']);

    if (
        ($completed  && $current > $end) ||
        (!$completed && $start < $current && $end > $current)
    ) {
      // do stuff
    }
}
于 2012-07-16T04:27:38.270 に答える
1

「meta-if」の条件をifそれ自体に含めます。

if ($current_state == "completed")
    {
    $end = strtotime($row['End']);
    }

if ($current_state == "active")
    {
    $end = strtotime($row['End']);
    $start = strtotime($row['Start']);
    }

if (($current_state == "completed" && $current > $end) || ($current_state == "active" && $start < $current && $end > $current))
    {
    echo '<tr>
    <td>'. $row['ID']  .'</td>
    <td>'. $row['Name']  .'</td>
    <td>'. $row['LastName']  .'</td>
    </tr>';
    }
于 2012-07-16T04:26:12.950 に答える