formulaire avec insertion dans une base de donnee
Par aurelien gerits le dimanche, 18 avril 2010, 13:50 - travail dans base de donnee - Lien permanent
Construire un formulaire avec insertion dans une base de donnée peut être un travail fastidieux.
Afin d'y remédier,
nous allons construire un formulaire très simple qui va insérer du contenu dans deux champs spécifique.
Le formulaire contiendra uniquement deux champs qui vont ajouter le contenu du sujet et du message.
N'oublier pas de remplir le fichier de configuration copier au préalable dans votre dossier voir la configuration de la base de donnee.
Pour rappel, le fichier est très simpliste et aucune balise méta n'est présente ainsi que la gestion ajax.
Tout d'abord,
Créer un fichier nommé forms.php qui contiendra notre formulaire.
<?php
//La classe du formulaire pour ajouter le contenu
include 'class.forms.php';
$iforms = new forms();
?>
<form id="forms-message" method="post" action="<?php $_SERVER['PHP_SELF'];?>" style="margin-left:10px;">
<?php print $iforms->msg_constructor();?>
<fieldset>
<table>
<tr>
<td class="label"><label for="subject">Sujet(*) :</label></td>
</tr>
<tr>
<td><input type="text" id="subject" name="subject" class="ui-widget-content ui-corner-all" value="" size="50" /></td>
</tr>
<tr>
<td class="label"><label for="contentmsg" class="inlinelabel">Contenu (*):</label></td>
</tr>
<tr>
<td><textarea name="content" id="contentmsg" class="ui-widget-content ui-corner-all" cols="50" rows="10"></textarea></td>
</tr>
</table>
</fieldset>
<div style="margin:5px;">
<input type="submit" class="ui-state-default ui-corner-all" name="submit"value="Enregistrer" />
</div>
</form>
Ensuite créer un fichier nommé class.forms.php
<?php
class forms{
/**
* subject
* @var string
*/
public $subject;
/**
* contentmsg
* @var string
*/
public $content;
/**
* Instance db
* @var void
*/
private $db;
/**
* Constructor
*/
function __construct(){
/**
* Le sujet de notre message
*/
if(isset($_POST['subject'])){
$this->subject = magixcjquery_form_helpersforms::inputCleanQuote($_POST['subject']);
}
/**
* Le contenu de notre message
*/
if(isset($_POST['content'])){
//Nettoyage du contenu (voir helpers forms)
$this->content = magixcjquery_form_helpersforms::inputClean($_POST['content']);
}
/**
* test pour vérifier si la classe existe bien <img src="/themes/magixcjquery/smilies/wink.png" alt=";)" class="smiley" />
*/
if(class_exists('db_forms')){
$this->db = new db_forms();
}
}
/**
* Insertion d'une nouveau message
* @access public
*/
public function msg_constructor(){
/**
* On test les variables
*/
if(isset($this->subject) AND isset($this->content)){
/**
* Si les champs sont vide, on retourne un message d'erreur
*/
if(empty($this->subject) OR empty($this->content)){
$fetch = '<div class="ui-state-error ui-corner-all" style="font-weight:bold;width:500px;padding:5px;">Les champs ne sont pas tous rempli</div>';
}else{
/**
* On insert et retourne un message
*/
$this->db->i_message(
$this->subject,
$this->content
);
$fetch = '<div class="ui-state-highlight ui-corner-all" style="font-weight:bold;width:500px;padding:5px;">Le message à été enregistré avec succès</div>';
}
return $fetch;
}
}
}
/*La classe de nos fonctions pour interagir sur la base de donnée*/
class db_forms{
/**
*
* @var void
*/
protected $layer;
//Constructor
function __construct(){
//Appel de magix DB
$this->layer = new magixcjquery_magixdb_layer();
}
/**
* ######################## New Message ####################
*/
public function i_message($subject,$content){
// Notre requête SQL avec nos deux paramètres
$sql = 'INSERT INTO message (subject, content) VALUE (:subject, :content)';
$this->layer->insert($sql,
array(
':subject'=> $subject,
':content'=> $content
));
}
}
?>
ps: Correctif ce 23 Avril 2010 avec l'insertion d'un pack complet


Commentaires
u