从MYSQL中选择的PHP HTML选择框

时间:2014-01-31 15:29:19

标签: php mysql

在选择框中插入团队列表的简单代码。 我想设置SELECTED团队的ID,即HREF

http://localhost/teams.php?id=7&years=2011&cups=8   

<?php
    $query = "select distinct t.team_id,t.team from teams t,years y,cups c where t.team_id=c.team_id and y.year_id=$_GET[years] and c.cup_id=$_GET[cups] ORDER BY t.team ASC";
    $res   = mysql_query($query);
    $option = '';

    while($row = mysql_fetch_assoc($res))
    {
        $option .= '<option value = "'.$row['team_id'].'">'.$row['team'].'</option>';
    }
?>

<form>
    <select id="tteam" name="team">
        <?php echo $option; ?>
    </select>
</form>

问题是我设置了team_id = $ _ GET [id],它只显示一个团队。 我希望选择team = 7,但其他人仍然会在选择框中显示

5 个答案:

答案 0 :(得分:3)

首先,永远不要将原始数据插入SQL查询。您要求SQL注入。 其次,你缺少$ _GET变量的引号,例如,在你的SQL查询中,你当前使用$_GET[id]访问id。这不起作用,将id封装在引号中,例如$_GET['id']。 第三,ESCAPE你的数据!!

mysql_*函数现已弃用。您不应该在新代码中使用它们。相反,请研究PDO或MySQLi功能。还要查看准备好的查询。

这应该是你的代码:

<?php
   $years = mysql_real_escape_string($_GET['years']);
   $cups = mysql_real_escape_string($_GET['cups']);

    $query = "SELECT distinct t.team_id, vt.team 
              FROM teams t,years y,cups c 
              WHERE t.team_id = c.team_id 
                  AND y.year_id = '{$years}' 
                  AND c.cup_id = '{$cups}' 
              ORDER BY t.team ASC";

    $res   = mysql_query($query);
    $option = '';

    while($row = mysql_fetch_assoc($res))
    {
        // The line below specifies whether the option should be selected.
        $selected = $row['team_id']==$_GET['id'] ? 'selected="selected"' : '';

        $option .= '<option ' . $selected . ' value= "' . $row['team_id'] . '">' . $row['team'] . '</option>';
    }
?>

<form>
    <select id="tteam" name="team">
        <?php echo $option; ?>
    </select>
</form>

答案 1 :(得分:1)

请注意,您很容易受到SQL注入攻击。请参阅:How can I prevent SQL injection in PHP?

话虽如此,您需要使用将$row["team_id"]$_GET["ID"]进行比较的条件语句。

while($row = mysql_fetch_assoc($res))
{
if($row["team_id"] == $_GET["ID"])
    $option .= '<option value = "'.$row['team_id'].'" selected="selected">'.$row['team'].'</option>';
else
    $option .= '<option value = "'.$row['team_id'].'">'.$row['team'].'</option>';
}

答案 2 :(得分:1)

while($row = mysql_fetch_assoc($res))
{
    $option .= '<option value = "'.$row['team_id'].'" '.($row['team'] == 7 ? 'selected="selected"': '').'>'.$row['team'].'</option>';
}

答案 3 :(得分:0)

将$ _GET的ID与$ row ['team_id']进行比较。

while($row = mysql_fetch_assoc($res))
{
if($row['team_id'] == $_GET["id"])
    $option .= '<option value = "'.$row['team_id'].'" selected="selected">'.$row['team'].'</option>';
else
    $option .= '<option value = "'.$row['team_id'].'">'.$row['team'].'</option>';
}

答案 4 :(得分:0)

我只关注循环部分:

while($row = mysql_fetch_assoc($res))
{
    $selected = (isset($_GET['team_id']) && $row['team_id'] == $_GET['team_id']) ? 'selected' : '';
    $option .= '<option value = "'.$row['team_id'].'" selected="'. $selected .'">'.$row['team'].'</option>';
}