- Home
- Categorie
- Coding e Sistemistica
- PHP
- 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