Per quanto concerne la parte in PHP un problema lo troverei nel name in questo:
Codice PHP:
echo "
<td>numero fattura</td>
<td><input type=\"text\" name=\"numerofattura[$i]\" value=\"\" /></td>
che ti stampa name="numerofattura[2]" (ispeziona da Browser il Codice HTML della pagina ottenuta).
Ma le square brackets tornano ad essere invalid characters (invalidi per quanto riguarda il name l' id ecc.) in PHP come già in JavaScript, almeno per le versioni che so'; comunque, questo (salva il file tapu.php o cambia l' action ) così com'è stampa l' HTML come sopra, e NON funziona:
Codice PHP:
<?php
$stampa = "
";
if (isset($_POST['invio'])){
$stampa = $_POST['numerofattura[2]'];
};
echo $stampa ;
$conteggio = 3;
echo "\n<form action=\"tapu.php\" name=\"invio_formconta\" method=\"post\" onSubmit=\"return inviofat()\">\n";
echo "
<input type=\"hidden\" name=\"tipopage\" value=\"fattnew\" />
<input type=\"hidden\" name=\"conteggiojs\" value=\"$conteggio\" />\n";
for ($i = 1 ; $i <= $conteggio ; $i++) {
echo "\n <table>
<tr>
<td colspan=\"2\">tabella num " . $i . " per inserimento fattura di : xxx</td>
</tr>
<tr>
<td>numero fattura</td>
<td><input type=\"text\" name=\"numerofattura[" . $i . "]\" value=\"\" /></td>
</tr>\n </table>";
};
echo "\n\n
<input type=\"submit\" name=\"invio\" value=\"Recupera numero fattura dalla tabella num 2\" />
</form>";
?>
Se le togli in:
$stampa = $_POST['numerofattura2'];
e
name=\"numerofattura" . $i . "\"
FUNZIONA !!!
Tornando al JS avrai incontrato le parentesi quadre con document.getElementsByName ma in questo modo:
document.getElementsByName("numerofattura")[0]
document.getElementsByName("numerofattura")[3]
che significa, tra una Collection di Elementi tutti con medesimo name="numerofattura" (senza ulteriori numeri/caratteri distintivi) prendiamo in considerazione il primo e il quarto.
Mi spiace ho dovuto interrompere bruscamente oggi, e ti ho lasciato con
var dato1 = document.getElementsByName("numerofattura" + i);
che si traduce nell' intera collection; siccome nel tuo caso c'è un Elemento solo nel Documento con quel name e quello vogliamo recepire, sarà:
var dato1 = document.getElementsByName("numerofattura" + i)[0];
Aggiungi questo SCRIPT nel mio esempio sopra (una volta ricorretto), lo piazzi fuori dai Tag <?php e ?> del PHP e editi cambiando valore alla variabile i :
codice:
<script type="text/javascript">
function inviofat(){
var i = 2;
var dato1 = document.getElementsByName("numerofattura" +i)[0];
alert("Recuperi dal campo n. " +i+ ":\n" +dato1.value);
};
</script>
\n è per andare a capo; c'è anche \t che indenta.