Invio Form con un Ciclo For

nicopres

Nuovo Utente
21 Mar 2013
23
0
0
Buongiorno,
devo sviluppare una funzione che mi permetti di inviare numerosi form, ho creato un ciclo for sia in php che nello script ma questo non funziona:
HTML:
<script type="text/javascript">
$(document).ready(function() {
for (i=0; i<8; i++) {
  $('input#cognome[i]').change(function() {
    var nome = $("#nome[i]").val();
    var cognome = $("#cognome[i]").val();
    $.ajax({
      type: "POST",
      url: "dati.php",
      data: "nome=" + nome + "&cognome=" + cognome,
      dataType: "html",
      success: function(msg)
      {
        $("#risultato[i]").html(msg);
      },
      error: function()
      {
        alert("Chiamata fallita, si prega di riprovare...");
      }
    });
  });
});
</script>
<?php for ($i=0;$i<8;++$i) {
echo "<form name='modulo'>
    <p>Nome</p>
    <p><input type='text' name='nome' id='nome".$i."'></p>
    <p>Cognome</p>
    <p><input type='text' name='cognome' id='cognome".$i."'></p>
    <input type='button' id='bottone".$i."' value='Invia i dati'>
</form>

<div id='risultato".$i."'></div>";
}
?>
 
ciao
non me ne intendo molto di jq, ma così a naso mi sembra che nella jq crei un array
Codice:
$("#risultato[i]").html(msg);
ma poi nel div usi, anche se sembra simile, un'altra variabile
PHP:
<?php
//...........
<div id='risultato".$i."'></div>";
//...
?>
da quello che capisco nella jq ottieni #risultato[0]...#risultato[8]
mente in php ottieni
<div id='risultato0></div>....<div id='risultato8></div>
prova così
PHP:
//....
<div id='risultato[".$i."]'></div>";
se ho detto una caz...a cancella tutto
 
Ciao e grazie per la risposta, effettivamente come l'ho scritto io è sbagliato, però il mio problema è che in php ci deve essere proprio scritto id="risultato1", id="risultato2", etc, quindi ho modificato jq con
HTML:
$("#risultato"+i).html(msg);
ma non va
 
Ho modificato il form in modo tale di capire il problema in questo modo:
HTML:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
for (i=1; i<=8; i++) {
  $("#cognome"+ i).change(function() {
  alert (i);
  });
}
});
</script>
<?php for ($i=0;$i<8;++$i) {
echo "<form name='modulo'>
    <p>Cognome
    <input type='text' name='cognome' id='cognome".$i."'>
    <input type='button' id='bottone".$i."' value='Invia i dati'>
</form>

<div id='risultato".$i."'></div></p>";
}
?>
I mi mostra ogni volta 9, e non va bene....
Io ho bisogno che se invio l'input #cognome1, in jq mi prenda il valore dell'input e me lo invia al foglio dati.php.

Mi serve questo script perchè sto sviluppando un gestionale di magazzino e quando inserisco la quantità di un prodotto questo deve salvarmelo subito...
 
ciao
prima un paio di cose
nel js scrivi
for (i=1; i<=8; i++) { per cui cognome1...cognome8
poi nel php
for ($i=0;$i<8;++$i) { per cui cognome0...cognome7
poi dai al camo di input
name='cognome'
il name è quello che definisce l'invio e quindi in questo caso trasmetterà comunque solo l'ultimo valore inputato.
non vedo inoltre ne nel js ne nel form ne l'action dove deve inviare i dati ne il metod (post o get)
comunque trattandosi anche di js avviso criric che lo conosce bene di dare un occhio
 
Hai perfettamente ragione, ho sistemato.
Per quanto riguarda l'action, il metod, etc l'ho fatto apposta perchè volevo capire prima il funzionamento dello script base.
Comunque il problema è proprio che prende l'ultima i e non cicla la funzione per ogni i, mi sa che mi manca un passaggio fondamentale!! :confused:
 
Ho risolto modificandolo così:
HTML:
<script>
$(document).ready(function() {
 
      $('.cognome').change(function(){
       var id = $(this).attr("name");
       var cognome = $(this).val();   
       alert(cognome);
 
        }); 
 
    }); 
 
</script>
e il php è diventato
PHP:
<?php for ($i=1;$i<=8;++$i) {
echo "
<form name='modulo'>
    Cognome
    <input type='text' name='".$i."' class='cognome'>
</form>

<div id='risultato".$i."'></div></p>";
}
?>
 

Discussioni simili