• User

    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 5

    grazie


  • User Attivo

    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...


  • User

    Perfetto, grazie !
    si non l'avevo messo nel form per brevità..

    Grazie ancora

    ciao !


  • User

    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


  • User Attivo

    ... 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.


  • User

    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 :ciauz:

    
    <?
    //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 !";
        }
    }
    ?>
    
    

  • User Attivo

    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.


  • User

    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


  • User Attivo

    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).


  • User

    Ah ok ! perfetto !
    Grazie infinite, molto gentile

    MP