Allora, ho fatto una tabella più semplice, ed ho poi fatto una foto dove si vede il risultato dell'inserimento nel form, con affianco la finestra del prompt di mysql, in modo da avere una visione di insieme più chiara:



Ora, come potete vedere io ho inserito una sola row, e gli viene assegnato id2, lasciando vuoto id1. Probabilmente sbaglio io qualcosa, forse in questo modo il form assegna un id a caso?

Poi il secondo problema, che qui dovrebbe capirsi meglio: dovrebbe stampare solo il valore di $nome, invece stampa anche quello di $incarico. Per non parlare del fatto che compaiono apici e parentesi. Vi rimetto il listato, modificato per questa tabella:

Codice PHP:
<html>
<head>
<titleForm Inserimento Database</title>

</head>
<body>

<form method="post" action="form_inserimento_database.php">
Nome: <input type="text" name="nome" size="20" maxlength=50" />

Incarico: <input type="text" name="incarico" size="20" maxlength=50" />

<input type="submit" value="inserisci" />
</form>


<?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 politici " .
"(nome, incarico)" .

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

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: 
"
;
print(
"ID: " .mysql_insert_id($db). "
"
);
print
"Nome: " .$nome"
"
;
print
"Incarico: " .$incarico"
"
;
}

mysql_close($db);
?>

</body>
</html>
Ho provato adesso anche modificando in questo modo:
Codice PHP:
print"Nome: $nome 
"
;
print
"Incarico: $incarico 
"

Il risultato non cambia. Inserendo una nuova row, gli da id4; come se riempisse solo i campi pari. (sic!)