Tải bản đầy đủ (.pdf) (50 trang)

Tài liệu MySQL et CSS- P8 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.84 MB, 50 trang )

leur apparence aux pages ou à des parties de page. Il suffit de créer un
dossier de même nom dans l’application particulière en y insérant un
fichier template modifié, avec le même nom de fichier, pour qu’il soit
utilisé en lieu et place de l’original.
Index.php
Le fichier index.php indique la vue par défaut de l’application, le chemin
vers le fichier xataface-public-api.php et l’URL vers le répertoire de
Xataface sur le serveur. Ensuite, il charge une instance de l’objet Xataface
et l’affiche dans l’interface standard ou une autre interface :
$time = microtime(true);
if (!@$_GET[’-sort’] and @$_GET[’-table’] == ’fichestravaux’){
$_GET[’-sort’] = ’moment desc’;
$_REQUEST[’-sort’] = ’moment desc’;
$_GET[’-table’] = ’fichestravaux’;
$_REQUEST[’-table’] = ’fichestravaux’;
}
if (empty($_GET[’-action’])) $_GET[’-action’] = "list";
require_once ’/var/www/html/dataface-0.7.1/dataface-public-api.php’;
// include the initialization file
df_init(__FILE__, ’http://lintranet/dataface-0.7.1’);
// initialize the site
$app =& Xataface_Application::getInstance();
// get an application instance and perform initialization
$app->display();
// display the application;
?>
conf.ini
Le fichier conf.ini est un fichier texte qui contient la configuration
générale comprenant le codage des caractères, la langue, les coordonnées
de connexion à la base de données MySQL, les tables qui s’afficheront, les
coordonnées de l’authentification et les préférences. Chaque partie dans


ce fichier est introduite par le nom entre crochets : [languages],
[_database], [_tables], [_auth], [_prefs]. Ces 5 parties gèrent
respectivement la langue du site, les données de connexion de la base de
données, les tables qui seront affichées, la table et les champs utilisés pour
l’authentification et les préférences d’affichage.
Xataface, donnez un visage humain à votre base de données
Double Poche PHP & MySQL • 351
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Les tables
Ensuite, la partie la plus importante est celle des tables. Le répertoire
tables contient un répertoire pour chaque table, chaque répertoire portant
le nom de la table.Ces répertoires contiennent 3 fichiers texte avec une
extension .ini.
fields.ini
Le premier, fields.ini, est attaché aux champs du formulaire qui attaque-
ront la table pour agir sur les données. Ce fichier permet de choisir les
champs qui seront affichés, d’agir sur leur nature, sur leur mode
d’affichage, sur l’ordre d’affichage...
Le fichier .ini est un fichier texte où les lignes commençant par un ; sont
des commentaires.
relationships.ini
Le deuxième, relationships.ini, contient les modalités de relation entre la
table et les autres tables (clé étrangère) :
Le code est de type :
table.id = "$id_table"
Ici le premier membre désigne la clé étrangère de la table en relation et le
deuxième membre concerne la clé de la table courante.
b
Figure 10.4 :
Exemple d’arborescence

10
Les frameworks ou cadriciels PHP
352 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Ou alors, il est possible d’y inscrire une requête SQL qui identifie la
relation entre les deux tables.
__sql__ = "SELECT * FROM table1, table2 WHERE table1.id= table2.id_table1"
Plusieurs relations peuvent ainsi être définies sur ce même fichier, chaque
table étrangère étant identifiée par [table1], [table2]...
valuelists.ini
Ce fichier regroupe les valeurs des champs de sélection (select, checkbox,
boutons radio...) et celles des champs autocomplétés.
Autocomplétion
L’autocomplétion est cette fonction qui, quand on commence
à saisir un mot dans le champ d’un formulaire, fait apparaître une
liste de mots commençant par les mêmes lettres et qui ainsi peuvent
être validés comme valeur du champ.
Ces valeurs sont données sous forme de liste ou par une requête SQL sur
une valeur :
[select_OUI]
__sql__ = "SELECT clef, libelle from select_OUI"
[Creneaux]
M = Matin
A = Après-midi
J = Journée
Classe pour la table
La classe de la table peut être créée quand le besoin de fonctions
originales se fait sentir. Ainsi il peut être nécessaire de formater les dates
dans les champs date ou d’afficher une valeur par défaut dans un champ
quelconque.

Le fichier prend le nom de la table table.php, table étant mis pour le nom
de la table et donc du répertoire où le fichier se trouve.
Xataface, donnez un visage humain à votre base de données
Double Poche PHP & MySQL • 353
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
class tables_repertoires {
function after_action_new(){
header(’Location: ’.’ />index.php?-action=list&-table=’.@$_REQUEST[’-table’]);
exit;
}
}
Les fonctions ont des conventions de nommage dans la classe. Ainsi, par
exemple, cette fonction est déclenchée une fois qu’on a créé une nouvelle
entrée dans une table quelconque comme repertoires. Cette fonction, dans
cet exemple, affiche la liste des répertoires dans la table. De nombreuses
fonctions existent, en particulier pour afficher une date avec un format
spécifique, ou afficher par défaut les valeurs d’un champ, avec, à chaque
fois, une convention de nommage dans le nom de la fonction.
Application Déléguée dans le répertoire conf
L’application Déléguée est une application qui agit sur toutes les actions
déployées. Ainsi ce fichier peut contenir l’authentification. Il se trouve
dans le répertoire conf :
class conf_ApplicationDelegate {
function getPermissions(&$record){
$auth =& Dataface_AuthenticationTool::getInstance();
$user =& $auth->getLoggedInUser();
if ( !isset($user) ) return
Dataface_PermissionsTool::NO_ACCESS();
$role = $user->val(’role’);
return Dataface_PermissionsTool::getRolePermissions($role);

}
}
Cette fonction, ici, identifie chaque utilisateur et retourne la permission
qu’il détient. Il est possible d’affiner la granularité en définissant les accès
aux tables et même aux champs d’un formulaire qui dès lors que l’usager
n’y aura pas accès, ne sera pas actif.
Conclusion
Xataface permet de monter un site en quelques minutes. Ce qui prend le
plus de temps est de changer l’interface graphique mais si vous créer juste
une application pour quelques personnes, elle sera opérationnelle immé-
10
Les frameworks ou cadriciels PHP
354 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
diatement. Une autre utilisation possible consiste à créer toute l’adminis-
tration d’un site qui lui, se sert de la base de données gérée par Xataface.
C’est une plateforme dont on ne peut plus se passer une fois qu’on y a
goûté. La documentation est encore en anglais mais l’application a été
traduite et la prochaine version sera plus aboutie, avec une traduction plus
complète et une documentation en français.
10.4
CakePHP, c’est du gâteau
Le projet CakePHP (www.cakephp.org, www.cakepourtous.org) a dé-
marré en 2005, avec comme ambition de proposer un Ruby on Rails pour
PHP.
Ruby on Rails ou RoR
Ruby on Rails est sorti en juillet 2004 et a été créé à partir du
langage Ruby qui est un langage de script orienté objet. La sortie
de RoR fut un coup de tonnerre dans la communauté des développeurs
car il répondait exactement aux exigences d’interactivité du Web 2.0. Il

permettait de créer rapidement un site avec du code concis, peu de
configuration et de l’ajax pour la convivialité. Il est utilisé par un certain
nombre de sites web 2.0.
L’arborescence reflète parfaitement ce modèle. Le répertoire cake est le
répertoire auquel le développeur ne touche pas, excepté quand il fait une
mise à jour pour passer à la version supérieure de Cake. L’autre répertoire
important est app qui contient l’application avec les dossiers models,
controller et views.
Chaque partie de l’application doit avoir sa part de modèle, de contrôleur
et de vue. À ces répertoires s’ajoutent le répertoire tmp qui contient les
b
Figure 10.5 :
Cake
CakePHP, c’est du gâteau
Double Poche PHP & MySQL • 355
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
fichiers de cache, de sessions, de logs et tous les fichiers temporaires. Le
dossier config contient les rares fichiers de configuration dont les réglages
pour la base de données. Le dossier vendors sert à ajouter des scripts à
l’application. Un autre dossier vendors, situé en dehors du répertoire app,
rassemble les scripts génériques destinés à toutes les applications.
Cake offre les mêmes fonctionnalités que Xataface, avec un plus large
spectre (différents types de bases de données) mais aussi plus de
complexité. Cake simplifie l’usage des bases de données et il présente un
certain nombre de caractéristiques.
Cake utilise le mod_rewrite d’Apache pour réécrire les URL à la volée.
Ainsi l’URL http://localhost/club/edit/1/ ira chercher le contrô-
leur club, la méthode edit(), le modèle pour aller trouver la donnée avec
l’id 1 puis l’affichera dans la vue edit.thtml. C’est très logique et pour
utiliser cette application, il suffit de se conformer à ces conventions.

En ajoutant la variable $scaffold (échafaudage) dans le contrôleur, Cake
crée les fichiers par défaut. Il suffit ensuite de les modifier pour les rendre
conformes au résultat désiré.
var $scaffold;
m
Figure 10.6 : www.cakephp.org
10
Les frameworks ou cadriciels PHP
356 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Sous le dossier app, il reste deux dossiers importants : webroot qui
contient tous les fichiers qui apparaissent en vitrine (images, css,
javascript...) et le dossier helpers. Ces helpers ou aides sont des fichiers
PHP qui modifient l’affichage d’un élément dans les vues. Il existe des
helpers natifs pour Cake comme les helpers HTML qui permettent au
développeur d’écrire son code très rapidement. Ainsi pour écrire le code
d’une aire de texte :
$html->textarea(’Note/body’, array(’cols’=>’60’, ’rows’=>’10’));
La notion de rappel (callback) qui a déjà été vue pour Xataface intervient.
Ainsi une action déclenche une nouvelle action qui se déroule avant ou
après.
Cake est une application copiée sur Ruby on Rails ; la conception est
dérivée de Ruby contrairement à Xataface qui est plus axée MySQL et
PHP et respecte davantage l’esprit de Ruby on Rail dans un sens de
légèreté.
10.5
JOOMLA, le meilleur gestionnaire
de contenu
Joomla (www.joomla.fr) est le meilleur gestionnaire de contenu car il est
très complet et utilisé largement. Ainsi, il enrôle de nombreux déve-

loppeurs et contient de nombreuses fonctionnalités pour répondre à
diverses situations. Joomla est né d’une scission avec la plateforme
Mambo. Joomla signifie "tous ensemble" en Swahili.
Le principe de ce type d’application est que le contenu est géré
séparément de la présentation :
¶ Ils permettent à plusieurs rédacteurs de travailler sur un même
document.
b
Figure 10.7 :
Joomla
JOOMLA, le meilleur gestionnaire de contenu
Double Poche PHP & MySQL • 357
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
¶ Ils suivent un document de la conception à la publication.
¶ Ils regroupent et gèrent des documents de nature différente (articles,
documents à télécharger, formulaires, FAQ, calendriers d’événe-
ments...).
Joomla permet de séparer la technique web de la rédaction de billets. Ainsi
un site Joomla a un webmestre qui s’occupe de la technique et plusieurs
rédacteurs pour rédiger le contenu. Les rédacteurs sont aidés par des
traitements de texte avec leur barre de texte et des mini-calendriers pour
choisir une date et l’insérer dans un bon format.
À une plateforme commune s’agglutinent des extensions, petites applica-
tions qui ajoutent des fonctionnalités au tronc commun.
Joomla est donc un standard avec une grande diversité en raison de ses
extensions. Cette diversité explique aussi la possibilité de failles de
sécurité ou d’impasses, l’extension n’étant plus mise à jour au gré des
nouvelles versions de Joomla.
m
Figure 10.8 : Joomla

10
Les frameworks ou cadriciels PHP
358 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Permissions
Joomla propose un diagnostic de votre site à l’installation. Un
certain nombre de répertoires demandent une permission 0777
pour l’installation. Veillez à remettre 0755, une fois l’installation finie.
Les extensions personnalisent Joomla. Elles sont de quatre types :
¶ Les composants sont des mini-applications, agissant aussi bien en
avant-scène (frontend) qu’en coulisses (backend ou administration) et
rattachées souvent à une ou plusieurs tables de la base de données.
¶ Les modules sont des éléments d’interface qui se trouvent générale-
ment dans les colonnes de droite et de gauche dans la page d’accueil.
Ils présentent souvent une information, des liens d’une manière
différente pour les mettre en valeur.
¶ Les mambots sont des fonctions qui sont actionnées par des événe-
ments et permettent de transformer les informations avant leur
affichage.
¶ Les templates (ou patron, comme des patrons de couture) sont la peau
dans laquelle se glisse l’application. Un patron est composé d’un
fichier PHP, d’images et d’un ou plusieurs fichiers CSS pour régler
l’apparence de votre site.
Choisir Joomla 1.0.15 ou 1.5
La version 1.0.15 est la plus ancienne et propose 2 700 ex-
tensions qui fonctionnent. La version 1.5 est internationalisée et
elle est normalisée pour un développement. Si les extensions sont
primordiales, il vaut mieux adopter l’ancienne version. Si c’est pour un
nouveau site où les extensions ne sont pas fondamentales, il vaut
mieux passer au 1.5.1 directement. Le code a été simplifié et normalisé.

Son développement a demandé deux ans de travail.
JOOMLA, le meilleur gestionnaire de contenu
Double Poche PHP & MySQL • 359
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Drupal contre Joomla
Un autre CMS très complet et bien écrit est Drupal (http://drupalfr
.org/ ).Son code est mieux écrit et répond mieux aux normes de codage.
Il a cependant moins de thèmes et d’extensions disponibles.
S’il fallait départager les deux, il faudrait tenir compte de l’utilisation et
du type de site.
Drupal 6.8 permet :
¶ de créer un site multi-sites et donne plus de latitude pour moduler les
catégories ;
¶ de déployer une granularité plus fine des permissions ;
¶ de modifier facilement les quelques thèmes pour les rendre originaux ;
¶ de monter un site communautaire avec de nombreux membres ;
¶ de l’intégrer dans d’autres sites grâce à son code aux normes.
Joomla 1.5.8 est :
¶ facile à comprendre, à installer et à enrichir ;
¶ implémenté avec un espace d’administration ergonomique ;
¶ parasité par des interactions entre les modules (SEF…) et des bogues
dû à un code mille-feuilles ;
¶ difficile à intégrer à d’autres sites ;
¶ riche d’innombrables modules et extensions.
b
Figure 10.9 :
Drupal
10
Les frameworks ou cadriciels PHP
360 • Double Poche PHP & MySQL

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
10.6
Conclusion
Les plateformes sont des aides précieuses pour créer de nouveaux sites,
collaborer et maintenir un site web évolutif mais elles ne peuvent servir
pour reprendre un site déjà fait. PHP est un langage de script très souple
et un site web peut être créé de multiples façons dans l’architecture et la
syntaxe ; les cadriciels imposent un certaine "normalité" dans le code et la
méthode, ce qui rend plus facile la maintenance et accélère les temps de
développement, une fois les conventions assimilées.
Certains d’entre vous souhaiteront aller boire à la source et utiliseront
Ruby on Rails (www.rubyonrails.org) et le langage Ruby (www
.ruby-lang.org/fr/), d’autres employant le PHP5 s’orienteront vers
Symfony (www.symfony-project.org) mais le système reste le même et
le langage PHP a tout à gagner dans le développement et le foisonnement
de ces plateformes.
m
Figure 10.10 : Ruby on Rails
Conclusion
Double Poche PHP & MySQL • 361
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
11
Mettre
de l’ordre
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Vous voilà maintenant avec un certain nombre de fichiers et d’applications
codées sur des centaines de lignes. Vous pouvez continuer à créer de
nouvelles applications, si vous aimez concevoir et développer, ou choisir
de vous pencher sur l’architecture de vos applications et leur maintenance,

pour construire vraiment et améliorer les fichiers au fur et à mesure que
vous progressez. Vous changerez ainsi le code circonstanciel en code
élégant, réutilisable et explicite.
L’application idéale pourra être placée sur n’importe quel serveur et
fonctionnera sans modification. Si des changements sont nécessaires,
créez des variables que vous grouperez en tête de fichier. Une autre
solution, si vous avez de nombreuses variables à modifier, consiste à créer
un fichier de configuration que vous incluez en tête d’application.
Personne n’aime se replonger dans des vieilleries pour les trier.
Aujourd’hui, votre application est nouvelle et vous codez avec lyrisme,
emporté par l’enthousiasme. Tout vous paraît clair. Telle variable possède
une utilité évidente, telle autre s’articule avec telle donnée. Mais demain,
un de vos utilisateurs trouvera peut-être un bogue, vous aurez appris de
nouvelles façons de coder du langage PHP ou la nouvelle version du
moteur PHP sera sortie et vous aurez envie d’uniformiser votre code, ce
qui n’est pas forcément une bonne idée. Pourquoi toucher en effet à une
application qui remplit son rôle ?
Ce jour-là, vous comprendrez à peine la logique qui a présidé à vos
applications construites sans méthode. Pour qu’une application vive, elle
doit être conçue avec soin.
Utilisez des conventions qui ne varient pas et vous donnent des repères.
Par exemple, les noms de variables $resultat, $passage ou $rang, que
vous employez dans chaque application, créeront des repères dans des
applications de milliers de lignes. Aménagez des ruptures dans vos pages
avec des barres obliques de commentaires pour marquer les limites d’un
module indépendant. Commentez abondamment pour que la logique
sous-jacente apparaisse. Expliquez vos choix. Donnez des noms explicites
à vos variables et à vos fonctions. Au besoin, créez de la documentation
technique. Sa rédaction vous obligera à préciser des points flous. Elle sera
un élément déterminant pour communiquer avec d’autres développeurs.

11
Mettre de l’ordre
364 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
À certains endroits de votre application, vous aurez des idées de
développement, de fonctionnalités supplémentaires pour l’utilisateur mais
il se peut que vous soyez pressé par le temps. Si vous ne pouvez réaliser
votre idée, prenez soin tout de même de l’exposer clairement dans vos
commentaires ou une documentation à part.
Créez un document qui répertorie les fonctions que vous avez conçues
avec leur description. Imprimez-le et placez-le à votre portée.
L’élaboration d’une application se fait en trois étapes : la conception et
l’architecture, la réalisation, les tests. Ces trois étapes sont réalisées par
une personne, ou trois ou quatre personnes disposant d’une plus grande
spécialisation. Les termes varient selon les entreprises et l’aspect privilé-
gié pour chaque tâche.
11.1
Avant
Essayez de prendre quelques jours de réflexion avant d’entrer dans votre
application. Imaginez les différents moments de votre application, esquis-
sez quelques lignes de code sans les développer. Explorer les directions
m
Figure 11.1 : Importance du travail préparatoire
Avant
Double Poche PHP & MySQL • 365
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
possibles à chaque aiguillage de votre arborescence. Si vous travaillez
pour quelqu’un, essayez de lui faire préciser ses objectifs et les contraintes
incontournables. Par exemple pour le magazine, il est intéressant de savoir
combien de pages peut faire un article ou une rubrique, combien d’images,

comment elles sont placées, comment est faite l’accroche… Préparez vos
questions. La clarté d’une réponse dépend de la précision de la question.
La relation au client est l’art de poser les questions avec des termes précis,
clairement compris par l’interlocuteur.
11.2
Après
Après la conception de l’application, des tests en profondeur sont indis-
pensables. D’abord pour déceler les bogues qui peuvent se nicher dans des
recoins insoupçonnés, aussi pour emprunter toutes les avenues ouvertes à
l’internaute et vérifier que pour chaque action, une réponse est prévue.
Votre application n’est pas linéaire, elle est arborescente et vous devez, en
tant qu’auteur, visiter la moindre ramure. Dessinez un arbre de possibili-
tés et certaines éventualités oubliées vous sauteront aux yeux. Rendez les
pages d’erreur agréables à l’œil. Reprenez les fonctions qui retournent un
résultat ou un entier booléen et créez un bloc d’exécution pour chaque
erreur d’exécution. Incluez une fonction mail() qui vous envoie un
courriel avec la variable $PHP_SELF pour avoir l’identité du fichier et le
type d’erreur rencontré.
N’oubliez pas de tester votre communication auprès de "candides". Soyez
explicites dans vos indications sans noyer l’internaute avec des directives
trop longues. Ceci fait l’objet du chapitre 11.
11.3
Le débogage
Faire une erreur est facile, la déceler peut parfois demander beaucoup de
temps et d’effort. Il existe plusieurs types d’erreur pour un programmeur.
Cela va de la simple faute de frappe à une inversion de paramètres dans
une fonction, en passant par une confusion de nom de variable.
Les plus faciles à déceler donnent le numéro de la ligne fautive en
précisant la cause du problème. Parfois, cette indication est une fausse
amie car elle indique la dernière ligne de votre application, ce qui

constitue souvent une erreur d’accolade, de parenthèse ou de guillemets.
11
Mettre de l’ordre
366 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Une astuce pour les corriger consiste à faire une recherche multiple avec
votre éditeur de code sur chaque élément de la paire pour les accolades et
les parenthèses. Si le nombre de parenthèses ouvrantes et celui des
parenthèses fermantes ne sont pas identiques, le problème se situe à cet
endroit. Pour les guillemets, en général, la ligne faussement accusée est un
peu plus bas que la fautive. Remontez et vous trouverez un guillemet
manquant, un guillemet double qui répond à un guillemet simple, un
guillemet interne sans signe d’échappement ou un point-virgule man-
quant. Parfois ce ne sera pas si facile.
Vos fonctions ne doivent pas contenir l’opérateur @ qui empêche l’affi-
chage de l’erreur. Vous l’ajouterez une fois les tests effectués, en prenant
soin de mettre un dispositif qui vous prévienne de l’erreur avec une
identification claire du fichier et de l’erreur.
Le débogage est d’abord une analyse. Elle consiste à séparer les éléments
qui composent l’application afin de déceler la cause de l’erreur : séparer
les éléments dans le temps et dans l’espace du code.
Si vous avez déjà testé le code et qu’il fonctionnait jusqu’à tel moment,
remontez la chronologie. La confusion vient souvent du fait que nous
avons accompli plusieurs actions en même temps et que nous pouvons
partir dans une mauvaise direction et compliquer la recherche. L’erreur
s’est-elle produite quand vous avez changé de machine ou de serveur, ou
simplement changé la configuration, ou la version de PHP ?
Vérifiez l’ordre des paramètres dans les fonctions appliquées sur les
chaînes de caractères ou sur les expressions rationnelles.
Tab. 11.1 : Ordre des paramètres

Fonction Place des éléments
explode() Séparateur, texte
split() Motif, texte
ereg() Motif, texte
ereg_replace() Motif, texte de provenance, texte de destination
strchr() Texte, motif
strstr() Texte, motif
Le débogage
Double Poche PHP & MySQL • 367
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Lorsque vous êtes certain que le problème vient du code, analysez votre
code et clarifiez-en la structure en créant des blocs séparés par des lignes
de barres obliques. Ensuite, appuyez-vous sur le code essentiel en
désactivant les lignes qui ne font qu’améliorer votre algorithme. Pour les
désactiver, mettez-les en commentaires, c’est-à-dire faites-les précéder de
deux barres obliques. Le moteur PHP les prendra pour des lignes de
commentaires et ne les exécutera pas. Dans le code restant, affichez la
valeur des différentes variables, du début vers la fin. Nous avons suggéré
précédemment de créer des ruptures dans vos applications pour délimiter
les modules. Créez des points d’arrêt pour connaître la teneur des
variables en sortie de traitement avec des
echo $variable;
exit;
ou à l’intérieur des boucles avec exit ou break
echo "$variable<BR>";
break;
}
exit;
Ajoutez des return dans vos fonctions, ils ont pour effet d’arrêter
l’exécution de la fonction et de retourner une valeur.

