2017-01-14 36 views
0

我在php while循环中有以下代码,在这里你可以看到一个html select标签。如何在php while循环中选择html选项值?

我想selected它是选项的价值,如果$status = 1$status == 2。这意味着ActiveBlocked

在这个循环中它总是选择Blocked选项,这是$status == 2

但只有1在我的mysql数据库受阻的数据。我在这里做错了什么?

PHP While循环

$data = array(); 
$x = 1; 
while($row=mysqli_fetch_array($query)) { // preparing an array 
    $nestedData=array(); 

    $nestedData[] = $x; 
    $nestedData[] = $row["user_id"]; 
    $nestedData[] = $row["address"]; 
    $nestedData[] = $row["package_name"]; 

    $status  = $row['status']; 
    if($status == 1) { 
     $statusMsg = "selected = 'selected'"; 
    } elseif($status == 2){ 
     $statusMsg = "selected = 'selected'"; 
    } 

    $nestedData[] = " 
    <select class='form-control' name='status' id='changeStatus'> 
     <option value=''>--Select--</option> 
     <option value='1' $statusMsg>Active</option> 
     <option value='2' $statusMsg>Blocked</option> 
    </select>"; 

    $client_id = (int) $row['client_id']; 
    $nestedData[] = "<a class='btn btn-success btn-sm' href='{$site_url}toplevel/clients/update/$client_id'>Edit</a>&nbsp;<a href='#' data-toggle='modal' data-target='#myModal' class='btn btn-danger btn-sm' data-id='$client_id'>Delete</a>"; 

    $data[] = $nestedData; 

    $x++; 
} 

回答

1

$statusMsg总是会为selected = 'selected'输出上的两个标签,无论是否$row[status]为1或2

您需要再添变数两者区别标记并在循环开始时清除这两个变量。

$status  = $row['status']; 
$statusMsg1 = ""; 
$statusMsg2 = ""; 

if($status == 1) { 
    $statusMsg1 = "selected = 'selected'"; 
} elseif($status == 2){ 
    $statusMsg2 = "selected = 'selected'"; 
} 

$nestedData[] = " 
<select class='form-control' name='status'> 
    <option value=''>--Select--</option> 
    <option value='1' $statusMsg1>Active</option> 
    <option value='2' $statusMsg2>Blocked</option> 
</select>"; 
+0

OH,是的,它现在正在工作。谢谢@Moe。 –

+0

不客气:) – Moe