Un formulaire avec entrée dans une base mysql

Un script simple contenant tout-en-un un formulaire, son script de traitement et la liste du contenu de la base. Minimal pour voir toutes les étapes et les précautions d’usage.

Précédent | 9/16 | Suivant

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>