[英]PHP-isset for loop not working to check unknown number of buttons
在html正文中的此.php文件中,我生成一個無序列表,其中包含未知數量的項目:$ num_files(目錄中每個文件的1個列表項目)。
最后得到目錄中無序文件列表,每個文件都有一個“查看”按鈕。
當用戶單擊特定文件(特定列表項)的查看按鈕時,它應該重定向。
無論我按哪個按鈕,都不會發生。
[some stuff up here]
<ul class="center">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
<?php
if($num_files==0) exit;
$i = 0;
$ii=0;
while ($i < $num_files) {
$ii=$i+2;
echo "<li> $user_filenames[$ii] </li>";
$id = trim("view".$i);
echo '<input type="submit" id=$id name=$id value="view">';
$i=$i+1;
}?>
</form>
</ul>
<?php
$x=0;
$xx=0;
while ($x < $num_files) {
$var = trim("view".$x);
if(isset($_POST[$var])){
$xx = $x+2;
$_SESSION['current_file'] = $user_filenames[$xx];
header("Location: view_file.php");
exit;
}
$x=$x+1;
}
?>
</body>
</html>
值得注意的是,當我將代碼更改為以下代碼時,當我按下任意按鈕時,它將成功重定向(但僅使用預定的$ user_filenames [x]元素進行重定向,並且無法區分按鈕)。
<ul class="center">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
<?php
if($num_files==0) exit;
$i = 0;
$ii=0;
while ($i < $num_files) {
$ii=$i+2;
echo "<li> $user_filenames[$ii] </li>";
echo '<input type="submit" id="view" name="view" value="view">';
$i=$i+1;
}?>
</form>
</ul>
<?php
if(isset($_POST['view'])){
$_SESSION['current_file'] = $user_filenames[2];
header("Location: view_file.php");
exit;
}
}
?>
</body>
</html>
當您查看源代碼時,此名稱和id屬性正確嗎?
input type="submit" id=$id name=$id value="view"
你有這個:
echo '<input type="submit" id=$id name=$id value="view">';
而不是這個(您說的有效)
echo '<input type="submit" id="view" name="view" value="view">';
這是有道理的,因為根據您的代碼判斷,上層代碼應該變成:
<input type="submit" id=someid name=someid value="view"
那是無效的html。 您需要確保生成的代碼也包含引號。
我建議您也嘗試使用Firefox的“ firebug”。 使用它,您可能會注意到什錦的html,而無需考慮它。
這將是解決問題的一種變體:
$id = "'". trim("view".$i)."'";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.