Deux fichiers ajoutés dans PMB/doc
les voici en PJ, à respecter scrupuleusement ;-)
Eric
Rêgles de requetage SQL :
INSERT :
préférer la forme insert into TABLE (COL1, COL2, ...) values (VAL1, VAL2, ...)
à la forme insert into TABLE set COL1=VAL1, COL2=VAL2, ...
La seconde forme vous interdit radicalement de fixer la colonne éventuelle en
id auto_increment
D'une manière générale, on ne fixe jamais la valeur d'une colonne
auto_increment, c'est le serveur qui va la gérer
On ne met donc pas cette colonne auto_increment dans la rqt insert
Si on veut la mettre : on met ZERO pour la valeur
UPDATE :
On n'update jamais la clé primaire d'une table, partez du principe que c'est
une colonne
gérée par le serveur, elle ne vous appartient pas.
Si update d'un enregistrement complet, inutile de regarder quelles colonnes
ont été modifiées
pour savoir quoi mettre dans le SET COL=VAL, y mettre tout sans se
poser de question,
meilleur pour la performance.
; à la fin des requetes :
Pas de ; à la fin de vos requetes SQL en PHP, c'est la parser qui envoie
lui-même le
séparateur de requetes.
LOCK TABLES :
A proscrire, en principe vous n'avez pas à vous en servir
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Ce fichier aborde deux points importants de programmation :
Inlude/require
Minimum nécessaire
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Problème des inlude/require :
include génère un warning si fichier inaccessible
require génère une erreur
IL FAUT DONC UTILISER require.
------------------------------
require inclus et parse le fichier
require_once inclus et parse si ça n'a pas encore été fait, autrement dit :
require_once ("fichier avec fonctions ou classes dedans.php");
require_once ("fichier avec fonctions ou classes dedans.php");
ne posera aucun problème
là où :
require ("fichier avec fonctions ou classes dedans.php");
require ("fichier avec fonctions ou classes dedans.php");
va vous faire une erreur de cannot redeclare ....
IL FAUT DONC UTILISER require_once
----------------------------------
Les chemins sont paramétrés dans includes/config.inc.php
Vous devez donc écrire en début de chacun de vos fichiers racines (celui que vous
voyez dans l'url) :
// définition du minimum nécéssaire
include ("./includes/error_report.inc.php") ;
include ("./includes/global_vars.inc.php") ;
include ("./includes/config.inc.php");
Si vous n'êtes pas à la racine de PMB/ :
Adapter les chemins :
// définition du minimum nécéssaire
include ("../../includes/error_report.inc.php") ;
include ("../../includes/global_vars.inc.php") ;
include ("../../includes/config.inc.php");
Ajouter :
$include_path = "../../".$include_path;
$class_path = "../../".$class_path;
$javascript_path = "../../".$javascript_path;
$styles_path = "../../".$styles_path;
Avec cette façon d'inclure :
Vous n'avez plus à vous soucier du chemin d'accès, faites simplement :
require_once("$class_path/ma_classe.inc.php");
Vos classes ainsi développées deviendront accessible en dehors de la racine !
Si, par le truchement des inclusions, il y a plusieurs require_once au même
fichier, vous ne sortirez pas en carafe !
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Le minimum nécessaire :
include ("./includes/error_report.inc.php") ;
limite les affichages d'erreur et warnings, compatibilité avec easyPHP
1.7 (=versions récentes de PHP)
include ("./includes/global_vars.inc.php") ;
résout le pb de register_globals = Off, compatibilité avec easyPHP 1.7
(=versions récentes de PHP)
include ("./includes/config.inc.php");
Propre à PMB, définit un paquet de constantes, dont notamment les
chemins :
$include_path = 'includes'; // includes
$class_path = 'classes'; // classes
$javascript_path = 'javascript'; // scripts
$styles_path = 'styles'; // styles