比较PHP中的MySQL结果

时间:2014-07-02 03:07:03

标签: php

我从数据库中检索了一些结果,并希望单独显示结果。

如果pb_title与temp_title相同,则将其置于红色div中 否则pb_title与temp_title不同,然后将其置于灰色颜色div

这是我尝试过的代码:

$select_brand = "SELECT * FROM tblProduct_Brand WHERE pb_display='display'";
$result = mysqli_query ($mydatabase, $select_brand);

if($result)
{
while($row = mysqli_fetch_array($result))
{
$pb_feature_image = substr(($row['pb_feature_image']),3);
$pb_logo = substr(($row['pb_logo']),3);         
$temp_result;
if($temp_result == $row["pb_title"])
{
    //if product brand title is same, put it in same area
    echo '<div style="padding:20px; background-color:red;">';
        echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
        echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
        echo '</div>';
        echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
        echo '<div style="height:40px;width:80px;float:right">';
        echo '<img src="'.$pb_logo.'" width="100%"/>';
        echo '</div>';
        echo '<div style="clear:both"></div>';
        echo '<a class="product-content">'.$row["pb_content"].'</a>';
        echo '</div>';
    echo '</div>';
    $temp_result = $row["pb_title"];
}
else
{
    //if not same, put in another area
    echo '<div style="padding:20px; background-color:grey;">';
        echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
        echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
        echo '</div>';
        echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
        echo '<div style="height:40px;width:80px;float:right">';
        echo '<img src="'.$pb_logo.'" width="100%"/>';
        echo '</div>';
        echo '<div style="clear:both"></div>';
        echo '<a class="product-content">'.$row["pb_content"].'</a>';
        echo '</div>';
    echo '</div>';
}
}

关于代码的任何错误请纠正我。 感谢。

3 个答案:

答案 0 :(得分:0)

$temp_result;
if($temp_result == $row["pb_title"])

在检查条件之前,你应该给$ temp_result分配了一些值,但是你还没有,而且你还在比较它。

编辑:

我的理解是,最初你没有设置$ temp_result的任何值,它总是在你的Else Block中进行,而不是分配$temp_result = $row["pb_title"];,所以它应该存储以前的值,你只在If Block中做过,你需要在else块中放置相同的代码..

简单在代码中编辑此部分

else
{
    //if not same, put in another area
    echo '<div style="padding:20px; background-color:grey;">';
        echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
        echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
        echo '</div>';
        echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
        echo '<div style="height:40px;width:80px;float:right">';
        echo '<img src="'.$pb_logo.'" width="100%"/>';
        echo '</div>';
        echo '<div style="clear:both"></div>';
        echo '<a class="product-content">'.$row["pb_content"].'</a>';
        echo '</div>';
    echo '</div>';

    $temp_result = $row["pb_title"]; // added this to save previous result
}

答案 1 :(得分:0)

以下代码假定您使用从sql查询中获取的数据执行了类似的操作:

$data = array();
while($row = mysqli_fetch_assoc($result)) {
    $data[] = $row;
}

返回如下数组:

Array (
    [0] => Array(
        'pb_title' => '',
        'pb_content' => '',
        //...etc
    ),
    //.....etc
)

现在假设我正确地理解了你的问题,你想要做这样的事情:

$i = array();
$key = 'A';
foreach ($data as $item) {
    if ($item['pb_title'] == $key) {
        $i['red'][] = $item;
    } else {
        $i['grey'][] = $item;
    }
}

这会为您提供一系列red匹配)和grey不匹配)。

您可以循环并正确生成div。 这样的事情( 伪代码

echo '<div style="padding:20px; background-color:red;">';
foreach($i['red'] as $row) {
    echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
        echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
        echo '</div>';
        echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
        echo '<div style="height:40px;width:80px;float:right">';
        echo '<img src="'.$logo.'" width="100%"/>';
        echo '</div>';
        echo '<div style="clear:both"></div>';
        echo '<a class="product-content">'.$row["pb_content"].'</a>';
        echo '</div>';
}
echo '</div>';

Example

答案 2 :(得分:0)

确保编程应该有效,因为您需要有以下想法:

1)在这里你不需要使用if($result),因为当sql结果为真时,只有它允许在条件内

2)编程时尽量避免使用更多if else条件来提高效率。

<?php
$select_brand = "SELECT * FROM tblProduct_Brand WHERE pb_display='display'";
$result = mysqli_query ($mydatabase, $select_brand);


while($row = mysqli_fetch_array($result))
{
$pb_feature_image = substr(($row['pb_feature_image']),3);
$pb_logo = substr(($row['pb_logo']),3);         

$temp_result;

if($temp_result == $row["pb_title"]) { $style = 'style="padding:20px; background-color:red;"'; }
else { $style = ' style="padding:20px; background-color:grey;"'; }

    echo '<div '.$style.' >';
        echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
        echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
        echo '</div>';
        echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
        echo '<div style="height:40px;width:80px;float:right">';
        echo '<img src="'.$pb_logo.'" width="100%"/>';
        echo '</div>';
        echo '<div style="clear:both"></div>';
        echo '<a class="product-content">'.$row["pb_content"].'</a>';
        echo '</div>';
    echo '</div>';
    $temp_result = $row["pb_title"];
}


?>