ciclo $.each non va

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Ciao a tutti,
ho questo problema, ho creato un form con alcuni campi che vengono aggiunti con jquery mediante una funzione onClick.
una volta inseriti i dati, non riesco ad inviarli tutti, ma mi viene stampata (ho fatto varie prove con console.log) solo l'ultima serie di dati.
ho provato varie combinazioni, premetto che non sono un esperto, ho imparato leggendo qui e la e da autodidatta, di cicli $.each, ma senza successo. Solo se creo un $.each singolo per ogni input riesco ad avere tutti i dati, poi però non riesco a riunirli ed inviarli.
questo è il codice del form, è all'interno di una funzione php
PHP:
$out='<div id="ordine">';
	$out.='<form action="?azione=test" method="post" enctype="multipart/form-data">';
	$out.='<legend class="margin_left margin_top"><h2>INSERIMENTO ORDINE DI ACQUISTO</h2></legend>';
	$out.='<div class="margin_left margin_top"><h2>Data ordine:</h2><input type="date" name="data_ordine" required></div>';
	$out.='<div class="margin_left margin_top">';
	$out.='<h2>Centrale di acquisto:</h2><h3>(* inserire almeno 3 caratteri)</h3>';
	$out.='<div class="float_left"><input class="ui-widget" name="nome_location" id="nome_location"  required placeholder="inserire la sede"/></div>';
	$out.='<div><input type="hidden" class="ui-widget" name="id_location" id="id_location" val=""/></div>';
	$out.='</div>';
	$out.='<div class="pulisci"></div>';
	$out.='<div class="margin_left margin_top">';
	$out.='<h2>Fornitore:</h2><h3>(* inserire almeno 3 caratteri)</h3>';
	$out.='<div><input type="text" class="ui-widget" name="cognome" id="cognome_fornitore" val="" required placeholder="inserire il fornitore"/></div>';
	$out.='<div><input type="hidden" class="ui-widget" name="id_fornitore" id="id_fornitore" val=""/></div>';
	$out.='<div id="nuovo_fornitore" class="button_new margin_top" ><h3><a class="text_white" href="" onClick=" return false">Carica un nuovo fornitore</a></h3></div>';
	$out.='</div>';
	$out.='<div class="pulisci"></div>';
	$out.='<div id="lista_prodotti">';
	$out.='<div class="aggiungi_prodotto button_new margin_left margin_top float_left" ><h3><a class="text_white" href="" onClick="return false">aggiungi un prodotto all\'ordine</a></h3></div>';
	$out.='<div id="elimina_prodotto" class="button_new margin_left"><h3 class="text_white"><a href="" class="text_white" onClick="return false">elimina dall\'ordine</a></h3></div>';
	$out.='<div id="nuovo_prodotto" class="button_new margin_left"><h3 class="text_white"><a href="" class="text_white" onClick="return false">carica un nuovo prodotto</a></h3></div>';
	$out.='<div class="pulisci"></div>';
	$out.='<div id="ordine_prodotto" class="margin_left margin_top ordine">';
	$out.='<div class="float_left" ><h3>Prodotto:</h3><input id="nome_prodotto" class="prodotto" type="text" name="product" required placeholder="nome prodotto"/></div>';
	$out.='<div><input type="hidden" class="ui-widget" name="id_prodotto" id="id_prodotto" val=""/></div>';
	$out.='<div class="float_left margin_left" ><h3>Quantità:</h3><input type="number" id="val_qnt" class="val_qnt" name="quantity" required placeholder="quantità prodotto"/></div>';
	$out.='<div class="float_left margin_left"><h3>Tipo quantità:</h3><select id="type_qnt" class="type_qnt" name="type_qnt"><option value="">Selezione il tipo quantità</option><option value="grammi">Grammi</option><option value="kg">Kg</option><option value="unità">Unità</option><option value="confezione">Confezione</option></select></div>';
	$out.='</div>';
	$out.='<div class="pulisci"></div>';
	$out.='</div>';
	$out.='<div><input id="submit" class="button_new margin_left margin_top text_white" type="submit" value="invia" onClick="return false"/></div>';
	$out.='<div class="pulisci"></div>';
	$out.='</form>';

