環路

2016-02-02 24 views
1

使用生成的PHP變量名HTML 對象在第一個頁面(的index.php)我寫了這個:
環路

<?php 
echo '<form action="test.php" method="get">'; 
$x=0; 
while($x<5){ 
$x++; 
$test='tester'.$x; 
echo '<input type="text" name="$test"><br>'; 
}; 
echo '<input type="submit" value="submit">'; 
?> 

第二頁(test.php的),我寫了這:

<?php 
echo $_POST['tester1']; 
echo $_POST['tester2']; 
echo $_POST['tester3']; 
echo $_POST['tester4']; 
echo $_POST['tester5']; 
?> 

,當我測試了它我得到這些錯誤

注意:未定義指數:tester1在C:\ XAMPP \ htdocs中\ test.ph P的第2行

說明:未定義指數:tester2在C:\ XAMPP \ htdocs中\ test.php的上線3

說明:未定義指數:tester3在C:\ XAMPP \ htdocs中\ test.php的上線4

說明:未定義指數:TESTER4在C:\ XAMPP \ htdocs中上線\ test.php的5

說明:未定義指數:tester5在C:\ XAMPP \ htdocs中\第6行test.php的

下面的代碼是t他真正的代碼意味着用戶填寫一個數字。我想稍後使用這些數字進行計算,因此它們都需要一個唯一的名稱。 <input>對象通過循環生成,循環運行的次數由數據庫中的行數指定。

+4

在單引號中,PHP變量不作爲變量傳遞,但會輸出實際文本。它應該看起來像'echo'
';' – Qirel

+0

我們測試了這個並且它沒有工作 –

+1

您也有'method =「get」',所以它們通過POST傳遞到URL中。將其更改爲'method =「POST」'。同時應用我所評論的那些變化,即*應該*起作用。 – Qirel

回答

0

這是它是如何工作(的index.php):

<?php 
    echo '<form action="test.php" method="post">'; 
    $x=0; 
    while($x<5){ 
     $x++; 
     $test='tester'.$x; 
     echo '<input type="text" name="'.$test.'"><br>'; 
    }; 
    echo '<input type="submit" value="submit">'; 
?> 
+0

嘗試在PHP中將它們檢索爲POST時,不能使用'method =「get」'。 – Qirel

+0

是的,你是對的。剛剛修改它。謝謝。 – hherger

+0

是的,因爲我曾嘗試過使用方法獲取和發佈,我沒有改變它正確的時候,我發佈的問題 –

0

只是這個代碼附加到的test.php的

if(!isset($_POST['tester1']) || !isset($_POST['tester2']) ... etc){ 
    exit(0); //or do something to signal index.php of missing values 
} 
/* (the rest of the code */ 

頂部在寫這樣的動態頁面,你應該總是期望有一個缺失的變量,並編寫一個轉義碼,這樣你就不會遇到這樣的錯誤。

1

兩個主要問題是,您在單引號內使用PHP變量,這不會傳遞實際變量,而是實際名稱。作爲一個例子

$foo = "bar"; 
echo 'This is $foo'; 

將打印

這是$ foo的

如果使用雙引號,變量的內容將被傳遞,

$foo = "bar"; 
echo "This is $foo"; // You can also do the following: echo 'This is '.$foo; 

會打印

這條

其次,你在你的形式使用method="get",而是試圖找回他們的POST變量。這意味着您必須將其更改爲method="POST"


另一種替代方法,是創建元素的數組,並使用循環在PHP來獲取值。下面給出了一個例子。第一個片段生成一個包含5個輸入字段的表單作爲數組。

<form action="test.php" method="POST"> 
    <?php for ($x=0; $x<5; $x++) { ?> 
    <input type="text" name="tester[]" /> 
    <?php } ?> 
    <input type="submit" name="submit" /> 
</form> 

而在PHP中,循環訪問該數組。

<?php 
if (isset($_POST['tester']) { 
    // If the values are set, to avoid Undefined Index notices 
    foreach ($_POST['tester'] as $value) { 
     echo $value."<br />"; 
    } 
} 
?>