- Home
- Categorie
- Coding e Sistemistica
- Coding
- Aggiungere righe al db con valori da 0 a ...
- 
							
							
							
							
							Aggiungere righe al db con valori da 0 a ...Ciao 
 Supponiamo che il mio db ha due campi: ID (auto-increment) e NUMERO (varchar)
 vorrei un input text in cui l'utente può inserire un numero da 0 a 20. Dopo aver inserito il valore numerico XX e aver premuto sul button SALVA mi aggiunge XX righe al db mysql, ognuna con un valore che va da 0 (prima riga), 0+1 (seconda riga)...ecc... fino a XX (ultima riga).Come posso fare ? Questa è la base [PHP]Aggiungi <input type="number" maxlength="2"/> righe al db <input type="submit" value="SALVA"/>[/PHP] Il risultato dovrebbe essere che se metto: 5 nella casella di testo ottengo: ID NUMERO 
 ... ...
 ... ...
 ... ...
 6 1
 7 2
 8 3
 9 4
 10 5grazie 
 
- 
							
							
							
							
							Innanzitutto attribuisci un valore NAME all'input di testo e mettilo in un form, altrimenti la pagina successiva non sa come risconoscerlo. Inoltre l'esempio si contraddice con la richiesta, hai detto che vuoi un intervallo di valori che va da 0 al numero scelto, se includi anche 0 aggiungi numero scelto + 1 righe. Si fa con ciclo for, eventualmente se ti serve che parta da uno anziché da zero modificalo. Se per esempio il campo di input ha come attributo NAME il valore "num_aggiunte", [php] 
 $num_aggiunte = $_POST["num_aggiunte"];
 for ($i = 0; $i <= $num_aggiunte; $i++) {
 $sql = "INSERT INTO tabella (numero) VALUES ('$i')";
 $query = mysql_query($sql);
 }
 [/php]Perché il campo numero è un VARCHAR? Se è un numero deve essere INT... ti ho messo gli apici attorno alla $i perché è un VARCHAR, se decidi di modificarlo in INT togligli gli apici attorno... 
 
- 
							
							
							
							
							Perfetto, grazie ! 
 si non l'avevo messo nel form per brevità..Grazie ancora ciao ! 
 
- 
							
							
							
							
							Buonasera 
 avrei una seconda domanda:
 se nel form ho anche un input che deve essere ripetuto UGUALE nelle medesime righe cui ho dato dei valori consecutivi...come posso fare ?
 nell'esempio è il campo UTENTE (sulla base di quello precedente)ID NUMERO UTENTE 
 ... ... 1
 ... ... 1
 ... ... 1
 6 1 1
 7 2 1
 8 3 1
 9 4 1
 10 5 1
 
- 
							
							
							
							
							... devi aggiungere il campo "utente" all'elenco dei campi e il valore 1 all'elenco valori nella query. Il for non condiziona minimamente le variabili statiche che non dipendono dalla sua $i. 
 
- 
							
							
							
							
							Perdonami ma non riesco ad integrare il valore che inserisco nel campo ID_USER nella query.. devo fare una altra chiamata SQL ? potresti postarmi un esempio ? Grazie  <? //connect to database $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbname = 'monitor'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname); //NOTE: MAKE SURE YOU DO YOUR OWN APPROPRIATE SERVERSIDE ERROR CHECKING HERE!!! if(!empty($_POST) && isset($_POST)) { //make variables safe to insert $num_aggiunte = mysql_real_escape_string($_POST['num_aggiunte']); $ID_USER = mysql_real_escape_string($_POST['ID_USER']); $num_aggiunte = $_POST["num_aggiunte"]; for ($i = 1; $i <= $num_aggiunte; $i++) { $sql = " INSERT INTO table (NOME) VALUES ($i) "; $query = mysql_query($sql); } if(!$query) { echo "ERRORE 103"; } else { echo "INSERITI !"; } } ?>
 
- 
							
							
							
							
							C'è una terribile confusione tra i campi della tabella ed i nomi delle variabili. Che cos'è il campo NOME? Cosa ci deve finire dentro? 
 Spiega correttamente da quanti campi è formata la tabella, come si chiamano e cosa deve finire dentro ad ogni campo.
 
- 
							
							
							
							
							Pardon, ho fatto un pò di confusione nei copia-incolla... 
 allora supponiamo che ho una tabella con due campi chiamati: NUMERO e NOME
 nel mio form ho due input: un input in cui posso scrivere solo un numero da 1 a 9 ed un input in cui posso scrivere un testo qualsiasi.
 supponiamo che scrivo 3 nel primo input ed il nome MARIO nel secondo input
 premendo poi il submit vorrei ottenere nel db:
 NUMERO NOME
 1 MARIO
 2 MARIO
 3 MARIO(ovviamente non pariamo di un campo A.I. ... ma vorrei usare la funzione for) Grazie 
 
- 
							
							
							
							
							Ok, provo a rispiegartelo: il FOR ripete solo il blocco di istruzioni in esso compreso, non ha effetto su variabili che non dipendono dalla $i. 
 La tua query diventa:[php] 
 $sql = "INSERT INTO (numero, nome) VALUES ('$i', '$nome')";
 [/php]dove $nome è uguale a $_POST["nome"], cioè il nome ricevuto dall'input dalla pagina precedente (es. Mario). 
 
- 
							
							
							
							
							Ah ok ! perfetto ! 
 Grazie infinite, molto gentileMP