e questo è invece il codice per la creazione dei nuovi input per l'inserimento dei dati
HTML:
$('.aggiungi_prodotto').on('click', 'a', function(e){
		e.preventDefault()
		var product = '<div class="float_left" ><h3>Prodotto:</h3><input type="text" id="nome_prodotto" class="autocomplete prodotto" name="product" required placeholder="nome prodotto"/></div>'
		var quantity ='<div class="float_left margin_left" ><h3>Quantità:</h3><input class="val_qnt"  type="text" name="quantity" required placeholder="quantità prodotto"/></div>';
		var type_qnt ='<div class="float_left margin_left"><h3>Tipo quantità:</h3><select class="type_qnt" name="type_qnt"/></select></div>';
		var option_type_qnt ='<option value="">Selezione il tipo quantità</option><option value="grammi">Grammi</option><option value="kg">Kg</option><option value="unità">Unità</option><option value="confezione">Confezione</option>';
		var pulisci = '<div class="pulisci"></div>';
		str_html = '<div id="ordine_prodotto" class="margin_top margin_left ordine">' + product + quantity + type_qnt + pulisci + '</div>';
		
		$('#lista_prodotti').append(str_html);
		$('#ordine_prodotto').insertAfter('#ordine_prodotto:last');
		$('.type_qnt').append(option_type_qnt);
	
		var name_product = $('#nome_prodotto');
		$.each(name_product, function(){
			$('.autocomplete').autocomplete({
			source: "ris_location.php?azione=prodotti",
			minLength: 3,
			
		});		
		});
	});

Spero che qualcuno riesca a darmi una mano, perchè sono fermo da 10 giorni, le ho provate tutte le soluzioni che mi venivano in mente, ma niente.....

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ho creato un form con alcuni campi che vengono aggiunti con jquery mediante una funzione onClick.
una volta inseriti i dati, non riesco ad inviarli tutti, ma mi viene stampata (ho fatto varie prove con console.log) solo l'ultima serie di dati.

<input type="text" id="nome_prodotto" name="product" ......
per risolvere devi dare un nome diverso ai campi di ciascuna riga rispetto alle altre, oppure usare un'array per ciascun campo
come può il "sistema" identificare cose diverse con nomi uguali ?
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Grazie, immaginavo che il problema potesse essere quello. Una conferma devo creare un name univoco? Come posso fare? Oppure sai suggerirmi come farr un array per ogni input è poi inviare i dati?
Grazie mille
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ti posto un esempio che puoi eseguire senza "timori", non fa nulla se non aggiungere/togliere righe e fare il post visualizzando quello che riceve,
in realtà molto banalmente aggiungo il valore di un contatore dopo il nome del campo
(scusa se non modifico il tuo ma è questione anche di tempo)
ciao
Marino

ps lo script è lungo perché ci sono anche campi a tendina ....

