Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php在侧html下拉列表中选择_Php_Mysql_Html_Sql - Fatal编程技术网

Php在侧html下拉列表中选择

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

我正在尝试将结果添加到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="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>&nbsp;</p><p>&nbsp;</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问题上是正确的。我修改了我的代码