2012-01-24 22 views
0

我正在爲具有$ i的不同數值的用戶循環提問。他們將輸入一個也是循環的html格式的數量。當他們點擊提交時,我想要有一個數組(使用關鍵字範圍[0]向前)來存儲他們對問題每個特定變體的響應。但是,通過我編寫的代碼,我只能將其最後一個輸入存儲爲鍵[0],就好像它是數組的第一個元素一樣。我打電話給print_r時,所有以前的答案似乎都會丟失。請,我真的很感激,如果有人能指出爲什麼會發生這種情況,或者我可以如何解決這個問題。通過html表單創建的PHP數組僅存儲最後一個元素

<?php 

    for ($i=2; $i<=10; $i++) 

    { 
     print "question $i"; 

     echo"<form action=\"mysqlranked.php\" method=\"post\"> 
      <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\"> 
      </form> 
      <br>"; 
    } 

    print " 
    <form> 
    <input type=\"submit\" name=\"formSubmit\" value=\"Submit\"> 
    </form>"; 

    if (isset($_POST["formSubmit"])) 
    { 
     $var = $_POST["pools"]; 
    } 

    print_r($var); 

?> 
+0

人人蔘與的份上,你能不能請切換到使用單引號(單引號),這樣就可以把所有這些不斷逃生斜線? – rockerest

+1

@rockerest更好,停止從PHP回顯HTML(請參閱Moon的回答) – Phil

+0

@Phil,我通常會同意,但對於這種情況,使用單引號看起來要容易得多,不得不繼續輸入' '甚至'' – mowwwalker

回答

1

你以新的形式有你的每一個輸入,並在其自己的形式提交按鈕也是如此。我爲你修好了:

<?php 

    echo "<form action=\"mysqlranked.php\" method=\"post\">"; 
    for ($i=2; $i<=10; $i++) 

    { 
     print "question $i"; 

     echo" 
      <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\"> 

      <br>"; 
    } 

    print " 
    <input type=\"submit\" name=\"formSubmit\" value=\"Submit\"> 
    "; 
    echo "</form>"; 
    if (isset($_POST["formSubmit"])) 
    { 
     $var = $_POST["pools"]; 
    } 

    print_r($var); 

?> 

讓我知道它是否有效。

+0

在嘗試使用它之前,您應該檢查'$ _POST ['pools']'。 – Phil

+0

工程就像一個魅力,非常感謝! – gf3

+0

@ gf3,沒問題。同時考慮到評論中浮現的各種建議。在回顯html字符串時使用單引號,這樣您就不必在使用它之前檢查$ _POST ['pools']的值,並且可能使用實際的html而不是回顯字符串來轉義雙引號。 – mowwwalker

0
<?php 

     for ($i=2; $i<=10; $i++) 

     { 
      print "question $i"; 

      echo"<form action=\"mysqlranked.php\" method=\"post\"> 
       <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\"> 

       <br>"; 
     } 

     print " 

     <input type=\"submit\" name=\"formSubmit\" value=\"Submit\"> 
     </form>"; 

    if (isset($_POST["formSubmit"])) 
     { 

       for($counter=0;$counter<count($_POST["pools"]);$counter++) 
       { 
        $var = $_POST['pools'][$counter] 

       } 

     } 
print_r($var); 

    ?> 
1

對於每個問題,您都不應該有新的form標記。

嘗試下面的代碼:

<form action="mysqlranked.php" method="post"> 

<?php 
    for ($i = 2; $i <= 10; $i++) 
    { 
     print "question $i"; 
?> 

    <input type="text" name="pools[]" value="0" maxlength="2" size="2"> 

<?php 
    } 
?> 

    <input type="submit" name="formSubmit" value="Submit"> 
</form> 

<?php 
    if (isset($_POST["formSubmit"])) 
    { 
     $var = $_POST["pools"]; 
    } 

    print_r($var); 
?> 
+0

+1理智的PHP/HTML切換 – Phil

+0

是的,它正是窗體標籤,謝謝 – gf3

0

您可以使用array_push($arrayName, $elementToBePushed);

相關問題