仅使用用户ioptions显示非NULL数据

时间:2018-03-21 11:47:55

标签: php mysql

我有2个表user_pointsusers。在用户中,我存储用户的详细信息

id | uid     | fname   | lname  | pic
1  | 5TQ4G1  | Zen     | D      | img1.png
2  | ZIF852  | Mike    | Lois   | img2.png
3  | FW20H6  | Vicky   | S      | vick.jpg
4  | PCD8Q5  | Rocky   | M      | rocks.jpg

在user_points表中,我存储了用户选择的每个选项的值

id | user_id   | opt1  | opt2  | opt3  | opt4 | opt5 | opt6 
1  | 5TQ4G1    | 20    | 30    | 60    |      |      |     
2  | ZIF852    | 20    |       | 50    | 10   |      |
3  | PCD8Q5    |       |  10   |       |      |      | 50

我想像这样显示结果

Zen - Image - opt1.png, opt2.png, opt3.png 
Mike - Image - opt1.png, opt3.png, opt4.png
Rocky - Image - Opt2.png, opt6.png 

我将有6个选项,每个选项都存储了图像opt1.png,opt2.png ...

我的代码是

<?php

$sql5 = "SELECT ud.id, ud.opt1, ud.opt2, ud.opt3, ud.opt4, ud.opt5, ud.opt6, u.uid, u.fname, u.pic FROM user_details ud LEFT JOIN users u ON ud.user_id=u.uid GROUP BY ud.user_id";
$result1 = mysqli_query($con, $sql5);

while($row1 = mysqli_fetch_assoc($result1)) {

 echo "<div class='col-xs-9'>";
    if($row1["pic"]=='') { 
    $img =   "<img src='pics/profile.png' height='30px' alt='".$row1["fname"]."' title='".$row1["fname"]."' style='padding-right:5px;' />";
    }
    elseif($row1["pic"]!='') { 
    $img = "<img src='pics/".$row1["uid"]."/".$row1["pic"]."' height='30px' alt='".$row1["fname"]."' title='".$row1["fname"]."' style='padding-right:5px;'' />";
    }
                    if($row1['opt1']!=NULL)
            { 

    $options  .= "<img src='img/opt1.png' height='15px' /> ,  ";

    }
    if($row1['opt2']!=NULL)
    {

    $options  .= "<img src='img/opt2.png'  height='15px' /> ,  ";

    }
     if($row1['opt3']!=NULL)
    {
    $options  .= "<img src='img/opt3.png' height='15px' /> ,  ";

    }
    if($row1['opt4']!=NULL)
    {
    $options  .= "<img src='img/opt4.png' height='15px' /> , ";

    }
     if($row1['opt5']!=NULL)
    {
    $options  .= "<img src='img/opt5.png' height='15px' /> , ";

    }
    if($row1['opt6']!=NULL)
    {
    $options  .= "<img src='img/opt6.png' height='15px' />   ";

    }

    echo  $row1['fname']." - ".$img." - ".$options;
}
echo "</div>";

但是我得到了这样的结果

Zen - Image - opt1.png, opt2.png, opt3.png Mike - Image - opt1.png, opt2.png, opt3.png, opt1.png, opt3.png, opt4.png Rocky - Image - opt1.png, opt2.png, opt3.png, opt1.png, opt3.png, opt4.png, opt2.png, opt6.png

对于Zen,它是正确的。对于Mike,它会显示他的数据以及Zen's数据,对于Rocky,它会显示他的数据以及zen, Rocky数据。哪个循环我应该纠正我没有得到。

3 个答案:

答案 0 :(得分:1)

因为您使用

将值连接到$options
$options .= .....

暂停之后,初始化$options变量以清除最后一个循环内容。

while($row1 = mysqli_fetch_assoc($result1)) {
    $options = '';

答案 1 :(得分:1)

在添加字符串时,您需要最后清空$options

<?php

$sql5 = "SELECT ud.id, ud.opt1, ud.opt2, ud.opt3, ud.opt4, ud.opt5, ud.opt6, u.uid, u.fname, u.pic FROM user_details ud LEFT JOIN users u ON ud.user_id=u.uid GROUP BY ud.user_id";
$result1 = mysqli_query($con, $sql5);

while($row1 = mysqli_fetch_assoc($result1)) {

 echo "<div class='col-xs-9'>";
    if($row1["pic"]=='') { 
    $img =   "<img src='pics/profile.png' height='30px' alt='".$row1["fname"]."' title='".$row1["fname"]."' style='padding-right:5px;' />";
    }
    elseif($row1["pic"]!='') { 
    $img = "<img src='pics/".$row1["uid"]."/".$row1["pic"]."' height='30px' alt='".$row1["fname"]."' title='".$row1["fname"]."' style='padding-right:5px;'' />";
    }
                    if($row1['opt1']!=NULL)
            { 

    $options  .= "<img src='img/opt1.png' height='15px' /> ,  ";

    }
    if($row1['opt2']!=NULL)
    {

    $options  .= "<img src='img/opt2.png'  height='15px' /> ,  ";

    }
     if($row1['opt3']!=NULL)
    {
    $options  .= "<img src='img/opt3.png' height='15px' /> ,  ";

    }
    if($row1['opt4']!=NULL)
    {
    $options  .= "<img src='img/opt4.png' height='15px' /> , ";

    }
     if($row1['opt5']!=NULL)
    {
    $options  .= "<img src='img/opt5.png' height='15px' /> , ";

    }
    if($row1['opt6']!=NULL)
    {
    $options  .= "<img src='img/opt6.png' height='15px' />   ";

    }

    echo  $row1['fname']." - ".$img." - ".$options;
    $options = "";
}
echo "</div>";

答案 2 :(得分:1)

不是答案。评论太长了:

规范化的user_points表可能如下所示:

user_id opt val
      1   1  20
      1   2  30
      1   3  60
      2   1  20
      2   3  50
      2   4  10
      3   2  10
      3   6  50