Une fois que tout fonctionne comme vous le désirez, réactivez votre code
secondaire par étapes. L’erreur peut provenir d’une partie du code qui
neutralise l’autre partie. Si vous êtes dans les fonctions de systèmes de
fichiers, vous voulez par exemple obtenir le filemtime en pensant obtenir
le TIMESTAMP de la dernière modification du fichier. En fait, juste avant,
vous devez utiliser le chmod() pour changer les propriétés du fichier.
Cette commande va aussi modifier le filemtime(). Votre logique serait
contradictoire.
Vérifiez vos blocs conditionnels. Avez-vous un signe = ou == ?
Les signes > ou < peuvent être à l’envers.
Soyez méticuleux sur les noms de variables et les chemins de fichier. Une
lettre manquante ou supplémentaire, et votre variable ne renverra aucune
valeur, votre programme ne trouvera pas le fichier ciblé. Assurez-vous que
le fichier ou le répertoire possède les permissions requises (chmod).
11
Mettre de l’ordre
368 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Si vous n’avez rien sur l’écran, affichez le code source dans le navigateur.
Soit vous avez un code HTML tellement corrompu, notamment avec des
tables, que le navigateur n’affiche rien, soit votre requête SQL contient
une erreur et ne retourne aucun résultat. Souvent, le moteur PHP écrit une
phrase d’erreur dans le code source qui n’apparaît pas dans la fenêtre du
navigateur. L’erreur peut générer également un temps d’exécution trop
important.
Si vous avez une erreur d’affichage HTML, vous pouvez récupérer le code
HTML obtenu et l’imprimer pour en voir les erreurs ou le mettre dans un
éditeur HTML wysiwyg, comme Dreamweaver (sigle de What You See
Is What You Get : ce que vous voyez est ce que vous obtenez).
Pour une erreur de requête SQL, lancez la requête dans PhpMyAdmin

