while或foreach循环使用ifs

时间:2016-11-17 02:30:16

标签: php mysql

我希望得到你的帮助,因为我被困在这里:

SQL:

$testEvents = $db->prepare("SELECT * FROM events WHERE str_to_date(concat(`eventDate`, ' ', `time`), '%d-%m-%Y %H:%i')");
$testEvents ->execute();

PHP:

<?php
while ( $test = $testEvents->fetch(PDO::FETCH_ASSOC) ) {
    if( ! is_numeric($test['eventName'] && is_numeric($test['teamA']) && is_numeric($test['teamB']))) {
        echo $test['eventName'];
        echo "<br>";
    }
}
?>

我的目标是尝试做:

Database image

示例:如果eventName 数字teamA&amp; teamB 不是空,显示eventName数据。

如果teamA&amp; teamB 数字eventName IS 一个数字,显示teamA和{{1 }}

图片说明: Explanation

2 个答案:

答案 0 :(得分:0)

除了你奇怪的数据库设计......回答你的问题你可以试试这个......

我编写了一些测试数据来模拟你的数据库

$data = [
    [
        'eventName'=>'1',
        'teamA'=>'Magallanes',
        'teamB'=>'Caracas',
        'eventDate'=>'17-11-2016',
        'eventTime'=>'11:11'
    ],
    [
        'eventName'=>'Manana',
        'teamA'=>'123',
        'teamB'=>'123',
        'eventDate'=>'17-11-2016',
        'eventTime'=>'12:12'
    ]
];

然后测试了代码以执行你的循环......你走在正确的轨道上,但显然你只是放弃了......

foreach($data as $test) {
    if( ! is_numeric($test['eventName']) && is_numeric($test['teamA']) && is_numeric($test['teamB'])) {
        echo $test['eventName'];
        echo " ";
        echo $test['eventDate'];
        echo " ";
        echo $test['eventTime'];
        echo "<br>";
    }
    else if (is_numeric($test['eventName']) && ! is_numeric($test['teamA']) && ! is_numeric($test['teamB'])) {
        echo $test['teamA'];
        echo " x ";
        echo $test['teamB'];
        echo "  ";
        echo $test['eventDate'];
        echo " ";
        echo $test['eventTime'];
        echo "<br>";
    }
}

结果

Magallanes x Caracas 17-11-2016 11:11
Manana 17-11-2016 12:12

根据需要交换和更改内容。

答案 1 :(得分:0)

<?php
    while ( $test = $testEvents->fetch(PDO::FETCH_ASSOC) ) 
    {    
       if( ! is_numeric($test['eventName']) && is_numeric($test['teamA']) && is_numeric($test['teamB'])) 
       {
          echo $test['eventName']." ".$test['eventDate']." ".$test['eventTime']."<br>";
       }
       else if (is_numeric($test['eventName']) && ! is_numeric($test['teamA']) && ! is_numeric($test['teamB'])) 
       {
          echo $test['teamA']." x ".$test['teamB']."  ".$test['eventDate']." ".$test['eventTime']."<br>";
       }
    }
?>