• User

    Form inserimento dati nel database salta la prima riga di una tabella

    Salve,
    sono giorni che non riesco a risolvere questo problema. Ho fatto un form di inserimento dati collegato ad un programma php, con stampa dei dati inseriti:
    [PHP]
    <?php

    $host='localhost';
    $user='root';
    $password='';
    $database='rubrica';

    $db=mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server $host");

    mysql_select_db($database, $db)
    or die ("Impossibile connettersi al database $database");

    $query="insert into anarchy " .
    "(nome, incarico, email)" .

    "VALUES('" .
    @$_REQUEST['nome'] . "','" .
    @$_REQUEST['incarico'] . "','" .
    @$_REQUEST['email'] . "')";

    $nome=@$_REQUEST['nome'];
    $incarico=@$_REQUEST['incarico'];
    $email=@$_REQUEST['email'];

    if (!mysql_query($query,$db))
    {echo mysql_error() ." attenzione, Impossibile inserire il record nel database";}
    elseif(@$_REQUEST==FALSE)
    {echo ("Inserisci i dati");}
    else
    {print "Il record è stato inserito: <br/>";
    print("ID: " .mysql_insert_id($db). "<br/>");
    print"Nome: $nome <br/>";
    print"Incarico: $incarico <br/>";
    print"eMail: $email <br/>";
    }

    mysql_close($db);
    ?>
    [/PHP]

    Ora il problema è che data una tabella vuota, comincia ad inserirmi i dati a partire da Id2, lasciando Id1 vuoto. Se provo a fare l'inserimento direttamente dal prompt di mysql il problema non si verifica. In ogni caso vi riporto anche il modo in cui ho creato la tabella, non si sa mai:

    
    create table nometabella 
    (id int(5) auto_increment not null primary key, 
    nome varchar(50) not null, 
    incarico varchar(50) not null, 
    email varchar(50) not null);
    
    

    Per esempio, se dal form inserisco Paperino, Paperopoli, mi riempie la tabella così:

    
    [1][    ][     ]
    [2][Paperino][Paperopoli]
    [3][Topolino][Topolinia  ]
    eccetera
    
    

    Ho provato allora ad inserire dal prompt di mysql direttamente il primo dato, ma poi il form salta l'id2 e parte dal tre:

    
    [1][Paperino][Paperopoli]
    [2][           ][              ]
    [3][Topolino][Topolinia  
    
    

    Spero di aver spiegato abbastanza chiaramente il problema. Non riesco proprio a capire dove sto sbagliando. Potete aiutarmi per favore? grazie.


  • ModSenior

    Ciao Giovanni Pili,
    se crei la tabella e poi inserisci dati, e ne cancelli uno il contatore continua normalmente, a meno che non modifichi il prossimo valore che viene preso, o invece di cancellare tutti i dati presenti svuoti la tabella.


  • User

    Ma non ho cancellato nessun dato, mi salta proprio la prima riga, partendo dal Id2. Se invece il primo dato lo inserisco dal prompt di mysql, allora poi dal form comincia ad inserirmi i dati dall'Id3 saltando il 2.

    Vorrei capire perché lo fa, cosa sto sbagliando?


  • ModSenior

    Te l'ho detto, svuota la tabella e fai la prova senza passare dal prompt mysql.
    TI stai confondendo molto facendo le prove cosi.


  • User

    @Thedarkita said:

    Te l'ho detto, svuota la tabella e fai la prova senza passare dal prompt mysql.
    TI stai confondendo molto facendo le prove cosi.

    Va bene adesso provo a svuotarla dall'editor. Però preciso che le prove le sto facendo cancellando proprio la tabella e rifacendola vuota (lo avrò fatto decine di volte ormai) anche senza passare dal prompt, mi da sempre lo stesso problema. Adesso provo così e ti faccio sapere.


  • User

    Grazie...__!
    Funziona tutto a meraviglia adesso, ma cos'era allora? una specie di bug?


  • ModSenior

    No, come ti dicevo nel primo post, se fai un inserimento e dopo lo cancelli, l'autoincrement rimane impostato a 2 per il successivo, non torna ad 1 per evitare problemi.
    Per evitare ciò o svuoti la tabella o inserisci manualmente che il prossimo valore da inserire deve essere 1.