Php在侧html下拉列表中选择
我正在尝试将结果添加到html下拉列表中。 如果我在html表单之外使用php,它就会工作:它显示结果,但我需要在表单内部使用它Php在侧html下拉列表中选择,php,mysql,html,sql,Php,Mysql,Html,Sql,我正在尝试将结果添加到html下拉列表中。 如果我在html表单之外使用php,它就会工作:它显示结果,但我需要在表单内部使用它 <form><form method="post" action="selldo.php"> <label><br /><br /><br /><br />What slot do you want to Sell?</label> <select name="pok
<form><form method="post" action="selldo.php">
<label><br /><br /><br /><br />What slot do you want to Sell?</label>
<select name="pokeSLOT" id="pokeSLOT" style="width:150px;padding-left:5px;">
<option value=""></option>
<?php
$result = mysql_query("SELECT * FROM user_pokemon
WHERE belongsto='$_SESSION[username]'");
while($row = mysql_fetch_array($result))
{
echo $row['id'] . " " . $row['pokemon'];
echo "<br />";
}
?>
</select><br/><br/>
<label>Price You Would Like For The Pokemon?</label>
<input type="int" name="cost" id="cost" maxlength="30"/><br/><br/>
<button name="submit" type="submit" id="Submit_But">Sell</button>
<p> </p><p> </p>
</form>
当我在下拉菜单中查看时,没有任何内容,但是如果它使SQL脱离表单,它会将结果发布到页面,这样它就可以正常工作,我只需要在下拉html表单中使用它
p、 s我有页面的connect ontop您需要回显HTML选项元素:
while($row = mysql_fetch_array($result)) {
echo "<option>" . $row['id'] . " " . $row['pokemon'] . "</option>";
}
您可能希望为选项元素指定一个值,以便在提交表单时正确传递所选选项。这应该可以做到:
<select name="pokeSLOT" id="pokeSLOT" style="width:150px;padding-left:5px;">
<?php
$result = mysql_query("SELECT * FROM user_pokemon WHERE belongsto = '$_SESSION[username]'");
while($row = mysql_fetch_array($result)) {
echo "<option value=\"\">" . $row['id'] . " " . $row['pokemon'] . "</option>
?>
</select>
你没有创建一个选择!你需要标签,而不仅仅是回显你的结果
<select name="pokeSLOT" id="pokeSLOT" style="width:150px;padding-left:5px;">
<option value=""></option>
<?php
$username = mysql_real_escape_string($_SESSION['username']);
$result = mysql_query("SELECT * FROM user_pokemon WHERE belongsto='$username'");
while($row = mysql_fetch_array($result)) : ?>
<option value="<?php echo htmlentities($row['id']);?>"><?php echo htmlentities($row['pokemon']);?></option>
<?php endwhile;?>
</select>
你看过这段代码生成的源代码了吗? 你会发现你的选项都在那里,只是在空白的某个地方,没有被任何html标签包装。您将看到如下内容:
<form>
<select>
<option></option>
your first option
your second option
your third option
your n'th option
</select>
</form>
但要使标记正确,您真正需要的是:
<option>your first option</option>
<option>your second options</option>
等等。。。这应该足够让你做对了!如果不是
echo '<option value="' . $row['id'] . '">' . $row['pokemon'] . '</option>';
您有一个SQL注入漏洞和一个可能的XSS安全漏洞: 通过将php代码更改为:
<?php
$username = mysql_real_escape_string($_SESSION['username']);
$result = mysql_query("SELECT * FROM user_pokemon
WHERE belongsto = '$username' ");
while($row = mysql_fetch_array($result))
{
$id = htmlentities($row['id']);
$pokemon = htmlentities($row['pokemon']);
echo '<option value = "$id"> $pokemon </option>';
}
?>
见:
而且谢谢您修复了它再次感谢如果您这样做,您将无法存储所选选项的id。如果你需要这样做,请看我的答案。@James,XSS安全漏洞怎么办?我建议将$row['pokemon']替换为htmlentities$row['pokemon']同上,尽管intval$row['id']可能更容易,只要它实际上是一个int-1,就不能在答案中留下SQL注入。因为这使它成为一个危险的答案,比不起作用的东西更糟糕。@Johan,谢谢你指出这一点,并提供了一个更好的答案来解决它。我每天都在学习-1,您不能在答案中留下一个巨大的SQL注入和XSS漏洞。@johan,谢谢,我只是假设$_会话已经转义,但您在XSS问题上是正确的。我修改了我的代码