如果使用数据库查询,则加倍


Double if with database query

我有这个代码

while ($row = mysql_fetch_assoc($wynik)) {
    echo '<tr class="ad">  ';
    foreach ($row as $key => $value) {
        if ($value != null){
            if ($value<=1){
                $wymiar = $key."x".$first;
                $wynik3 = mysql_query("SELECT * FROM `".$nazwa2."` where `tak` = '".$wymiar."' ");
                while ($row = mysql_fetch_array($wynik3)) {
                    if ($row["tak"] == $wymiar){
                        echo $row["id"];
                        echo '<td width=25px; style="background-color: red; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
                    }
                    unset($wymiar);
                }  
                echo '<td width=25px; style="background-color: green; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
            } else {
                echo '<td width=25px; style="background-color: yellow; border-color: blue;" border="1">'.$value."</td>";
                $first = $value;
            }
        } else {
            echo '<td width=25px; style="background-color: magenta; border-color: blue;" border="1">'.$value."</td>";
        }
    } echo "</tr>";
}

如何正确使用"if…else"语句,现在有些错误。它添加了一个红色单元格,但也留下了一个带有绿色单元格的记录,并移动整行

试试这个。通过使用LIMIT 1,它只查询$wynik3查询中的1行。然后它测试该查询是否成功;如果是,则显示红色单元格,否则显示绿色单元格。

while ($row = mysql_fetch_assoc($wynik)) {
    echo '<tr class="ad">  ';
    foreach ($row as $key => $value) {
        if ($value != null){
            if ($value<=1){
                $wymiar = $key."x".$first;
                $wynik3 = mysql_query("SELECT * FROM `".$nazwa2."` where `tak` = '".$wymiar."' LIMIT 1");
                if ($row = mysql_fetch_array($wynik3)) {
                        echo $row["id"];
                        echo '<td width=25px; style="background-color: red; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
                } else {
                    echo '<td width=25px; style="background-color: green; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
                }
            } else {
                echo '<td width=25px; style="background-color: yellow; border-color: blue;" border="1">'.$value."</td>";
                $first = $value;
            }
        } else {
            echo '<td width=25px; style="background-color: magenta; border-color: blue;" border="1">'.$value."</td>";
        }
    } echo "</tr>";
}

顺便说一句,它在<td>之外回显$row["id"],这不是有效的HTML。我假设这只是为了调试,而不是生产表的一部分。

试试这个

while ($row = mysql_fetch_assoc($wynik)) {
    echo '<tr class="ad">  ';
    foreach ($row as $key => $value) {
        if (!empty($value)){
            if ($value<=1){
                $wymiar = $key."x".$first;
                $wynik3 = mysql_query("SELECT * FROM `".$nazwa2."` where `tak` = '".$wymiar."' ");
if(mysql_num_rows($wynik3)== 0){
echo '<td width=25px; style="background-color: green; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
} else {
                while ($row = mysql_fetch_array($wynik3)) {
                    if ($row["tak"] == $wymiar){
                        echo $row["id"];
                        echo '<td width=25px; style="background-color: red; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
                    }
                    unset($wymiar);
                }  
                }
            } else {
                echo '<td width=25px; style="background-color: yellow; border-color: blue;" border="1">'.$value."</td>";
                $first = $value;
            }
        } else {
            echo '<td width=25px; style="background-color: magenta; border-color: blue;" border="1">'.$value."</td>";
        }
    } echo "</tr>";
}

试试这个,

while ($row = mysql_fetch_assoc($wynik)) 
{
    foreach ($row as $key => $value) 
    {
        $arrTableTD = array();        
        if ($value != null)
        {
            if ($value<=1)
            {
                $wymiar = $key."x".$first;
                $wynik3 = mysql_query("SELECT * FROM `".$nazwa2."` where `tak` = '".$wymiar."' ");
                while ($row = mysql_fetch_array($wynik3)) 
                {
                    if ($row["tak"] == $wymiar)
                    {
                        $arrTableTD[] =  $row["id"];
                        $arrTableTD[] =  '<td width=25px; style="background-color: red; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
                    }
                    unset($wymiar);
                }  
                $arrTableTD[] =  '<td width=25px; style="background-color: green; border-color: blue;" border="1"><p style="display:block;">'.$key.'x'.$first.'</p></td>';
            } else {
                $arrTableTD[] =  '<td width=25px; style="background-color: yellow; border-color: blue;" border="1">'.$value."</td>";
                $first = $value;
            }
        } else {
            $arrTableTD[]=  '<td width=25px; style="background-color: magenta; border-color: blue;" border="1">'.$value."</td>";
        }
    } 
    echo $tablerow = '<tr class="ad">'.implode("",$arrTableTD).'</tr>';
}

您可能会遇到问题,因为您在代码中使用了两次变量$row。

此处

foreach($row作为$key=>$value)

这里是

而($row=mysql_fetch_array($wynik3))

第二次使用它会产生一个真正的重命名问题。我不知道它是否能解决你的问题,但这肯定是第一次修正