Ecco qui: il programma è relativamente semplice ma richiede parecchi script.
Il primo che dovrai caricare è resetta.php che, come da nome, resetterà tutte le variabili di sessione e richiamerà (include) il form di inserimento.
PHP:
session_start();
$_SESSION['codice']='';
$_SESSION['articolo']='';
$_SESSION['messaggio']='';
$_SESSION['id']='';
include('form.php');
Quindi segue il form molto stilizzato:
PHP:
session_start();
$messaggio = $_SESSION['messaggio'];
echo '<h2><u><center>Form di inserimento</center></u></h2><br><br>';
echo '<form action="contrform.php" method="get">';
echo 'Codice articolo: ';
echo '<input type="text" name="cod" size="10"><br><br>';
echo 'Descrizione: ';
echo '<input type="text" name="art" size="50"><br><br><br>';
echo '<input type="submit" name="submit" Value="invia"><br><br>';
echo '<a name="mess"></a>';
echo $messaggio;
echo '</form>';
All'inizio, come vedi, ho richiamato e successivamente (dopo il form) visualizzato il messaggio che, essendo inizialmente nullo, non visualizza niente. Dopodiché, premendo INVIA, il comando passerà al programma che si occuperà dei controlli: per il momento l'unico controllo che fa è se il codice è duplicato o meno (anche la descrizione dell'articolo potrebbe essere duplicata)
PHP:
$codice = $_GET['cod'];
$articolo = $_GET['art'];
session_start();
$_SESSION['codice'] = $codice;
$_SESSION['articolo'] = $articolo;
include('conn.php');
$connessione = new mysqli($host, $user, $password, $db);
if ($connessione->connect_errno) {
echo "Connessione fallita: ". $connessione->connect_error . ".";
exit();
}
if (!$result = $connessione->query("SELECT * FROM ARTICOLI WHERE CODICE = '$codice'")) {
echo "Errore della query: " . $connessione->error . ".";
}else{
if ($result->num_rows > 0) {
$_SESSION['messaggio'] = 'ATTENZIONE!! Codice duplicato';
header("location: form.php#mess");
} else {
include('scrivi.php');
}
}
$connessione->close();
Se il codice è duplicato ti rimanda al form con un messaggio d'errore altrimenti richiama scrivi.php che si ocuperà dell'inserimento in tabella del record, vvisandoti con un opportuno messaggio.
PHP:
session_start();
$codice = $_SESSION['codice'];
$articolo = $_SESSION['articolo'];
include('conn.php');
$connessione = new mysqli($host, $user, $password, $db);
if ($connessione->connect_errno) {
echo "Connessione fallita: ". $connessione->connect_error . ".";
exit();
}
if (!$connessione->query("INSERT INTO ARTICOLI (CODICE,ARTICOLO) VALUES
('$codice','$articolo')")) {
echo "Errore della query: " . $connessione->error . ".";
}
if (!$result = $connessione->query("SELECT * FROM ARTICOLI WHERE CODICE = '$codice'")) {
echo "Errore della query: " . $connessione->error . ".";
}else{
if($result->num_rows > 0) {
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$id = $row['ID'];
}
}
}
$_SESSION['messaggio']='OK!! Il record è stato correttamente inserito. Il suo ID è: '.$id;
header("location: form.php#mess");
$connessione->close();
Come vedi, in caso di codice duplcato, vieni rimandato al form dove troverai entrambi i campi vuoti. Se invece vuoi che ci siano già le variabili ti basterà, dopo averle opportunamente richiamate, aggiungere al form la clausola
value in questo modo:
PHP:
value = "'.$nomevariabile.'";
Non ho inserito conn.php che contiene le variabili di connessione e l'ho testato con la tabella ARTICOLI.
Zorro