Toutes les parties rassemblées ici sont parfois placées dans des fichiers distincts : formulaires et traitement par exemple peuvent être dissociés facilement pour des raisons de facilité.
Le script ci présent contient des informations de configuration que vous devez adapter à votre environnement de test pour utiliser les scipts :
– le nom du serveur (souvent localhost)
– le nom d’utilisateur et le mot de passe
– la base est à créer manuellement, elle s’appelle "mysql_tests"
Une fois que c’est fait, ça devrait marcher !
Le code est commenté pour que vous puissiez lire ligne par ligne ce qu’il fait.
Le zip attaché à cet article contient le script complet avec un css.
<?php
// ouverture de la connexion - ici pour mamp -
$hote="localhost";
$utilisateur="root";
$password="root";
// ouverture de la connexion
$connexion = mysql_connect($hote,$utilisateur,$password);
// choix de la base CD_test
// ici il faudrait pour être complet tester que la base existe, au besoin la creer
// si vous utilisez ce script, vous devez donc créer manuellement la table mysql_tests dans phpmyadmin
mysql_select_db('mysql_tests',$connexion);
// on teste pour voir si la base existe
$requete="SELECT * FROM record;";
$requete=mysql_query($requete,$connexion);
// si la table n'existe pas, la créer
if (!$requete){
// contient un id auto-incrementiel, un nom, un contenu, et une date
$requete="CREATE TABLE record (id int(7) NOT NULL auto_increment, nom varchar(255), contenu TEXT, date datetime, PRIMARY KEY (id))";
mysql_query($requete,$connexion);
}
// initialiser la variable message
$message="";
// tester que post contient ce qui nous interesse, c'est à dire au moins une array associative "entrer"
// traiter ce qui a été envoyé par le formulaire
if(isset($_POST['entrer'])){
// on sécurise le contenu avec addslashes
$contenu=addslashes($_POST['contenu']);
// on prépare une date
$date = date("Y-m-d H:m:s");
// on insère
$requete="INSERT INTO record ( nom,contenu,date ) VALUES ('entree','$contenu','$date')";
$envoi=mysql_query($requete,$connexion);
// si c'est reussi, le dire dans le message
if($envoi){
$message .="<div id='message'>Nouveau contenu entré</div>";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Formulaire simple d'échange avec une base de données</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<div id="general">
<h1>Fill base</h1>
<p>
Cette page contient tout-en-un un formulaire, son script de traitement et la liste de son contenu. Un script très minimal qui permet de voir toutes les étapes.
</p>
<?php echo $message; ?>
<form method="post" action="form_et_table.php">
<textarea name="contenu"></textarea>
<input type="submit" name="entrer" value="Entrer dans la base" />
</form>
<hr />
<h2>Contenu de la base</h2>
<table>
<?php
$larequete="SELECT * FROM record ORDER BY id DESC";
$requete = mysql_query($larequete,$connexion);
$total = mysql_num_rows($requete);
if ($total) {
while($row = mysql_fetch_array($requete)) {
// ecriture des tags de retour
echo "<tr>\n";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['nom']."</td>";
echo "<td>".$row['contenu']."</td>";
echo "<td>".$row['date']."</td>";
echo "\n</tr>\n";
}
} else {
echo "<tr><td>pas d'entrée</td></tr>";
}
?>
</table>
</div>
</body>
</html>