有一个奇怪/偶数脚本的麻烦

时间:2012-02-13 09:39:35

标签: php mysql

我正在尝试创建一个脚本,根据天气输出用户名,它们被赋予奇数或偶数值。我想我已经设法让奇怪的人工作,但偶数人不会输出。这是它的样子。 'commentid'是确定是将它们分配给奇数还是偶数的值。

<?php

$db = mysql_connect('localhost','username','pass') or die("Database error");
mysql_select_db('dbname', $db);


$query2 = "SELECT * FROM comments";
$result2 = mysql_query($query2);

while ($row2 = mysql_fetch_assoc($result2))

    if ( $row2['commentid'] % 2  )
    { 
        echo $row2['name'];
        echo "<br />";
    }
    elseif (!$row2['commentid'] % 2)
    {
        echo $row2['name'];
    }
    else
    { 
        echo "";
    }
?>

我认为它与$row2['name'](!$row2['commentid'] % 2)有关,或者我需要为字符串或其他东西分配行,但我无法弄清楚我做错了什么。< / p>

编辑我真的应该更清楚地说明我正在尝试用这个脚本做什么,因为虽然你的答案有意义,但他们不解决我的问题。在与此脚本相同的页面上,我运行了另一个脚本。此脚本从同一数据库中的另一个表调用一个值。它运行在一个定时的cron事件上,每天重置,因此每天的值都不同。它看起来像这样,并且正在按预期工作。

<?
$db = mysql_connect('localhost','username','pass') or die("Database error");
mysql_select_db('dbnamesameasother', $db);


$query = "SELECT pool FROM winners";
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result)) 

if ( $row['pool'] % 2 )
{ 
echo "<h4>Result 1</h4>";
echo "<br />";
}
else
{ 
echo "<h4>Result 2</h4>";
echo "<br />";
}
?>

我想要做的只是根据上面脚本所指的数字调用与奇数或偶数值相关联的名称。因此,如果此脚本选择结果1,我只想显示属于结果1的用户名。

4 个答案:

答案 0 :(得分:5)

这样做就足够了:

if ($row2['commentid'] % 2)
{ 
    // odd
}
else
{
    // even
}

如果你想知道你的逻辑是什么问题,你应该学习operator precedence in PHP。根据该图表,!的优先级高于%。因此,表达式!$row2['commentid'] % 2的评估如下:

  • $row2['commentid']为0时
    • !0 = true
    • true%2 = 1
  • $row2['commentid']为1时
    • !1 = false
    • false%2 = 0
  • $row2['commentid']为2时
    • !2 = false
    • false%2 = 0

答案 1 :(得分:0)

希望这有帮助

if ( $row2['commentid'] % 2 ==0 )
{ 
echo $row2['name'];
echo "<br />";
}
else
{
echo $row2['name'];
}

答案 2 :(得分:0)

if ( $row2['commentid'] % 2  )
{ 
echo $row2['name'];
echo "<br />";
}
elseif (!$row2['commentid'] % 2)
{
echo $row2['name'];
}
else
{ 
echo "";
}

替换此代码
if ( $row2['commentid'] % 2  )
{ 
echo $row2['name'];
echo "<br />";
}
else
{
echo $row2['name'];
}

因为它只有两个可能性,它可以被2整除或者不能被2整除

答案 3 :(得分:0)

有一个问题。如果删除评论,您将获得2个带/不带&lt; br&gt;的adiacent行。你应该使用一个迭代器变量,如下所示:

$i=1;
while ($row2 = mysql_fetch_assoc($result2)){

    echo $row2['name'];
    if($i % 2 == 0){
        echo "<br />";
    }
    $i++;
}