|
|
Signaler
Posté le 02/06/09 à 18:42:09
![]() A] Faq générale I) Php, c'est quoi ? II) Qu'est-ce qu'il me faut pour développer en php ? B] Faq technique: le langage, les erreurs classiques, les remèdes I) Headers already sent II) Parse error in... leFichierPhp.php on line xxx III) Warning: mysql_fetch_xxx(): supplied argument is not a valid MySQL result resource in... leFichierPhp.php on line xxx IV) Mon code s'affiche dans le navigateur au lieu d'etre interpreté C] Bonnes pratiques I) Coder avec la configuration la plus restrictive possible II) Separer les couches FAQ GénéraleI) Php, c'est quoi ? Citation externe Php, c'est un langage de script coté serveur, qui permet de rendre des pages web dynamiques. Php s'utilise aussi en mode CLI, en ligne de commande ( lancer un traitement lourd par une requete HTTP alors qu'on dispose d'un accès SSH sur le serveur relève de la connerie pure et simple ).Certains disent que php est une incarnation de satan, un langage avec plus de défauts que d'avantages, d'autres ne veulent entendre parler de rien d'autre, ce débat n'a pas sa place ici. Php, on l'aime ou on le quitte ![]() Lire la définition de Php dans Wikipedia II) Qu'est-ce qu'il me faut pour développer en php ? Citation externe Pour écrire du Php, théoriquement un simple notepad suffit ( comme pour la majorité des langages d'ailleurs ). Mais bon, depuis que Dieu a inventé la coloration syntaxique, faut pas s'en priver.Sous windows, Notepad++ est un outil idéal, coloration multilangages, editeur multi-fichiers avec onglets, macros... Il ne lui manque en fait que le support des outils de versionning et un client ftp intégré. Télécharger Notepad++ Sous mac, Textmate fonctionne très bien, jpeux pas en dire plus, si un macqeux veut donner des précisions, qu'il fasse signe. Télécharger Textmate ( version d'eval 30j ) Sous linux, Emacs ou Vi, mais en général les gens sous linux sont barbus et n'ont pas besoin qu'on leur conseille un éditeur ![]() [quotemsg=1604087,8,144132]* Pour les éditeurs sous nux, il y a Qanta si je ne me trompe pas. Tout le monde n'utilise pas VI ou Emacs ![]() (moi chuis pas sous nux, mais j'utilise Emacs sous Windows et sous OSX )FAQ TechI) Headers already sent Citation externe Warning: Cannot modify header information - headers already sent by (output started at chemin/physique/du/script1.php) in chemin/physique/du/script2.php on line XXX ) Question trop souvent posée sur le forum, alors qu'il suffit de lire le message d'erreur pour comprendre précisément ce qui se passe: Les fonctions header() et session_start() doivent impérativement etre appelées avant que votre script n'envoie un seul octet vers le navigateur. La raison est assez triviale, un en-tete précède le contenu, si vous envoyez du contenu, l'en-tete par défaut est envoyé. Pour debugger, il faut lire le message d'erreur: ici l'appel à session_start() ( ou header() ) se fait dans le fichier chemin/physique/du/script2.php alors que le script a déja commencé à envoyer des données dans chemin/physique/du/script1.php à la ligne XXX. Il faut vérifier egalement tous les fichiers que vous include()z, la moindre ligne vierge avant <?php sera envoyée au navigateur et vous empechera de changer votre en-tete. Une autre source potentielle de soucis, si vous faites des traitements ( en particulier des requetes sql ) avant d'envoyer vos headers, la moindre erreur ou warning générée par votre code empechera header() ( ou session_start() ) de fonctionner. Citation externe Pour Headers Already Sent, il y a aussi le problème du BOM UTF-8 qui, non reconnu par le parseur PHP, est envoyé au serveur web quand il est présent![]() II) Parse error in... leFichierPhp.php on line xxx Citation externe Si vous obtennez ce genre d'erreurs, pensez en premier à relire le point A) II). Il vous faut impérativement un éditeur à coloration syntaxique pour éviter les erreurs les plus classiques. En effet Dieu a inventé la coloration syntaxique et il serait triste de s'en passer.Et oui ce genre d'erreur vient, la plupart du temps, de fautes de frappe dans le code que vous avez saisis. Ces erreurs sont facilement repérabales à l'aide d'un bon EDI (Environnement de développement intégré). Si l'erreur persiste, pensez à vérifier à la ligne précédente! Par exemple, une erreur à lé ligne 26 peut venir d'un ; oublié à la ligne 25! III) Warning: mysql_fetch_xxx(): supplied argument is not a valid MySQL result resource in... leFichierPhp.php on line xxx Citation externe Ceci n'est pas seulement valable pour MySQL. Mais comme c'est certainement le plus répendu chez les débutants, nous attaquerons par là!Lorsque vous rencontrez ce genre d'erreur, et de manière plus générale, lorsqu'une requête ne change rien à votre base de données pensez à faire appel à la fonction mysql_error() juste après un appel à mysql_query(). Cette fonction vous en dit généralement plus sur l'erreur que vous avez comis lors de la saisie de votre requête en retournant une chaîne décrivant l'erreur en question. Vous pouvez également tester votre requête dans un système d'aide à la gestion de votre base de donnée tel que phpMyAdmin dans lequel vous pouvez saisir directement votre requête et obtennir moultes informations sur les problèmes survenus lors de l'exécution de celle-ci. IV) Mon code s'affiche dans le navigateur au lieu d'etre interpreté Citation externe Premier travail, copier/coller le script suivant dans un nouveau fichier, qu'on nommera affectueusement test.php:<?phpLe but est de procéder par élimination pour trouver le problème rapidement. Mettez ce fichier à la racine de votre htdocs et ouvrez http://127.0.0.1/test.php dans votre navigateur. Si vous voyez le contenu du fichier, votre installation de Php s'est mal déroulée, Apache ne demande pas à Php d'interpréter le fichier avant de le servir. Vérifiez votre httpd.conf, notemment la ligne de l'extention php doit etre décommentée. Si le fichier s'exécute normalement, un tableau apparait, donnant l'etat de la configuration de Php et la liste des modules actifs. Dans ce cas, l'erreur est certainement dans votre code, les deux sources les plus fréquentes étant l'utilisation de shorttags alors que le serveur ne le permet pas, ou du code php dans un fichier portant l'extention htm. Bonnes pratiquesI) Coder avec la configuration la plus restrictive possible II) Séparer les couches Citation externe Quand on commence le php, on a vite tendance a faire du code bordélique, des requetes sql suivis d'un echo(), faire des copier/coller à gogo au lieu de définir des fonctions...Quand il s'agit de faire un test vite-fait, passe encore ![]() Lorsque vos scripts ont pour vocation d'etre exploités sur un site web, il faut revoir la facon dont on organise son appli. Le minimum syndical, c'est de créer les fichiers suivants: - config.php Infos de connexion à la base de données, constantes utilisées dans tout le site.- header.php En-tete du site ( rien à voir avec la fonction du meme nom ), typiquement, doctype html, metas, logo, menu de navigation...- footer.php Pied de page, code de stats, etcL'étape d'après, c'est l'utilisation d'un système de templates ( php natif ou search/replace ). Il en existe plusieurs, le plus simple etant phpLib ( utilisé par phpBB ), un des plus complets etant Smary. L'étape encore après, et la, c'est tout de suite moins drole, est de construire son site sur une architecture MVC. |