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 | 10/14 | 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>