当条件满足时,断开if语句和循环

时间:2013-02-14 17:37:32

标签: php mysql pdo

我的数据库中有一个名为ts_rounds的表,其结构如下

round | current
===============
P     | 0
1     | 1
2     | 0
3     | 0
4     | 0

我试图在两种不同的条件下回应某种<div>安排:

  1. 一个当前值为1,其余为0

  2. 所有当前为0,超过一个当前值为1

  3. 一旦满足条件,我就要打破if语句。

    这是我的代码到目前为止,第一个条件已经满足,但我遇到第二个问题。

    <div id="timeline">
    
    <?php
        $sql = "SELECT * from ts_rounds";
        $result = $pdo->query($sql);
        foreach ($result as $row) 
        {
            if ($row["round"] == "P" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        '; 
                }
            else if ($row["round"] == "1" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        ';
                } 
            else if ($row["round"] == "2" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        '; 
                }
            else if ($row["round"] == "3" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        '; 
                }
            else if ($row["round"] == "4" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        </div>'; 
                }
            else if ($row["round"] == "A" && $row["current"] == "1") {
            echo 
                '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle"><h3>A</h3></div>
        <hr id="line">
        '; 
                }
            else {
                $rounds = '
                <div id="r0" class="circle_small">
        <h3>P</h3>
        </div>
        <div id="r1" class="circle_small"><h3>1</h3></div>
        <div id="r2" class="circle_small"><h3>2</h3></div>
        <div id="r3" class="circle_small"><h3>3</h3></div>
        <div id="r4" class="circle_small"><h3>4</h3></div>
        <div id="r5" class="circle_small"><h3>A</h3></div>
        <hr id="line">
        ';
            }
        }
    
        ?>
    </div>
    

2 个答案:

答案 0 :(得分:1)

高度重复的代码,特别是因为你的html基本上只是在版本之间轻微改变。为什么不更喜欢

$sql = "SELECT current, round FROM yourtable"
$results = array()
while($row = fetch($result)) {
   $results[$row['current']][] = $row['round'];
}

那会给你一个数组

0: p, 2, 3, 4
1: 1

从那里输出逻辑变成“我现在输出的0/1值”,以根据需要调整html。无需为每个变体重复html块5次。

答案 1 :(得分:1)

我想你正在寻找的是这些方面的东西:

$circleSize = array ('circle_small', 'circle');
$rounds = '';
foreach ($result as $row) {

    switch ($row['round']) {
        case 'P':
            $rounds .=   '<div id="r0" class="'.$circleSize[$row['current']].'"><h3>P</h3></div>';break;
        case '1':
            $rounds .=   '<div id="r1" class="'.$circleSize[$row['current']].'"><h3>1</h3></div>';break;
        case '2':
            $rounds .=   '<div id="r2" class="'.$circleSize[$row['current']].'"><h3>2</h3></div>';break;
        case '3':
            $rounds .=   '<div id="r3" class="'.$circleSize[$row['current']].'"><h3>3</h3></div>';break;
        case '4':
            $rounds .=   '<div id="r4" class="'.$circleSize[$row['current']].'"><h3>4</h3></div>';break;
        case 'A':
            $rounds .=   '<div id="r5" class="'.$circleSize[$row['current']].'"><h3>A</h3></div>';break;
    }
}
echo $rounds;