将mysqli查询与当前选中的html select结合使用

时间:2014-03-20 14:51:01

标签: php mysql mysqli

我有多个html选择,并选择了当前的mysqli值。目前我有两个查询来完成此任务。有没有办法将两个查询合并为一个?我的应用程序中有太多的mysqli查询,并且我正试图找到限制和组合它们的方法。

<?php
    echo '<select name="companyedit"><option value="">None</option>';
    $currcoQuery = mysqli_query($link, "SELECT id FROM Company WHERE id = $company");
    $currco = mysqli_fetch_assoc($currcoQuery);
    $allcoQuery = mysqli_query($link, "SELECT id, name FROM Company ORDER BY name");
    while($allco = mysqli_fetch_assoc($allcoQuery)){
        echo '<option value="'.$allco['id'].'"';
        if($currco['id'] == $allco['id']) echo 'selected';
        echo '>'.$allco['name'].'</option>';
    }
    mysqli_data_seek($allcoQuery, 0);
    echo '</select>';
?>

另一个例子是:

<?php
    echo '<select name="marked"><option value="">None</option>';
    $curmaterialQuery = mysqli_query($link, "SELECT marked FROM Materials WHERE id = ".$materialed);
    $curmaterial = mysqli_fetch_assoc($curmaterialQuery);
    $allmaterialQuery = mysqli_query($link, "SELECT id, name FROM Marked WHERE `assoc` = 'mat'");
    while($allmaterial = mysqli_fetch_assoc($allmaterialQuery)){
        echo '<option value="'.$allmaterial['id'].'"';
        if($curmaterial['id'] == $allmaterial['id']) echo 'selected';
        echo '>'.$allmaterial['name'].'</option>';
    }
    mysqli_data_seek($allmaterialQuery, 0);
    echo '</select>';
?>

1 个答案:

答案 0 :(得分:1)

对于您的第一个示例,您可以获得所有公司一个查询但在选择一个查询之前。这是&#34;双重麻烦&#34;。试试这个:

<?php
    echo '<select name="companyedit"><option value="">None</option>';
    $allcoQuery = mysqli_query($link, "SELECT id, name FROM Company ORDER BY name");
    while($allco = mysqli_fetch_assoc($allcoQuery)){
        echo '<option value="'.$allco['id'].'"';
        if($company == $allco['id']) echo 'selected';
        echo '>'.$allco['name'].'</option>';
    }
    mysqli_data_seek($allcoQuery, 0);
    echo '</select>';
?>

对于您的第二个示例,我需要更多上下文来提供更好的解决方案。在不知道表结构的情况下很难优化查询。