Kullanıcının ihtiyacına göre metin girişlerini ekle

5 Cevap 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(!empty($_GET("amountOFEntry")){
    for($i = 0; $i < $_GET("amountOFEntry"); $i++){
        <input type= "text" name = "nums[]" size = "2" />
    }
}

?>

Ne yapmaya çalışıyorum onlar, giriş metin alanına bir değer kullanıcıya sormak ve sonra Yani kullanıcı 10 girer beni içeri değerlerini girmek onlar için metin girişlerinin uygun miktarda sunmak için 10 metin girişi sundu ve bir düğme falan gönderin. Nerede olduğunu, bu hat çalışmaz takdir

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

ama ben bu satırları doğru sıralama boyunca emin değilim? Ayrıca, ne bu hat ile yanlış?

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

teşekkürler

5 Cevap

kullanın: 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" /><?
    }
}

?>

Bu (diziler $ _GET ve $ _POST gibi köşeli Not) $ _GET ['amountOFEntry'] varlığını kontrol edecek

Ayrıca + + $ i $ yerine i + + kullanımını unutmayın. Burada küçük bir performans artışı var. Çok değil ama buna değer yapıyor.

EDIT::: Please note that the variables will be case sensitive, You are using amountOfEntry in the form and $_GET['amountOFEntry'] in the loop. (Note capitol F)

$ _GET Bir dizidir, sen elemanları almak için [] kullanmak zorunda. Yani:

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

Işaret olarak $ _GET değerleri bir dizi döndürür. Yani istediğiniz değişkeni bulmak için köşeli ayraç kullanabilirsiniz. Ayrıca HTML amd PHP karıştırın olamaz. Yani HTML (bunu alıntı yaparak) dize ve kullanıcı echo (ya da baskı) çıktı dize yapmak gerekir.

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

Lizard tarafından da belirtildiği gibi, siz değişken ayarlanmış olup olmadığını belirlemek için isset kullanmalısınız.

Siz de çalışma zamanı hataları önlemek için $ _GET sayısal değerini alabilirsiniz:

intval($_GET['amountOFEntry'])

Eğer tercih ederseniz JavaScript kullanabilirsiniz. JQuery gibi bir kütüphaneyi kullanarak bir çok yardımcı olacaktır.

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>

Bu sadece sunucuya geri sayfasını gönderme ve çalışma sunucu tarafında yürütülen, ama ben yine de tavsiye düşündüm zorunda kalmamak için bir sürü iş olduğunu ...