|
|
Explication |
|
|
|
Le but de ce menu est de vous guider étape par étape pour la gestion d'un table d'un référentiel contenant l'identifiant et son libellé.
Ce type de table est trés fréquante dans les applications, par exemple pour :
- La civilité (Mr, Mme, Mlle, ...) ,
- Le sexe (Masculin, Féminin, ...),
- Un secteur géographique (Nord, Sud, Est, Ouest, ...),
- Un type de ... ,
- Des Marques,
- etc
|
| |
|
|
Création de la table |
|
|
|
Création dans mysql de la table.
CREATE TABLE `sl_secteur` (
`id_secteur` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`secteur` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id_secteur`)
) TYPE=MyISAM COMMENT='Table des secteurs';
La table se compose d'un champ identifiant et d'un champ de libellé.
|
| |
|
|
Déclaration |
|
|
|
Déclaration des champs dans obliquid.
INSERT INTO `sl_tabledesc`
( `id_tabledesc` , `tablename` , `field` , `type` , `length` , `is_primary` )
VALUES
('', 'secteur', 'id_secteur', 'integer', NULL , 'Y'),
('', 'secteur', 'secteur', 'text', '50', 'N');
La décaration dans obliquid est obligatoire afin de pouvoir lier une table de notre base à un formulaire de consultation, de saisie, etc.
|
| |
|
|
Les droits |
|
|
|
Création de droit pour la création, modification, suppression. |
|
Dans le menu, cliquez sur l'icône 'Administration des uttilisateurs'. |
Dans le menu à gauche de l'écran.
Choisir 'Configuration de la sécurité'.
Dans le nouvel écran valider :
|
|
Créer un objet sécurité. |
Dans le bandeau 'Nouvelle opération de l'objet de sécurité'.
- Choisir le nom du module dans la liste.
- Renseigner le nom de l'opération 'secteuradm' (droit d'administration des secteurs).
- Puis cliquer sur le bouton Ajouter.
Dans le nouvel écran saisir les rôles qui on le droit d'utiliser cette opération de sécurité.
|
| |
|
|
Le source PHP |
|
|
|
Exemple de code nécessaire pour l'exploitation de cette table.
<?php
/** Gestion des secteurs.
* @version 0.1
* @date 2004/01/11
* @author chautard patrick.chautard@cg94.fr
* @package gestion
*/
/* Gestion des secteurs. */
function gestion_secteur_ () {
global $_obweb;
// Ajouter un secteur
if ($_POST["action"]== "add") {
$sql= "INSERT INTO ". $_obweb-> tprefix. "secteur (secteur) VALUES ('".addslashes ($_POST["add"]). "')";
$_obweb-> mb-> Query($sql);
}
// Modifier un secteur
if ($_POST["action"]== "mod") {
$sql= "UPDATE ". $_obweb-> tprefix. "secteur SET secteur='".addslashes ($_POST["mod"]). "' WHERE id_secteur=". $_POST["id"];
$_obweb-> mb-> Query($sql);
}
// Supprimer un secteur
if ($_GET["del"]) {
$sql= "DELETE FROM ". $_obweb-> tprefix
.sprintf ("secteur WHERE id_secteur=%d", $_GET["del"]);
$_obweb-> mb-> Query($sql);
}
// Recherche de la liste des types de secteur
$sql= "SELECT ". $_obweb-> tprefix. "secteur.id_secteur, secteur, COUNT(id_etablissement) FROM ". $_obweb-> tprefix. "secteur LEFT JOIN ". $_obweb-> tprefix. "etablissement USING (id_secteur) GROUP BY id_secteur ORDER BY secteur";
$_obweb-> mb-> QueryAll($sql, $secteur);
// Création d'un formulaire
$dbf =& new db_form ();
// Création des zones écrans
$param = array();
$param["class"] = "textform";
$param["size"] = "50";
$msg = array();
$msg["secteur"]= "0";
if ($_obweb-> has("100001", "secteuradm")) {
$frm["add"]= $dbf-> getInput("TEXTINPUT", "add", $param). $dbf-> getHidden("action", "add");
$frm["submit"]= $dbf-> getSubmit("submit", _l ("Add"), array("class" => "buttonform") );
if ($_GET["mod"]) {
$param["value"]= $_GET["mod"];
$frm["mod"]= $dbf-> getInput("TEXTINPUT", "mod", $param). $dbf-> getHidden("action", "mod"). $dbf-> getHidden("id", $_GET["id"]);
$frm["submit2"]= $dbf-> getSubmit("submit", _l ("Update"), array("class" => "buttonform") );
$msg["mod"]=_l ("Modifier un secteur");
}
$msg["add"]=_l ("Ajouter un secteur");
$msg["secteur"]= "1";
}
// Messages multilangue
$msg["name"]=_l ("Secteur");
$_obweb-> addButtons(array("print"));
$_obweb-> smblock-> assign("title", _l ("Gestion des secteurs"));
$_obweb-> smslot-> assign(array("frm" => $frm, "inter" => $secteur, "msg" => $msg ));
}
?>
Explications :
<?php
/** Gestion des secteurs.
* @version 0.1
* @date 2004/01/11
* @author chautard patrick.chautard@cg94.fr
* @package gestion
*/
Ce block contient les informations sur l'origine de la fonction :
- /** - Titre de la fonction.
- @version - Version actuelle.
- @date - Date de réalisation ou de modification.
- @author - Auteur de la fonction, ajouter son nom en cas de modification.
- @package - Nom du module donc la fonction fait partie.
// Ajouter un secteur
if ($_POST["action"]=="add") {
$sql="INSERT INTO ".$_obweb->tprefix."secteur (secteur) VALUES ('".addslashes($_POST["add"])."')";
$_obweb->mb->Query($sql);
}
- Si la fonction est appelé avec un paramètre de type $_POST (paramètre envoyé par un formulaire) et que le paramètre action contient la valeur "add", alors génération d'un ordre INSERT sql avec la valeur à ajouter dans le paramètre "add"est execution de celui-ci.
- Si le paramètre action a pour valeur "mod" traitement identique en modification.
- Si le paramètre action a pour valeur "del" idem en suppression.
// Recherche de la liste des types de secteur
$sql="SELECT ".$_obweb->tprefix."secteur.id_secteur, secteur, COUNT(id_etablissement) FROM ".$_obweb->tprefix."secteur LEFT JOIN ".$_obweb->tprefix."etablissement USING (id_secteur) GROUP BY id_secteur ORDER BY secteur";
$_obweb->mb->QueryAll($sql, $secteur);
Dans notre schéma de base la table sl_secteur et lié à la table sl_etablissement par le champ id_secteur
Afin de garantir l'intégrité référentielle, une question est posée à la base avec l'identifiant du secteur, le secteur et le nombre d'enregistrement dans la table sl_etablissement qui sont liés à ce secteur.
// Création d'un formulaire
$dbf =& new db_form ();
// Création des zones écrans
$param = array();
$param["class"] = "textform";
$param["size"] = "50";
...
$frm["add"]= $dbf-> getInput("TEXTINPUT", "add", $param). $dbf-> getHidden("action", "add");
$frm["submit"]= $dbf-> getSubmit("submit", _l ("Add"), array("class" => "buttonform") );
...
if ($_GET["mod"]) {
$param["value"]= $_GET["mod"];
$frm["mod"]= $dbf-> getInput("TEXTINPUT", "mod", $param). $dbf-> getHidden("action", "mod"). $dbf-> getHidden("id", $_GET["id"]);
$frm["submit2"]= $dbf-> getSubmit("submit", _l ("Update"), array("class" => "buttonform") );
- Création d'un formulaire.
- Initialisation des valeurs pour la zone de saisie.
- Ajout dans le formulaire d'une zone de sasie qui se nome "add" et d'un champ caché qui se nome "action" et qui contient le mot "add".
- Création du bouton envoye pour cette forme.
- Si réception d'un paramètre GET (javascript ou href) avec comme indice "mod" alors
- Sauvegarde de la valeur reçue dans le paramètre value du champ.
- Création d'une zone de saisie appelée "mod" et d'une zone caché appelé action valeur "mod".
- Création d'une deuxième bouton envoye.
$msg = array();
$msg["secteur"]= "0";
...
Création d'un
tableau pour recevoir l'ensememble des messages de la brique, initialisation du message secteur avec la valeur "0".
D'autre message viendront par la suite s'ajouter au tableau.
$_obweb-> addButtons(array("print"));
$_obweb-> smblock-> assign("title", _l ("Gestion des secteurs"));
; $_obweb-> smslot-> assign(array("frm" => $frm, "inter" => $secteur, "msg" => $msg ));
- Ajout du bouton "Imprimer" à la brique.
- Ajout du titre "Gestion des secteurs".
- Passage de l'ensemble des paramètres à Smarty pour mise en forme à l'aide du template.
|
| |
|
|
Le source TPL |
|
|
|
Exemple de code TPL.
{{* $Id: secteur.tpl,v 0.1 2005/01/11 chautard *}}
<table>
<tr>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
{{section name=i loop=$inter}}
{{if $smarty.section.i.index is div by 4}} </tr><tr>{{/if}}
<td class="tablebody">
{{if $msg.secteur eq 1}}
<a href="index.php?page=gestion_secteur &mod={{$inter[i].1}}&id={{$inter[i].0}}">{{$inter[i].1}} </a>
{{else}}
{{$inter[i].1}}
{{/if}}
</td>
<td>
{{if ($inter[i].2 eq 0) and ($msg.secteur eq 1)}}
<a href="index.php?page=gestion_secteur&del={{$inter[i].0}}"><img
src="common/images/core/window-delete.gif" width="16" height="16" border="0" alt=""/></a>
{{else}}
{{$inter[i].2}}
{{/if}}
</td>
<td> </td>
{{/section}}
</tr>
</table>
{{if $msg.mod}}
<form method="post">
<table width="80%">
<tr>
<td class="tableheader" width="20%">{{$msg.mod}} </td>
<td class="tablebody" width="40%">{{$frm.mod}} </td>
<td class="tablebody" width="20%">{{$frm.submit2}} </td>
</tr>
</table>
</form>
{{/if}}
<form method="post">
<table width="80%">
<tr>
<td class="tableheader" width="20%">{{$msg.add}} </td>
<td class="tablebody" width="40%">{{$frm.add}} </td>
<td class="tablebody" width="20%">{{$frm.submit}} </td>
</tr>
</table>
</form>
<br/>
Explications :
<table>
<tr>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
<td colspan="2" class="tableheader">{{$msg.name}} </td>
<td> </td>
Création d'un tableau avec 4 colonnes et 3 colonnes de séparation, Chaque en-tête de colonne affichera le message contenu dans la variable $msg["name"].
{{section name=i loop=$inter}}
{{if $smarty.section.i.index is div by 4}} </tr><tr>{{/if}}
<td class="tablebody">
{{if $msg.secteur eq 1}}
<a href="index.php?page=gestion_secteur&mod={{$inter[i].1}} &id={{$inter[i].0}}">{{$inter[i].1}} </a>
{{else}}
{{$inter[i].1}}
{{/if}}
</td>
<td>
{{if ($inter[i].2 eq 0) and ($msg.secteur eq 1)}}
<a href="index.php?page=gestion_secteur&del={{$inter[i].0}}"><img
src="common/images/core/window-delete.gif" width="16" height="16" border="0" alt=""/></a>
{{else}}
{{$inter[i].2}}
{{/if}}
</td>
<td> </td>
{{/section}}
- Création d'une section pour parcourir tous les éléments du tableau $inter avec comme indice la variable i.
- Si la variable d'indice de section est divible par 4 alors on ferme la ligne du tableau et on en ouvre une autre.
- Si le message secteur est égal à 1 alors on autorise la modification de l'enregistrement sinon affichage simple de l'information.
- Si le lien secteur/appareil est égal à 0 et que la modification et authorisée alors on affiche l'icône de suppression sinon on se contante d'afficher le nombre d'etablissement du secteur.
- Fin de la boucle section.
{{if $msg.mod}}
<form method="post">
<table width="80%">
<tr>
<td class="tableheader" width="20%">{{$msg.mod}} </td>
<td class="tablebody" width="40%">{{$frm.mod}} </td>
<td class="tablebody" width="20%">{{$frm.submit2}} </td>
</tr>
</table>
</form>
{{/if}}
Si le message mod existe
- Création d'un formulaire.
- Affichage du message mod.
- Affichage de la zone de saisie mod.
- Affichage du bouton submit2 (Modification).
Fin de la condition.
<form method="post">
<table width="80%">
<tr>
<td class="tableheader" width="20%">{{$msg.add}} </td>
<td class="tablebody" width="40%">{{$frm.add}} </td>
<td class="tablebody" width="20%">{{$frm.submit}} </td>
</tr>
</table>
</form>
Création d'un formulaire avec :
- Affichage du message add.
- Création d'un zone de saisie add.
- Affichage du bouton submit.
Le but de ce formulaire est de pouvoir ajouter des enregistrements.
|
| |
|
|
|
Quelques sites utiles et utilisés :
Quelques documentations sommaires extraites de www.programmez.com
Je ne suis pas un gourou PHP, TPL ou Obliquid, mais si des informations vous manquent sur ce CMS n'exitez pas à m'envoyer un mail.
|
|
|
|