Merci à vous.
Je vous met un exemple de ce que j'ai fait où je sens que ca va vous hérissez les poils et que j'ai déjà limite honte à vous le montrer.

J'attendrais vos remarques qui j'espère seront constructives.
Une partie du fichier template :
<!-- Affichage conditionnel si volont? d'ajouter une BD -->
<div>[onload;block=div;when [var._SESSION.ajout_bd;noerr]=='ok']
<div class='titre_action_bd'>[var.ajouter_une_bd]</div>
<fieldset class='ajout_bd_0'>
<form action='./bd.php' method='post'>
<label>[var.serie_bd] : </label>
<select name='serie_bd' class='ajout_bd_1'>
<option value='0'>[var.selectionner_1_bd]</option>
<option value='[liste_series.val;block=option]'>[liste_series.val]</option>
</select>
<br />
<label>[var.titre_bd] : </label><input type='text' name='titre_bd' class='ajout_bd_2' />
<br />
<label>[var.numero_bd] : </label><input type='text' name='numero_bd' class='ajout_bd_3' />
<br />
<label>[var.possesseur] : </label>
<select name='le_possesseur' class='ajout_bd_4'>
<option value='0'>[var.selectionner_1_possesseur]</option>
<option value='[liste_possesseurs.val;block=option]'>[liste_possesseurs.val]</option>
</select>
<br />
<div class='conseil_bd'>* [var.conseils_bd]</div>
<input type='submit' name='ajouter' value="[var.enregistrer_bd]" class='b_enregistrer_bd'>
</form>
</fieldset>
</div>
<!-- Affichage conditionnel si BD bien ajout?e -->
<div>[onload;block=div;when [var._SESSION.recap_ajout_bd;noerr]=='ok']
<form action='./bd.php' method='post'>
<label>[var.ajout_bd_termine].</label>
</form>
</div
et le fichier php qui interagit :
// Session pour les variables
session_start();
// Inclusion de tous les fichiers
include_once('../../commun/tbs_class_php5.php'); // Appel de la librairie TinyButStrong
// Initialisation des variables qui permettent les affichage conditionnels du HTML
$_SESSION['ajout_bd'] = '0';
$_SESSION['recap_ajout_bd'] = '0';
$_SESSION['ajouter_serie_bd'] = '0';
$_SESSION['recap_ajout_serie_bd'] = '0';
$_SESSION['liste_bd'] = '0';
$_SESSION['lister_serie_bd'] = '0';
$_SESSION['lister_possesseur_bd'] = '0';
$_SESSION['afficher_lister_serie_bd'] = '0';
$_SESSION['afficher_lister_possesseur_bd'] = '0';
$_SESSION['bd_supprimer'] = '0';
$_SESSION['serie_bd_supprimer'] = '0';
$_SESSION['serie_bd_supprimer_erreur'] = '0';
$_SESSION['serie_bd_modifier'] = '0';
$_SESSION['modifications_serie_appliquees'] = '0';
$_SESSION['bd_modifier'] = '0';
$_SESSION['modifications_appliquees'] = '0';
$_SESSION['possesseur_bd_vide'] = '0';
$_SESSION['serie_bd_vide'] = '0';
$_SESSION['piratage'] = '0';
// Initialisation des objets
$TBS = new clsTinyButStrong;
if (session_is_registered("authentification")) // v?rification sur la session authentification (la session est elle enregistr?e ?)
{
// R?cup?ration des variables pour acc?s ? la bdd
$db_host = $_SESSION['hote_bdd'];
$db_name = $_SESSION['nom_bdd'];
$db_root = $_SESSION['user_bdd'];
$db_pass = $_SESSION['pass_bdd'];
// Inclusion de tous les fichiers
include_once('../../classe_mysql_bdd.php'); // Appel du fichier de gestion des classes MySQL
include_once('../../commun/constantes.php'); // Appel du fichier des constantes
include_once('../../commun/fonctions.php'); // Appel du fichier des fonctions r?currentes
include_once('../../commun/fonctions_bd.php'); // Appel du fichier des fonctions pour les
// Initialisation des objets
$base_de_donnees = new Database($db_host, $db_root, $db_pass, $db_name);
$BD = new BD();
$fonctions_generales = new operations_generales();
// R?cup?ration de la variable de langue
$langue = $_SESSION['langue'];
// Appel du fichier de langues
$chemin_langues = '../../langues/' . $langue . '/' . $langue . '.php';
include_once($chemin_langues);
// action en cas de clic sur le bouton gestion_bd pour ajouter une BD
switch ($_POST['gestion_bd']) {
case $ajouter_bd:
$_SESSION['ajout_bd'] = 'ok';
// Fonction pour les series de BD
$db_table = SERIES_BD;
$find = 'series_bd';
$series = $BD->series_bd($base_de_donnees, $find, $params = array('order' => 'series_bd ASC'), $db_table);
// Fonction pour les possesseurs
$db_table = POSSESSEURS;
$find = 'nom_possesseur';
$liste_possesseurs = $fonctions_generales->possesseurs($base_de_donnees, $find, $db_table, $params = array());
// Appel du fichier modele
$TBS->LoadTemplate('../../modeles/bd.html');
$TBS->MergeBlock('liste_series', 'array', 'series');
$TBS->MergeBlock('liste_possesseurs', 'array', 'liste_possesseurs');
break;
}
// action en cas de clic sur le bouton ajouter pour ajouter une BD
switch ($_POST['ajouter']) {
case $enregistrer_bd:
$serie_bd = mysql_real_escape_string($_POST['serie_bd']);
$titre_bd = mysql_real_escape_string($_POST['titre_bd']);
$numero_bd = mysql_real_escape_string($_POST['numero_bd']);
$possesseur = mysql_real_escape_string($_POST['le_possesseur']);
if ($serie_bd == '' or $titre_bd == '' or $numero_bd == '' or $possesseur == '') {
echo $erreur_champs_vides_bd;
}
else {
// Fonction pour l'id de la serie de BD
$db_table = SERIES_BD;
$find = 'id_series_bd';
$result = $base_de_donnees->select($find, $params = array('where' => "series_bd = '" . $serie_bd . "'"), $db_table);
$id_serie = mysql_result($result,0,('id_series_bd'));
// Fonction pour l'id du possesseur de BD
$db_table = POSSESSEURS;
$find = 'id_possesseurs';
$result = $base_de_donnees->select($find, $params = array('where' => "nom_possesseur = '" . $possesseur . "'"), $db_table);
$id_possesseur = mysql_result($result,0,('id_possesseurs'));
// Comptage du nombre de BD avant l'ajout pour verif bien ajout?
$db_table = BD_TABLE;
$find = 'id_bd';
$nb_initial_bd = $base_de_donnees->count($params = array(), $db_table);
// Requete ajout de la BD
$attributes = array('id_bd' => 'Default', 'titre_bd' => $titre_bd, 'T_series_bd_id_series_bd' => $id_serie, 'T_possesseurs_id_possesseurs' => $id_possesseur, 'numero_bd' => $numero_bd);
$base_de_donnees->add($attributes, $db_table);
// Comptage du nombre de BD apres l'ajout pour verif bien ajout?
$find = 'id_bd';
$nb_final_bd = $base_de_donnees->count($params = array(), $db_table);
if ($nb_initial_bd < $nb_final_bd)
{
$_SESSION['recap_ajout_bd'] = 'ok';
}
}
// Appel du fichier modele
$TBS->LoadTemplate('../../modeles/bd.html');
break;
}
C'est peut être pas tres clair vu de l'extérieur.
J'ai une classe qui gère les opérations liées à MySQL et les templates sont issus de tinybutstrong (simple et suffisant pour ce que je veux faire). J'avais envisager d'utiliser le framework de Zend mais un peu trop compliquer j'ai pas réussi à avancer.
Je fait évoluer mon code en me perfectionnant au fur et à mesure de apprentissage et de la lecture des tutoriels. PHP c'est bien mais dès qu'on fait un truc complexe faut bien se structurer.
Le but de mon application est un outils de gestion de collection (bd, cd, etiquettes de vin, pièces euros...) le tout le plus modulable possible pour ne pas redevelopper 4 fois la meme fonction avec des paramètres différents.
N'hésitez pas à me dire ce que je peux améliorer dans ma façon de coder.
---------------------------------------------------------
Forum perso : http://le-genie-climatique.positifforum.com
Forum travaux manuels : http://pausebroderie.fr