1 installation/téléchargement 2 créer une base de - Cours-info

Transcription

1 installation/téléchargement 2 créer une base de - Cours-info
Introduction
serveur => organisation du code en Modèle vue contrôleur
http://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-contr%C3%B4leur
Modèle => méthode pour agir sur les données (lecture/modification/insertion)
Vue => interface (affichage et récupération des événements) de l'utilisateur => pas de traitement
Contrôleur => gestion des événements mise à jour des données
Codeigniter
modèle-vue-presentation
http://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-pr%C3%A9sentation
http://fr.wikipedia.org/wiki/Liste_de_frameworks_PHP
http://www.phpframeworks.com/index.php
doc autre CI
http://performancephp.developpez.com/#LI-A
1 installation/téléchargement
http://www.codeigniter.fr/
contenu
/application/ : les éléments de configuration ; tous les éléments : vue , contrôleur, helper ...=>
notre application
/index.php
/system/ : codeigniter (les différentes versions éventuellement)
2 créer une base de données et les tables dans cette base de données
il faut : login MDP machine(localhost ou serveurmysql), la base de données (exemple : BDDmagasin) et créer les tables nécessaires à l'application. 3 configuration de codeigniter
Ouvrir 4 fichiers dans le répertoire « application » :
« config/config.php » ; «config/database.php » ; «config/autoload.php » ; « config/routes.php»
lien :http://localhost/web/public_html/codeigniter/modele/
3.1
configurer l'url de base
dans le fichier : application/config/config.php
modifier la ligne
$config['base_url']
= 'http://http://localhost/web/essai1_codeigniter/'; //=> à modifier
$config['language']
= 'french';
$config['encryption_key'] = 'ma cle d encriptage'; => Utilisation de session //=> à modifier
eventuellement
$config['global_xss_filtering'] = TRUE; /* faille de sécurité XSS */ //=> éventuellement à modifier
$config['csrf_protection'] = TRUE; /* faille de sécurité CSRF */ //=> éventuellement à modifier
remarque : csrf => presence d'un token sur les navigateurs
3.2
configurer la base de données
dans le fichier : application/config/database.php //=> à modifier
$db['default']['hostname'] = 'localhost'; //serveurmysql
$db['default']['username'] = 'S3_users'; $db['default']['password'] = 'mdp'; $db['default']['database'] = 'S3BDD';
3.3
configurer le chargement des classes (helper)
dans le fichier : application/config/autoload.php
$autoload['libraries'] = array('database','session','form_validation','email','cart');
$autoload['helper'] = array('form','url','text','string'); //=> pas obligatoire (évite le chargement)
dans le fichier application/config/autoload.php
$autoload['model'] = array('produit_m'); //=> pas obligatoire (évite le chargement)
Il est possible de définir un constructeur dans le contrôleur qui charge la base (configuration par défaut sinon voir documentation), les modèles, les « helpers », les librairies
function __construct() { parent::__construct(); $this­>load­>database(); $this­>load­>helper('url'); $this­>load­>model('produit_m'); //$this­>load­>helper(array('form','url','text','string')); //$this­>load­>library(array('session','form_validation','email'));
}
ATTENTION : ne pas recopier le contenu de $autoload['libraries'] => database n'est pas considérer comme une librairie 3.4
configurer le contrôleur de démarrage
dans le fichier application/config/routes.php
$route['default_controller'] = "produit_c"; => le contrôleur est à créer //=> à modifier
4 Premier contrôleur et première vue
créer dans le répertoire application un contrôler (copie de welcome.php et adaptation)
controllers/produit_c.php
<?php class Produit_c extends CI_Controller { /* nom de la classe = nom du fichier avec majuscule */ function __construct() { parent::__construct(); } public function afficherProduits() { /* ou index() */
$this­>load­>view('head_v'); $this­>load­>view('nav_v'); $data['titre']="affichage du tableau produit"; $data['produit']=$this­>produit_m­>getAllProduits(); //print_r($data['produit']); $this­>load­>view('table_produit_v',$data); $this­>load­>view('foot_v');
} ?>
Ajouter ensuite :
views/v_head.php
<html lang="fr"> <head> <meta charset="utf­8"> <title>exemple MVC codeigniter php </title> <link rel="stylesheet" href="<?php echo base_url()?>css/style.css"> => mettre $autoload['helper'] = array('url');
ou => créer un répertoire css/ à la racine pour le css (bootstrap), javascript …
</head> <body>
dans la barre de navigation : modifier les liens
<li><a href="<?php echo base_url();?>index.php/produit_c/creerProduit"> créer un produit </a></li> <li><a class="SousMenu" href="<?php echo site_url('produit_c');?>" >afficher/editer/supprimer les produits</a></li> model/produit_m.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Produit_m extends CI_Model {
/*
function __construct()
{
parent::__construct();
}*/
function getAllProduits(){
$sql="SELECT p.id, t.libelle, p.nom, p.prix, p.photo FROM produit as p,typeProduit as t WHERE p.id_type=t.id_type ORDER BY t.libelle;"; $query=$this­>db­>query($sql); return $query­>result();
/* avec l'orm : http://www.codeigniter.com/userguide3/database/query_builder.html */
$this­>db­>select('p.id, t.libelle, p.nom, p.prix, p.photo'); $this­>db­>from('produit p'); $this­>db­>join('typeProduit t', 'p.id_type=t.id_type');
$this­>db­>order_by('t.libelle', 'ASC'); $this­>db­>order_by('p.nom', 'DESC'); $query = $this­>db­>get(); return $query­>result();*/
}
}
views/v_table_produit.php
<div class="row"> <a href="<?php echo base_url();?>index.php/Produit/creerProduit/"> Ajouter un produit </a> <table> <caption>Recapitulatifs des produits</caption> <thead> <tr><th>id</th><th>type</th><th>nom</th><th>prix</th><th>photo</th> <th>opération</th> </tr> </thead> <tbody> <?php if( $produit != NULL): ?> <?php foreach ($produit as $value): ?> <tr><td> <?php echo $value­>id; ?> </td><td> <?php $value­>libelle; ?> </td><td> <?= $value­>nom; ?> </td><td> <?= $value­>prix; ?> </td><td> <?= $value­>photo; ?> </td><td> <img style="width:40px;height:40px" src="<?php echo base_url();?>images/<?= $value­>photo; ?>" alt="image de <?= $value­>libelle; ?>" > </td> <td> <a href="<?php echo base_url();?>index.php/produit_c/modifierProduit/<?= $value­>id; ?>">modifier</a> <a href="<?php echo site_url("produit_c/supprimerProduit")."/".$value­>id; ?
>">supprimer</a> </td> </tr> <?php endforeach; ?> <?php endif; ?> <tbody> </table> </div>
Remarque :
La fonction <?php echo base_url();?> devant l'image, permet d'afficher les images malgré des url(s) différentes :
url_base url_base/produit_c url_base/produit_c/index