我有结果表(网球比赛)。目标是大胆赢得比赛。我已经制作了完美的循环,如果匹配有3组,但如果我有2套它不显示结果,它显示(粗体)只有赢家,因为我在表中的那些列(g5,g6)中为空。如何使用两列空列显示这些结果?
This is my code.
<?php
global $wpdb;
$result = $wpdb->get_results ("SELECT challenger,challenged, date_match, CONCAT(g1,':',g2,' ',g3,':',g4,' ',g5,':',g6) AS result1,
g1,g2,g3,g4,g5,g6
FROM barbara_results
WHERE date_match
BETWEEN '2015-11-21' AND '2015-12-06'
ORDER BY date_match ASC");
foreach ( $result as $print ) {
echo '<td>';
if (((int) $print->g1 > ((int) $print->g2)) && ((int) $print->g3 > ((int) $print->g4))|| ((int) $print->g5 > ((int) $print->g6))){
echo '<strong>'.$print->challenger.'</strong>';
}
else{
echo $print->challenger.'</td>';
}
echo '<td>';
if (((int) $print->g2 > ((int) $print->g1)) && ((int) $print->g4 > ((int) $print->g3))|| ((int) $print->g6 > ((int) $print->g5))){
echo '<strong>'.$print->challenged.'</strong>';
}
else{
echo $print->challenged.'</td>';
}
echo '<td>' . date('d.m.Y.', strtotime($print->date_match)).'</td>';
echo '<td>' . $print->result.'</td>';
echo '<td>' . $print->result1.'</td>';
echo '</tr>';
}
?>
答案 0 :(得分:0)
如果您将单个列g1, g2, ..., g6
添加到SELECT
语句中,如下例所示,则可以在foreach
循环中单独使用(并格式化)这些列结果
// in the query:
$result = $wpdb->get_results ("SELECT g1, g2, g3, g4, g5, g6 ...");
根据您之前的说明,g5
和g6
没有结果。这应该意味着任何时候g5
和g6
都是NOT NULL
,我们可以通过简单的if (g5 > g6) ... else ...
类型的比较找到胜利者。如果g5
和g6
为NULL
,则表明上一次g1 > g2
中的g3 > g4
和else
比较没有平局结果阻止,这使我们能够在那里找到胜利者。
以下示例显示了使用is_null
函数检查值是否为NULL
的一种方法。
// in the foreach loop:
foreach ($result as $output) {
// check if g5 and g6 are NOT NULL
// this allows us to avoid the g1, g2, g3, g4 else statement below
if (!is_null($output->g5) && !is_null($output->g6)) {
if ((int) $output->g5 > (int) $output->g6) {
echo '<strong>' . $output->challenger . '</strong>';
} else {
echo '<strong>' . $output->challenged . '</strong>';
}
} else {
if (((int) $output->g1 > (int) $output->g2) &&
((int) $output->g3 > (int) $output->g4)) {
echo '<strong>' . $output->challenger . '</strong>';
} else {
echo '<strong>' . $output->challenged . '</strong>';
}
}
}
注意: (int)
部分可确保您检查数据库中的整数值 {{1} }列。
答案 1 :(得分:0)
<?php
global $wpdb;
$result = $wpdb->get_results ("SELECT challenger,challenged, date_match, CONCAT(g1,':',g2,' ',g3,':',g4,' ',g5,':',g6) AS result1,
g1,g2,g3,g4,g5,g6
FROM barbara_results
WHERE date_match
BETWEEN '2015-11-21' AND '2015-12-06'
ORDER BY date_match ASC");
foreach ( $result as $print ) {
$sum1 = (int) $print->g1 + (int) $print->g3 + ( is_numeric($print->g5) ? (int) $print->g5 : 0 );
$sum2 = (int) $print->g2 + (int) $print->g4 + ( is_numeric($print->g6) ? (int) $print->g6 : 0 );
$challenger = ($sum1 > $sum2) ? '<strong>'.$print->challenger.'</strong>' : $print->challenger;
echo '<tr>';
echo '<td>' . $challenger.'</td>';
echo '<td>' . $print->challenged.'</td>';
echo '<td>' . date('d.m.Y.', strtotime($print->date_match)).'</td>';
echo '<td>' . $print->result.'</td>';
echo '<td>' . $print->result1.'</td>';
echo '</tr>';
}
?>