PHP:
<?php
if (empty($_POST)) {
?>
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    <!-- <link href="real-world.css" rel="stylesheet" type="text/css"> -->

    <script src="http://code.jquery.com/jquery-latest.js"></script>

    <script type='text/javascript'>
//<![CDATA[
	$(document).ready(function() {
		var currentItem = 1;
		AddRow(currentItem);

		$('#addnew').click(function(){
			currentItem++;
			AddRow(currentItem);
		});

		$('#removelast').click(function(){
			var rowID = '#row'+currentItem+'b'
			$(rowID).remove();
			var rowID = '#row'+currentItem+'a'
			$(rowID).remove();
			currentItem--;
			$('#items').val(currentItem);
		});

		function AddRow(currentItem) 
		{
			var strToAdd = NewRow(currentItem)
			$('#data').append(strToAdd);
			$('#items').val(currentItem);
		};

		function NewRow(currentItem) 
		{
			var strToAdd
='<tr id="row'+currentItem+'a">'
+'<td>Year</td>'
+'<td>:</td>'
+'<td>'
+'<select name="year'+currentItem+'" id="year'+currentItem+'" >'
+'<option value="2015">2015</option>'
+'<option value="2014">2014</option>'
+'</select>'
+'</td>'
+'<td>Month</td>'
+'<td>:</td>'
+'<td width="17%">'
+'<select name="month'+currentItem+'" id="month'+currentItem+'">'
+'<option value="1">January</option>'
+'<option value="2">February</option>'
+'<option value="3">March</option>'
+'<option value="4">April</option>'
+'<option value="5">May</option>'
+'<option value="6">June</option>'
+'<option value="7">July</option>'
+'<option value="8">August</option>'
+'<option value="9">September</option>'
+'<option value="10">October</option>'
+'<option value="11">November</option>'
+'<option value="12">December</option>'
+'</select>'
+'</td>'
+'<td width="7%">Week</td>'
+'<td width="3%">:</td>'
+'<td width="17%">'
+'<select name="week'+currentItem+'" id="week'+currentItem+'" >'
+'<option value="1">1</option>'
+'<option value="2">2</option>'
+'<option value="3">3</option>'
+'<option value="4">4</option>'
+'</select>'
+'</td>'
+'<td width="8%">&nbsp;</td>'
+'<td colspan="2">&nbsp;</td>'
+'</tr>'
+'<tr id="row'+currentItem+'b">'
+'<td>Actual</td>'
+'<td>:</td>'
+'<td width="17%">'
+'<input name="actual'+currentItem+'" id="actual'+currentItem+'" type="text" />'
+'</td>'
+'<td width="7%">Max</td>'
+'<td width="3%">:</td>'
+'<td>'
+'<input name="max'+currentItem+'" id="max'+currentItem+'" type="text" />'
+'</td>'
+'<td>Target</td>'
+'<td>:</td>'
+'<td>'
+'<input name="target'+currentItem+'" id="target'+currentItem+'" type="text" />'
+'</td>'
+'</tr>';
			return strToAdd;
		};
	});
//]]>
    </script>

    <style>
    </style>

  </head>

  <body>

    <form name='myform' method='POST'>
      <table class="dd" width="100%" id="data">
        <tbody>
        </tbody>
      </table>

      <input type="submit" name="submit"                     value="SubmitValues" />
      <input type="button" name="addnew"     id="addnew"     value="Add new item" />
      <input type="button" name="removelast" id="removelast" value="Remove last item" />
      <input type="hidden" name="items"      id="items"      value="0" />
    </form>
  </body>
</html>
<?php
}
else
{
  while(list($chiave, $valore)=each($_POST))
  {
    ${$chiave}=trim(strip_tags($valore));
    echo $chiave." = ".${$chiave}."<br />";
  }
}
?>
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Ti ringrazio moltissimo per l'aiuto.
Domani mi studierò quello che mi hai mandato.
Intanto grazie ancora.
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Incrementare nodo in ciclo for-each XML 6
B Completare il seguente ciclo affinché stampi tutto l’array al contrario PHP 3
W MySQL ciclo in SELECT MySQL 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
motleyrulez Aiuto con un ciclo PHP 0
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
S [PHP] Ciclo foreach su più array PHP 2
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
N [PHP] Controllare condizione ciclo While PHP 9
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
V Ciclo for per Pulsante in JavaScript Javascript 7
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
C [PHP] Ciclo for dinamico PHP 14
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
Monital [PHP] ciclo su un file json molto grande PHP 1
M [PHP] Errore in ciclo foreach PHP 1
O Ciclo non visualizzato PHP 1
M problema ciclo javascript Javascript 4
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
F Problema codice in un ciclo while PHP 2
V Generare array da ciclo while e prendere valori casuali PHP 4
I tabella con ciclo, recupero dati PHP 3
Monital Problema con un ciclo for. PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
S Ciclo PHP molto complesso PHP 2
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
K Problema con update di un database in un ciclo Classic ASP 1
P JAVA 8 Ciclo For all'interno di un altro Ciclo For Java 3
B ciclo in PHP per creare numero progressivo PHP 2
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Caricare più google maps con un ciclo Javascript 1
N Stranezza sul ciclo while PHP 1
M Aiuto su come procedere con un ciclo foreach PHP 4
A Tabella e ciclo for PHP 7
N Invio Form con un Ciclo For Javascript 8
P Conteggio con ciclo while PHP 1

Discussioni simili