2009-10-21 3 views
1
<form action = "numbericalInput.php" method = "Get"> 

Please enter the number of input areas you wish 
<input type = "text" name = "amountOfEntry"/> 
<input type = "submit" name = "GO"/> 

</form> 

<?php 

if(!empty($_GET("amountOFEntry")){ 
    for($i = 0; $i < $_GET("amountOFEntry"); $i++){ 
     <input type= "text" name = "nums[]" size = "2" /> 
    } 
} 

?> 

Что я пытаюсь сделать, это попросить пользователя ввести значение в текстовую область, а затем предоставить мне соответствующее количество текстовых входов для них введите свои значения. Таким образом, пользователь вводит 10, у них есть 10 текстовых входов и кнопка отправки или что-то в этом роде. Я ценю, что эта линия не будет работать там, где она находитсяДобавить текстовые входы по запросу пользователя

<input type= "text" name = "nums[]" size = "2" /> 

, но я уверен, что это похоже на правильные линии? также, что не так с этой линией?

if(!empty($_GET("amountOFEntry")){ 

благодаря

+0

Вы должны рассмотреть возможность переименования своего вопроса, чтобы помочь другим с той же проблемой - в будущем. –

+0

согласен. Переименуйте вопрос на вопрос, чтобы больше людей находили эту тему. – dotty

ответ

3

использование: isset() http://php.net/manual/en/function.isset.php

<form action = "numbericalInput.php" method = "Get"> 

Please enter the number of input areas you wish 
<input type = "text" name = "amountOfEntry"/> 
<input type = "submit" name = "GO"/> 

</form> 

<?php 

if(isset($_GET['amountOfEntry'])){ 
    for($i = 0; $i < $_GET['amountOfEntry']; ++$i){ 
     ?><input type= "text" name = "nums[]" size = "2" /><? 
    } 
} 

?> 

Это будет проверять наличие $ _GET [ 'amountOFEntry'] (Примечание квадратных скобок, как $ _GET и $ _POST являются массивы)

Также обратите внимание на использование ++ $ i вместо $ i ++. Здесь незначительное увеличение производительности. Не много, но это стоит того.

EDIT ::: Обратите внимание: переменные будут чувствительны к регистру, вы используете amountOfEntry в форме и $ _GET ['amountOFEntry'] в цикле. (Примечание capitol F)

+0

'$ _GET (" amountOFEntry ")' недопустимый синтаксис, он должен быть '$ _GET [" amountOFEntry "]' –

+0

Извините, только изменилось 1 из них .. обновлено как сейчас – Lizard

+0

Пожалуйста, обратите внимание на мой последний комментарий относительно имени переменной case – Lizard

2

$ _GET - массив, вы должны использовать [] для получения элементов. Итак:

if(!empty($_GET['amountOFEntry']){ 
1

Как указано, $ _GET возвращает массив значений. Поэтому используйте квадратные скобки, чтобы найти нужную вам переменную. Также вы не можете смешивать HTML amd PHP. Поэтому вам нужно сделать HTML-строку (путем ее цитирования) и пользовательским эхом (или печатью) для вывода строки.

if(!empty($_GET["amountOFEntry"]){ 
    for ($i = 0; $i < $_GET["amountOFEntry"]; $i++) { 
     echo '<input type= "text" name = "nums[]" size = "2" />'; 
    } 
} 

Также, как отмечено Lizard, вы должны использовать isset, чтобы определить, установлена ​​ли переменная.

+0

Я все еще не могу напечатать правильный номер, если текстовые поля с использованием этого подхода: S –

+0

Рики, пожалуйста, перепроверьте мой ответ. Я добавил кого-то, который, я думаю, исправит его, применительно к случаю переменной. – Lizard

1

Вы можете также получить численное значение из $ _GET, чтобы избежать ошибок во время выполнения:

intval($_GET['amountOFEntry']) 
1

Если вы предпочитаете, вы можете использовать JavaScript. Использование библиотеки, такой как JQuery, очень помогло бы.

JavaScript:

$("#goButton").bind("click",function(e){ 
     numberOfEntries = parseInt($("#numberOfEntries").attr("value")); 
     for(i=0;i<numberOfEntries;i++){ 
      newInput = document.createElement("input"); 
      $(newInput).attr("type","text").attr("name","nums[]").attr("size","2"); 
      $("#inputEntries").append(newInput); 
     } 
    } 
); 

HTML:

<body> 
<input id="numberOfEntries" type = "text" name = "amountOfEntry"/> 
<input id="goButton" type = "submit" name = "GO"/> 
<div id="inputEntries"></div> 
</body> 

Это много работы, чтобы избежать отправки страницы обратно на сервер и с работы, проделанной на стороне сервера, но подумал, что я мог бы предложить его в любом случае ...

Смежные вопросы