2009-10-21 12 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" /> 
    } 
} 

?> 

Ce que je suis en train de faire est de demander à l'utilisateur d'entrer une valeur dans la zone de texte et puis pour moi de les présenter avec une quantité appropriée d'entrées de texte pour eux entrez leurs valeurs dans. Ainsi, l'utilisateur entre 10, ils ont 10 entrées de texte présentées et un bouton de soumission ou quelque chose. J'apprécie que cette ligne ne fonctionne pas où elle estAjouter des entrées de texte basé sur l'exigence de l'utilisateur

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

mais je suis sûr que c'est le bon type de lignes? aussi, quel est le problème avec cette ligne?

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

grâce

+0

Vous devriez envisager de renommer votre question pour aider les autres avec le même problème - à l'avenir. –

+0

convenu. Renommez la question en question pour que plus de personnes trouvent ce sujet. – dotty

Répondre

3

utilisation: 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" /><? 
    } 
} 

?> 

Cela vérifiera l'existence de $ _GET [ 'amountOFEntry'] (Note des crochets comme _GET et $ _POST sont des tableaux)

Veuillez également noter l'utilisation de ++ $ i au lieu de $ i ++. Il y a une augmentation de performance mineure ici. Pas beaucoup mais ça vaut le coup.

EDIT ::: Veuillez noter que les variables seront sensibles à la casse, Vous utilisez amountOfEntry dans le formulaire et $ _GET ['amountOFEntry'] dans la boucle. (Note capitol F)

+0

'$ _GET (" amountOFEntry ")' est une syntaxe invalide, il devrait être '$ _GET [" amountOFEntry "]' –

+0

désolé seulement changé 1 d'entre eux .. mis à jour les deux maintenant – Lizard

+0

S'il vous plaît prendre note de mon dernier commentaire concernant le nom de la variable case – Lizard

2

$ _GET est un tableau, vous devez utiliser [] pour obtenir les éléments. Donc:

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

Comme souligné $ _GET renvoie un tableau de valeurs. Utilisez donc les crochets pour trouver la variable que vous voulez. Aussi, vous ne pouvez pas mélanger HTML et PHP. Vous devez donc faire du HTML une chaîne (en le citant) et un echo utilisateur (ou print) pour sortir la chaîne. En outre, comme indiqué par Lizard, vous devez utiliser isset pour déterminer si la variable est définie.

+0

je n'arrive toujours pas à imprimer le bon nombre si des zones de texte utilisant cette approche tho: S –

+0

Ricki, s'il vous plaît revérifier ma réponse J'ai ajouté quelqu'un qui je pense va le réparer, en ce qui concerne le cas de la variable. – Lizard

1

Vous pourriez aussi bien obtenir la valeur numérique du _GET $ pour éviter les erreurs d'exécution:

intval($_GET['amountOFEntry']) 
1

Si vous vous préfériez pouvez utiliser JavaScript. Utiliser une bibliothèque comme JQuery aiderait beaucoup.

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> 

Ceci est beaucoup de travail juste pour éviter d'envoyer la page au serveur et ayant les travaux effectués sur le côté serveur, mais pensé que je pourrais le suggérer de toute façon ...

Questions connexes