Dovresti usare, javascript, con jQuery.append.
ecco come:
codice:
<html>
<head>
<style>
body{padding:0;
margin:0;}
#insert{/*È il campo con il textfield da riempire con il nome che si vuole dare al campo che si sta per creare */
padding:0;
margin:0;
position:absolute;
left:50%;
top:50%;
background-image:url(img/BR1Back2.gif);
margin-left:-150px;
margin-top:-150px;
width:300px;
height:190px;
display:none;
opacity:1;
text-align:center;
padding-top:110px;
}
#over_flow{/*Serve per creare un piccolo effetto overFlow per creare il campo*/
padding:0;
margin:0;
position:absolute;
width:100%;
height:100%;
background-color:#666666;
opacity:0.8;
display:none;
}
.plus{/*Mi gestisco gli effetti sul simbolo più per renderlo "più interattivo"*/
cursor:pointer;
}
.plus:hover{
text-decoration:underline;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.js"></script>
<script>
function nascondi(){//Nascondo i div Overflow(un mega div con trasparenza per creare il distacco dal resto della pagina) e Insert un div con il campo da riempire con il nome del campo che stiamo per creare, viene richiamata quando clicco sull'overFlow
$('#insert').fadeOut(0,0);
$('#over_flow').fadeOut(0,0);
}
function mostra(){// funzione iinversa di quello sopra, viene chiamata quando si clicca su uno dei più che stanno accanto ai campi
$('#insert').fadeIn(0,1);
$('#over_flow').fadeIn(0,1);
}
function crea(){//WOWOWO ci siamo Funzione cre richiamata quando clicco su "Crea Campo"
var name=$('#nome_campo_nuovo').val();//Prendo il valore del campo con id=nome_campo_nuovo
name=name.split(' ').join('_')//Sostituisco gli spazi con gli _(underscore) nel contenuto della variabile name
if(name!=null && name!="" && name!="_"){//se la variabile name contiene altro oltre ad un underscore o se NON contiene ""(cioè se non contiene il non nulla) allora:
$('form').append("<label>"+name+"</label><input type='text' name='"+name+"' id='"+name+"'/><span class='plus' onclick='mostra()'>+</span> ");//appendo al div con id=campi nuovi il codice che mi crea un nuovo textField che ha come label e come name e id il nome inserito nel apposito campo
}
else// la variabile name è nulla o vuota o ha un solo _(underscore) allora mi fa un alert e mi avverte dell'errore.
alert('Nome campo errato!');
nascondi();
}
</script>
</head>
<body background="img/bg.png" text="#FFFFFF">
<div id="over_flow" onclick="nascondi()"></div>
<div id="insert">
<label>Nome campo:</label><input type="text" name="nome_campo_nuovo" id="nome_campo_nuovo" />
Crea Campo
</div>
<div>
<form action="img/tuapagina_php.php" method="post">
<label>Nome</label><input type="text" name="nome" /><span class="plus" onclick="mostra()">+</span>
<div id="campi nuovi"></div>
</form>
</div>
</body>
</html>
E nella pagina php quando ricevi i dati inviati dal form tramite GET o POST dovrai scorrere l'array POST per vedere che cosa ti entra e che nome ha.. oppure crei nello script di Javascript un sistema che ti crea i campi con id sequenziale, resta il problema di identificare il campo se fai così... oppure fai tu delle checkbox con varie scelte senza far viaggiare troppo di fantasia i tuoi utenti. e tu hai un range di ID, chiaramente ogni id si può ripetere solo una volta quindi dovrai disabilitare la check box... queste sono solo miei consigli l'esempio ce l'hai... ciao!