PHP虽然标题值但标题也显示多个时间

时间:2018-01-25 07:12:17

标签: php mysqli

我有一个位置PHP数据库,我正在使用mysqli连接获取数据

$conn = mysqli_connect("localhost","root","","test");

$sql = $conn->query('SELECT * FROM location');

我正在使用while打印我的值,如

if($sql->num_rows > 0){
    while($result = $sql->fetch_assoc()) {
        if($result['locationvalue'] > 1 && $result['locationvalue'] < 2){
            echo '<optgroup label="Andhra Pradesh">';
            echo '<option value="'.$result["locationvalue"].'"  >'.$result["locationname"].'</option>';
            echo '</optgroup>';
        }elseif($result['locationvalue'] > 1 && $result['locationvalue'] < 3){
            echo '<optgroup label="Arunachal Pradesh">';
            echo '<option value="'.$result["locationvalue"].'"  >'.$result["locationname"].'</option>';
            echo '</optgroup>';
        }
    }
}

此代码帮助我获取数据但有一个问题我还想在此代码中使用标题。当我运行此代码时,它看起来像

Andhra Pradesh
Anantapur

Andhra Pradesh
Guntakal

Andhra Pradesh
Guntur

Arunachal Pradesh
Bayana

Arunachal Pradesh
Bharatpur

但我想要那样

<optgroup label="Andhra Pradesh">
    <option value="Anantapur"  >Anantapur</option>
    <option value="Guntakal"  >Guntakal</option>
    <option value="Guntur"  >Guntur</option>
</optgroup>
<optgroup label="Arunachal Pradesh">
    <option value="Bayana"  >Bayana</option>
    <option value="Bharatpur"  >Bharatpur</option>
    <option value="Guntur"  >Guntur</option>
</optgroup>

请帮助我。

3 个答案:

答案 0 :(得分:1)

更新您的代码,如下所示

if($sql->num_rows > 0){

    $result = $sql->fetch_assoc();

    echo '<optgroup label="$result[0]["locationvalue"]">';

    while($result) {

        if($result['locationvalue'] > 1 && $result['locationvalue'] < 2){
            echo '<option value="'.$result["locationvalue"].'"  >'.$result["locationname"].'</option>';
            echo '</optgroup>';
        }
    }
}

答案 1 :(得分:0)

从时间

移动echo '<optgroup label="Andhra Pradesh">'
if($sql->num_rows > 0){
  echo '<optgroup label="Andhra Pradesh">';
    while($result = $sql->fetch_assoc()) {
        if($result['locationvalue'] > 1 && $result['locationvalue'] < 2){                
            echo '<option value="'.$result["locationvalue"].'"  >'.$result["locationname"].'</option>';                
        }
       echo '</optgroup>';
    }
}

答案 2 :(得分:0)

您必须在while数组外部使用optgroup代码。

if($sql->num_rows > 0){
    echo '<optgroup label="Andhra Pradesh">';
while($result = $sql->fetch_assoc()) {
    if($result['locationvalue'] > 1 && $result['locationvalue'] < 2){
        echo '<option value="'.$result["locationvalue"].'"  >'.$result["locationname"].'</option>';
    }
}
echo '</optgroup>';
}

这应该有用。