pour déceler la cause. Si une requête n’est pas comprise par la base,
vérifiez le nom des colonnes et la place des clauses. Simplifiez votre
requête et testez-la en ajoutant les clauses peu à peu. Les clauses LIMIT ou
ORDER BY sont toujours après la clause WHERE. Pour une insertion,
avez-vous le même nombre de valeurs que de colonnes citées ?
11.4
Sachez anticiper
Nous avons vu les fonctions, les variables communes, les constantes,
l’authentification, la connexion à la base de données et les statistiques.
Vous pouvez ajouter une fenêtre de publicité ou une gestion de vos
bannières, une personnalisation de toutes les pages du site, y compris les
pages qui ne font pas partie du club, pour tous ceux qui utilisent le
cookie… Ces idées sont intéressantes. Elles vous demanderont de créer
d’autres applications pour vos pages. Si vous avez de telles idées avant de
créer votre site, vous gagnerez du temps et serez plus efficace. Avec la
méthode des fichiers inclus, l’ajout d’applications supplémentaires sera
cependant facilité. Faites en sorte d’avoir le moins de données à ajouter
pour chaque application, comme dans le mini-forum où le nom de la table
prend le nom du fichier en enlevant le chemin et l’extension au moyen
d’une expression rationnelle. Utilisez au maximum des fonctions PHP
pour avoir peu de paramètres à approvisionner. Dans vos applications,
laissez la porte ouverte à des extensions de programmes afin que l’ajout
d’applications ne commence pas par des tâches fastidieuses.
Sachez anticiper
Double Poche PHP & MySQL • 369
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×