Grazie per i suggerimenti. Ho aggiornato lo script e ho notato queste altre problematiche:
1) Quando premo su INVIA trovo un nuovo record in phpMyAdmin ma non nella pagina;
2) Se faccio un reflesh della pagina per far comparire il nuovo record in bacheca.php continuo a scrivere lo stesso record nel database;
Per risolvere il primo problema scrivo:
Codice PHP:
header("Location: /bacheca/bacheca.php");
ma non mi compare più la lista di record nella pagina bacheca.php.
Per risolvere il problema 2 cerco di distruggere le variabili creare e POST ma non risolvo:
Codice PHP:
unset($GLOBALS['nome']);
unset($GLOBALS['messaggio']);
unset($GLOBALS['email']);
unset($nome);
unset($messaggio);
unset($email);
$_POST = array();
3) Quando inserisco il codice in database ottengo questo errore:
codice:
Notice in .\import.php#704
Undefined variable: import_text
Backtrace
esso non pregiudica il funzionamento del programma ma mi piacerebbe sapere come dovrei riscrivere il codice per evitare incorrettezze.
Il nuovo script è questo:
Codice PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
label, input, textarea {
margin: 1em;
}
</style>
<title>Bacheca elettronica</title>
</head>
<body>
<form method="post" action="">
<label for="name">Nome</label>
<input type="text" name="name" id="name"/><br>
<label for="mail">Email</label>
<input type="text" name="mail" id="mail"/><br>
<label for="message">Messaggio</label><br>
<textarea rows="5" cols="40" name="message" id="message"></textarea><br>
<input type="submit" value="Invia"/>
</form>
<?php
//Parametri del database
//Parametri del database
$db_host = "localhost"; //posizione in cui si trova il database
$db_user = "admin"; //utente del database
$db_password = "password"; //password del database
$database = "bacheca"; //nome del database
$db_bacheca = "bacheca"; //nome della tabella del database
//Controllo dati
$error= "";
if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome
$nome = strip_tags($_POST['name']);
}
elseif(isset($_POST['name'])){
$error .= "Nome mancante.<br />";
}
if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido
$email = $_POST['mail'];
}
elseif(isset($_POST['mail'])){
$error .= "Email mancante o non valida.<br />";
}
if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio
$messaggio = strip_tags($_POST['message']);
}
elseif(isset($_POST['message'])){
$error .= "Inserire un messaggio.<br/>";
}
//Inizio Connessione al DB
$db = mysql_connect($db_host, $db_user, $db_password);
$db_select = mysql_select_db($database, $db) or die ('Errore');
echo mysql_error($db);
//Salvataggio messaggio
if(isset($nome,$email,$messaggio)){
$err_database = mysql_error()."<p>Errore di accesso al database. Riprovare più tardi, nel caso, contattare il web master</p>";
$sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$email."','".$messaggio."')";
//Invio dati al database
$insert = mysql_query($sql) or die ($err_database);
}
else{
echo "<p>".$error."</p>";
}
$err_database = mysql_error()."<p>Al momento non sono presenti avvisi in bacheca.</p>";
$bacheca = mysql_query("SELECT * FROM ".$db_bacheca." ORDER BY data_messaggio DESC") or die ($err_database);
$estrazione = mysql_fetch_array($bacheca);
$n = 0;
$max = 5;
while($estrazione = mysql_fetch_array($bacheca) and $n < $max){
echo "
<div>
<p>".$estrazione["messaggio"]."<br/>
Autore: ".$estrazione["nome"]."<br/>
Data: ".$estrazione["data_messaggio"]."<br/>
Email: ".$estrazione["email"]."</p>
</div>
";
$n++;
}
mysql_close();
?>
</body>
</html>
Il nuovo database questo:
codice:
CREATE TABLE bacheca (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
messaggio TEXT NOT NULL,
data_messaggio DATETIME NOT NULL DEFAULT NOW()
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;