_ ________________________ _ -*7*- `^°*;:,.>PHP/APACHE/MYSQL HOWTO<.,:;*°^` _____________________________/¯¯¯¯¯courou & tobozo¯¯¯¯\__________________________ ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸

Crédit

L'auteur : courou

Ce HOW-TO provient en grande partie de notre echange de mail avec tobozo
Il sera disponible de facon permanente et mis a jour régulierement sur le site
http://www.nexen.net/allreponse dans la section HOWTO de PHP

Sommaire

  • Qu'est ce que c'est le php3
  • Origine du php
  • C'est gourmand en ressource système ?
  • Je risque pas de me trouver face a un serveur UNIX ?
  • Ou trouver des hebergeurs qui supportent ses scripts ?
  • Ou telecharger PHP ?
  • Ou telecharger Mysql ?
  • Comment programme t'on ?
  • Ou trouver de la documentation ?
  • Comment connaitre ou reconnaitre son serveur ?
  • Pourquoi installer le serveur apache sur son PC ?
  • Comment installer et configurer le serveur apache sous windows ?
  • Comment installer et configurer le serveur apache/php3 sous UNIX ?
  • Installer mysql sous Unix ?
  • Installer mysql sous Windows ?
  • Installer mysql sous Windows NT ?
  • Installer MyAdmin ?
  • Ma page index.php3 ne se charge pas ?
  • Comment est structurée une base de donnée ?
  • Peut on utiliser un format texte (csv) au lieu d'utiliser mysql ?
  • C'est quoi un requete SQL
  • Les moteurs de recherche vont t-il indexer mon site malgres qu'il soit dynamique ?
  • Problème avec Note Pad (les retour chariots)
  • Un exemple concret de fichier csv
  • Quel est l'avantage d'une base de donnée ?
  • Un script qui permet d'afficher le contenu d'un fichier csv dans un tableau
  • Comment stocker le header dans un fichier php3 ?
  • Un exemple concret de header, footer, config et index.php3
  • Comment stocker les variables du config.php3 dans ma base de donnée ?
  • Comment faire des liens sur mes pages ?
  • Comment coder la police de caractere et la taille ?
  • Je suis heberge en php 4 , mes scripts sont en php3 et j'ai plein de WARNING ?
  • J'ai plein de table a creer je dois les creer à la main (y pas plus simple) ?
  • J'ai recupere un script php mais par quoi on commence ?
  • Impossible d'affichier un fichier qui se trouve dans un repertoire a partir de mon index.php3
  • Je n'arrive pas a faire varier mes pages a partir de l'index.php3 ?
  • Comment passer des variables d'une page à l'autre (la methode POST et la methode GET) ?
  • Ou trouver des scripts en php ?
  • La fonction mail() de php
  • La fonction page-1 ca existe ?
  • Comment faire quand j'appelle mes pages depuis la page index , pour ne pas rajouter de ../ devant chaque image ?
  • Comment proteger une page ?
  • Comment proteger un repertoire ?

  • Le php

    PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Java script ou un applet Java s'exécute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont:

    • La gratuité et la disponibilité du code source (PHP3 est distribué sous licence GPL)
    • L'accessibilite du langage aux debutants
    • la possibilité d'inclure le script PHP plus facilement au sein d'une page HTML qu'avec des scripts CGI
    • La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont supportées, mais la plus utilisée avec ce langage est MySQL, un SGBD gratuit sur les plateformes Linux et win32). Vous pourrez la télécharger ici.)
    • L'intégration au sein de nombreux serveurs web ( Apache, Microsoft IIS, ... )


    Origine du PHP

    Le langage PHP a été mis au point au début d'automne 1994 par Rasmus Lerdorf. Ce langage de script lui permettait de conserver la trace des utilisateurs venant consulter son CV sur son site, grâce à l'accès à une base de données par l'intermédiaire de requêtes SQL. Ainsi, étant donné que de nombreux internautes lui demandèrent ce programme, Rasmus Lerdorf mit en ligne en 1995 la première version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis Personal Home Page v1.0 (traduisez page personnelle version 1.0). Étant donné le succès de PHP 1.0, Rasmus Lerdorf décida d'améliorer ce langage en y intégrant des structures plus avancées telles que des boucles, des structures conditionnelles, et y intégra un package permettant d'interpréter les formulaires qu'il avait développé (FI, Form Interpreter) ainsi que le support de mSQL. C'est de cette façon que la version 2 du langage, baptisée pour l'occasion PHP/FI version 2, vit le jour durant l'été 1995. Il fut rapidement utilisé sur de nombreux sites (15000 fin 1996, puis 50000 en milieu d'année 1997). A partir de 1997, Zeev Suraski et Andi Gurmans rejoignent Rasmus pour former une équipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken, Shane Caraveo et Jim Winstead les rejoindra par la suite). C'est ainsi que la version 3.0 de PHP fut disponible le 6 juin 1998. A la fin de l'année 1999, une version bêta de PHP, baptisée PHP4 est apparue...



    C'est gourmand en ressource système ?

    Tout depend comment on l'utilise. Chez soi les ressources requises sont tres limitees, un simple 486 avec 64mo peut faire l'affaire. Pour plus de sollicitations, une config serveur standard peut faire l'affaire.



    Je risque pas de me trouver face à un serveur UNIX ?

    Les fournisseurs d'acces gratuits qui proposent php sont nombreux et heureusement pour nous, ils tournent pour la plupart sous X. Il n'y a pas besoin de savoir programmer sous unix pour faire du php, c'est la meme manip que pour du html, c'est le code qui change c'est tout ...



    Ou trouver des hebergeurs qui supportent ses scripts ?

    http://www.altasecu.com           ==>     php 3 / perl

    http://free.fr                               ==>     php 3 / mysql

    http://www.nexen.net                ==>     php 4 / mysql

    Nexen est le meilleur de tous les hébergeurs. Il tourne sur mysql et php4 (ca arrache)
    Par contre faut pas y mettre des trucs illégaux car l'administrateur surveille de près...



    Ou telecharger PHP

    Pour télécharger la version 4 cliquez ----------------) ici

    La version 4 en est deja a la release 2, il vous faudra aussi le zend optimizer. Pour les utilisateur de Windows, n' oubliez pas de renommer le fichier php3.ini.dist en php3.ini



    Ou telecharger MYSQL

    Pour télécharger MySQL cliquez -------------------------------) ici ou la

    Vous choisissez suivant votre OS (Windows 95/98, Windows NT, Linux, Unix, ...)



    Comment programme t'on ?

    Pour programmer il faut passer par deux phases :

    1. lire du code
    2. Écrire du code

    C'est toujours de l'édition à la main. Faut voir a classer les infos selon des critères qui n'apparaissent pas forcement sur la page. Une fois ces infos classées, on obtient des catégories, des noms, des dates, des niveaux techniques, des sujets, etc. ...Tout ça peut être organisé dans une base de donnée. Le php ou le perl pourrait servir a extraire les infos de la data base et a les mettre en forme html pour donner le même résultat que vous pourriez obtenir, mais en évitant d'avoir à retaper un code html complet à l'arrivée de chaque nouvelle information.



    Ou trouver de la documentation ?

    Si vous voulez la documentation complète sur php            cliquez ----------) ici
    Si vous voulez la documentation complète sur MySQL      cliquez ----------) ici

    La documentation c'est bien beau mais quand on est débutant dans ce langage même avec la documentation on a du mal a comprendre car il y a plein de condition si votre système c'est ça alors il faut faire ça etc...

    En faite, c'est le principe même de la programmation, des conditions conditionnelles, des fonctions récursives, rémanentes, etc... Tout ça c'est des infos, que vous pouvez oublier, il faut commencer par lister les infos que vous n'avez pas afin de pouvoir les récupérer ensuite.



    Comment connaitre ou reconnaitre son serveur ?

    La chose la plus importante est de connaître le serveur sur lequel on va installer notre site Web mais il y a une chance sur deux pour que ce soit un serveur apache vu qu'ils fournissent 50% des serveurs de la planète (gratuitement).
    Il y a deux solutions pour le connaître :

    1. Lire dans la documentation propre à l'hébergeur
    2. Ouvrir un compte et écrire ce script avec le bloc note ( enregistrez le au format et le balancer sur le serveur )
    <?php
    echo phpinfo();
    ?>

    Appeler ce fichier test.php3 et uploader le sur votre hébergeur . Ensuite, allez voir sur votre adresse web: http://votrehébergeur.fr/votre_compte/test.php3
    Et après , le serveur va vous afficher une page entière avec assez d'infos pour répondre à quelques unes de vos questions.
    Le meilleur moyen de tester ce langage est d'installer le même serveur que votre hébergeur (soit un serveur apache dans plus de 50 % des cas) car ce langage s'exécutent uniquement du cote serveur et pas du coté client.



    Pourquoi installer le serveur apache sur son PC ?

    Pour deux raisons :

    1. Car les langages php 3, php 4, ssi, cgi, etc. ...sont des langages qui s'exécutent du coté serveur et pas du coté client
    2. vous avancerez plus vite car vous pourrez tester en local vos scripts


    Comment installer et configurer le serveur apache sous windows ?

    La encore ça dépend de votre système :
    Le serveur apache est conçu pour marcher avec Linux, Unix à l'origine mais il existe une version pour Windows :

    • Linux, Unix télécharger votre version --------------)   ici
    • Windows télécharger version win 32 --------------)    ici

    SI votre disque dur a 2 partitions alors installer le sur le disque d:/
    De cette façon votre  serveur n'occupera pas le même disque que votre système. Quand vous installez votre serveur apache, choisissez de le mettre direct à la racine dans c:\apache ou d:\apache et faire pareil pour mysql (c ou d:\mysql) et php (c ou d:\php3). Une fois que vous avez installer apache, il faut modifier une ligne dans le fichier httpd.conf (il se situe dans le répertoire CONF)

    N'oubliez pas de faire une copie de votre fichier httpd.conf, car c'est le seul fichier que vous serez amener à modifier (il est très sensible)

    Recherchez la ligne ServerName; enlever le # (c'est comme un REM dans autoexec.bat) et vous mettez localhost comme nom de serveur :

    ServerName localhost

    Ca suffit pour rendre apache fonctionnel, après il faut amorcer le serveur en lançant l'exécutable, ce qui vous donnera une fenêtre msdos. Maintenant tester en local en mettant http://localhost/ dans votre  browser et ainsi vous pourrez accéder aux rubriques d'aide apache.
    Il faut également modifier cette ligne dans le httpd.conf , cherchez la ligne qui commence par : DirectoryIndex et vous la remplacez par :
    DirectoryIndex index.html index.htm index.php index.php3 index.phtml

    Ensuite recherchez la ligne : Addtype application et mettre ceci :

    • ScriptAlias /php3/ " d:/php3/ "
    • AddType application/x-httpd-php3 .php
    • AddType application/x-httpd-php3 .php3
    • AddType application/x-httpd-php3 .phtml
    • AddType application/x-httpd-php3-source .phps>
    • Action application/x-httpd-php3 " /php3/php.exe "

    La premiere ligne (ScriptAlias /php3/ " d:/php3/ ") se base sur le principe que vous avez installez php sur le lecteur D:\ si vous l'avez mis sur c:\ vous modifiez en conséquence.
    Après ça, vous sauvez, vous arrêtez et vous redémarrez apache et vous pouvez tester le code test.php3 . Il suffit de taper :http://localhost/test.php3"



    Comment installer et configurer le serveur apache/php3 sous Unix ?

    Allez prendre les sources sur http://www.apache.org ou http://www.php.net
    Maintenant, on configure Apache pour placer :
    - Les fichiers de config dans /etc/httpd
    - Les données qui seront installées dans /home/httpd
    - Les logs dans /var/log/httpd
    - Le reste sera installé par défaut dans /usr/local/apache

    tar xzfv apache_1.3.6.tar.gz
    $ cd apache_1.3.6.tar.gz
    $ ./configure --sysconfdir=/etc/httpd --datadir=/home/httpd
    --logfiledir=/var/log/httpd

    On va maintenant configurer PHP3 comme module d'apache avec le support MySQL:
    $ cd ..
    $ tar xzfv php-3.0.11.tar.gz
    $ cd php-3.0.11
    $ ./configure --with-mysql --with-config-file-path=/etc/httpd
    --with-apache=../apache_1.3.6 --enable-track-vars

    On installe PHP3...
    $ make
    $ make install

    Il faut à nouveau configurer Apache pour prendre en charge le module et l'installer. N'oubliez surtout pas de copier le fichier config de PHP3:
    $ cd ../apache_1.3.6
    $ ./configure --sysconfdir=/etc/httpd --datadir=/home/httpd
    --logfikedir=/var/log/httpd --activate-module=src/modules/php3/libphp3.a
    $ make
    $ su
    $ make install
    $ cd ../php-3.0.11
    $ cp php3.ini-dist /etc/httpd/php3.ini

    Il ne reste plus qu'a éditer le fichier config principal d'apache et éventuellement celui de PHP3 avant de lancer le serveur. Editez le fichier
    "/etc/httpd/httpd.conf" et vérifiez que le port est bien 80 et
    modifiez cette ligne:
    DirectoryIndex index.html index.php3
    Supprimez la et remplacez la par:
    AddType application/x-httpd-php3 .php3
    AddType application/x-httpd-php3-source .phps

    La partie installation est maintenant terminée, il ne reste plus qu'à tester.. :)
    Apache ce lance exactement comme MySQL, c à dire par un script:
    $ /usr/local/apache/bin/apachectl start



    Installer mysql sous Unix ?

    D'abord faut aller récupérer les sources sur http://www.mysql.net ou http://www.php.net
    Placez les ensuite par ex. dans /usr/local:
    $ cp mysql-3.22.25.tar.gz /usr/local

    décompressez-les:
    $ cd /usr/local
    $ tar xzfv mysql-3.22.25.tar.gz
    $ cd mysql-3.22.25

    Compilez:
    $ ./configure
    $ make
    $ make install

    Ca se complique un peu car il faut lancer un script qui va créer la base de donnée initiale de MySQL:
    $ /usr/local/mysql-3.22.25/scripts/mysql_install_db

    Le server est commandé par un script qui se trouve ici:
    $ /usr/local/mysql-3.22.25/support-files/mysql.server

    Maintenant il faut rendre le script éxécutable:
    $ chmod +x /usr/local/mysql-3.22.25/support-files/mysql.server

    Normalement MySQL est bien installé, pour vous en assurez tapez:
    local/mysql-3.22.25/support-files/mysql.server start
    et si vous voyez le msg "Starting mysql daemon with database from
    /usr/local/mysql/var" c que ca marche :)

    Une fois le serveur lancé vous pouvez vous y connecter en utilisateur root (root étant l'administrateur de MySQL) sans mot de pass. Pour plus de sécuritéon va donner un mot de passe à l'utilisateur root:$ /usr/local/mysql/bin/mysqladmin -u root password votre motdepasse
    Voilà, now c un peu plus sécurisé.. :)



    Installer mysql sous Windows 9x ?

    D'abord faut aller récupérer les sources sur http://www.mysql.net

    Installer la version télécharger en choissisant install par defaut puis vous lancez "mysqld.exe" directement depuis son folder (il s'execute en arriere plan donc si la fenetre msdos disparait c'est bon signe donc inutile de le lancer deux fois.)
    Pour verifier, aller sous dos et taper : telnet localhost 3306 La connexion va foirer mais elle affichera un truc comme :
    "3.xx.xx-version?-|LEVbhd" C'est la confirmation que le serveur tourne.
    Aucun reglage n'est requis vous pouvez utiliser immediatement myadmin avec localhost, root et aucun password.

    Si vous l'installez en local, va falloir editer votre php.ini et retirer le ";" qui se trouve devant la ligne :
    extension=php3_mysql.dll
    Et recopier cette ligne en haut de votre script sinon ca ne marchera pas



    Installer mysql sous Windows NT ?

    D'abord faut aller récupérer les sources sur http://www.mysql.net

    Choisir install par defaut et monter mysql en service.
    Pour ca, aller sous dos dans le repertoire
    c:/mysql/bin (ou autre si sélectionné) et taper :
    mysqld -- install

    Attention dans la derniere version de mysql, le nom de l'executable a changé, il s'appelle probablement mysqld-shareware.exe
    ex : mysqld-shareware --install

    Ensuite aller dans le panneau de configuration de windows NT et ouvrir l'icone services afin de verifier si mysql y figure bien et qu'il est démarré.



    Installer Myadmin?

    D'abord faut aller récupérer les sources sur http://www.phpwizard.net
    Télécharger MyAdmin. Decompressez le package dans un dossier se trouvant dans votre webdir, ensuite vous editez le fichier config.inc.php3 et vous y rentrez les infos necessaires (serveur, login, pass, nom de la base). ensuite il n'y a plus qu'a lancer index.php3 et vous voila sur votre base de donnée.(l'administration)



    Ma page index.php3 ne se charge pas ?

    Vous créez une page index.html et vous y mettez ce code :

    <html>
    <head></head>
    <body>
    <script>
    document.location="index.php3";
    </script>
    </body>
    </html>

    C'est du javascript et en plus ca empêche de retourner en arrière.

    Si vous avez la possibilité de modifier votre httpd.conf, allez voir la ligne qui contient les infos du DirectoryIndex et mettez ceci :
    DirectoryIndex index.html index.htm index.php3 index.php index.phtml
    Arretez et redemarrez apache et le tour est joué.

    Note : l'ordre des pages est arbitraire, si vous avez un fichier index.html ET un fichier index.php3 c'est le .html qui se lancera par defaut.



    Comment est structurée une base de donnée ?

    Une base de donnees est structuree comme suit :

    Nom de la base
    +---Table1
          +---champ1
          +---champ2
          +---champ3

    +---Table2
          +---champ1
          +---champ2

    +---Table3
          +---champ1
          +---champ2



    Peut on utiliser un format texte (csv) au lieu d'utiliser mysql ?

    Préambule :
    Le format texte est plus facile d'utilisation car il se sert des permissions locales pour gerer les acces aux ressources contenant les donnees (des fichiers au format texte).
    Pas besoin d'avoir de nom de host, user et mot de passe, car c'est NOBODY (ou un process dédié) qui effectue les opérations.
    Chaque acces devra passer par une verification des permissions au niveau du systeme de fichiers et on devient donc tres dependant des performances du serveur.
    En revanche MySQL est beaucoup plus rapide d'acces car il ne passe pas par les permissions du systeme de fichiers local.
    Il a son propre systeme d'authentification, il s'execute dans une zone séparée de la mémoire qui est partagée avec le préprocesseur php installé, ce qui a pour effet de booster les performances.


    On peut tres bien utiliser un fichier format texte pour stocker les informations au lieu de passer par mysql. Il faut commencer par classer les informations dans un fichier texte en respectant
    ce format :

    Une entree par ligne
    Chaque champ est séparé par un " ; "
    Tous les champs sont remplis
    Le ";" n'est pas utilise dans la valeur des champs

    Ceci est un format base de donnees classique (CSV) que vous pouvez reproduire, par exemple en exportant votre adressbook d'outlook.
    Ouvrez outlook express, cliquez sur fichier/exporter/exporter carnet d'adresse et choisir "fichier texte, valeurs separees par des virgules", vous donnez un nom de fichier , et vous y specifiez les champs que vous voulez exporter, et vous l'exportez sur votre bureau. Ensuite vous editez le fichier avec notepad (sans l'option retour a la ligne automatique). Vous pouvez constater que la premiere
    ligne comporte les titres des champs, et les autres lignes comportent des informations correspondant aux titres de ces champs.
    En terme de bases de donnees, cette premiere ligne contient le nom des champs, les autres lignes sont des entrees.
    Les champs font partie d'une table et la table fait partie de la base. C'est ainsi que l'on decrit la structure d'une base de donnees.
    Les differents champs sont separes par le " ; " et tout fonctionnera bien du moment que ce que vous ne mettez pas de " ; " ailleurs que comme separateur

    (exemple : http://www.blob.gag/abcg.htm?ukw=1264;&wxc=4564 )

    fera tout foirer car il y a un ";" dans l'url)
    Ceci dit,vous pouvez tres bien choisir d'utiliser deux ou trois caracteres comme separateurs (ex : "|!&" ), reduisant ainsi les chances de te retrouver avec des comportements indesires. Mais pour une question de compatibilite avec mysql, oracle etc, il vaut mieux s'en tenir au ";"

    Astuce : vous pouvez utilisez ce separateur " ¬ " à la place de " ; "



    C'est quoi un requete SQL

    C'est une phrase que vous composez pour demander a une base de donnees de
    livrer des infos.
    Plus votre phrase est complexe, plus la reponse de la base est precise.Vous avez par exemple 300 entrees dans la base , et vous voulez rechercher toutes les entrees dont la premiere lettre est P, qui datent de moins d'une semaine et qui contiennent le mot CRYPTO.
    votre phrase aura donc la syntaxe suivante :

    $$> use database Nom_de_la_base;
    $$> SELECT * FROM lexique WHERE (date-time()<3600*24*5) AND ((lettre='p') OR
    (lettre='P')) AND description LIKE %crypto%;


    En theorie vous etes connecte a la base de donnees en mode terminal, mais comme c'est la methode la plus debile et la plus chiante (pour ceux qui ont une vie sociale) on ne va en parler qu'en theorie, ca vous permettra d'imaginer une facon de la reproduire avec php3 (vous ecrivez votre ligne de requete une fois et vous l'executez plusieurs fois).
    La premiere ligne vous fait selectionner la base que vous allez utiliser (il peut y en avoir plusieurs).
    Le * apres select va informer le serveur DB qu'il va falloir renvoyer les valeurs dans TOUS les champs de la table 'lexique' pour chaque condition remplie (SELECT * from lexique).
    Le WHERE definit les conditions de la requete. Dans ce cas, on definit une limite dans le temps, assumant que chaque champ de la base a été populé avec des valeurs unix time, ce qui permet en comparant de savoir a quelle date l'entree a ete introduite dans la DB. Je suppose que vous connaissez les boleennes (OR, AND) et leurs priorites par rapport aux parentheses, elles affinent la recherche de la meme facon que quand vous mettez un + entre deux mots dans un moteur de recherche.
    Le LIKE vous premet de chercher une correspondance dans une chaine de longueur differente, donc si dans le champ description, il se trouve le mot crypto, la DB renverra toute l'entree.
    A la fin vous vous retrouverez avec un flux de donnees qui sont renvoyees sous forme de tableau (un peu comme le format CSV), il faut que vous ayez des outils pour pouvoir manipuler ca en tableau, l'instruction php qui s'occupe de ca est array() et il y en a d'autres.



    Les moteurs de recherche vont t-il indexer mon site malgres le fait qu'il soit dynamique ?

    Tout depend des parametres du moteur de recherche, un moteur comme dejanews par exemple ne sera pas dérangé par cette methode alors que google ou altavista devront systematiquement se référer aux tags META ainsi qu'au fichier ROBOTS.TXT qui doit se trouve a la racine de votre site
    (voir http://www.w3c.org pour les standards).


    Si vous remplissez bien le tag meta, il visitera seulement les pages de votre choix, aller donc voir sur http://phpwizard.net sur le meta generator, il est tres pratique (c'est un script php3)... Le code source est dispo dans la zone help/about



    Problème avec Note Pad (les retour chariots)

    Avec les fichiers csv, il ne faut pas de retour chariot mais quand la ligne est trop importante textpad rajoute des retour chariot (voici la question et les explications)

    ndt : achetez ce prog il est genial !

    Quand j'enregistre avec le notepad je choissis enregistrer sous au format texte mais quand je l'ouvre il me dit que c'est trop volumineux pourl'ouvrir avec le blocnote et me demande si je veux l'ouvrir avec notepad je dis oui et je m'appercois que certaine ligne ne sont plus a la ligne mais avec un retour chariot alors que dans mon note pad j'avais pas de retour chariot (ou est l'erreur)..

    Okay, il est temps de changer d'editeur texte, je te propose TEXTPAD, il existe en francais sur www.textpad.com
    Il colorise, le php, le javascript, le php, l'asp, etc, etc



    Un exemple concret de fichier csv

    Tout d'abord voici la table (c'est un exemple):

    +---astuce
          +---sujet
          +---fichier
          +---description
          +---date

    et voici le fichier csv qui y correspond

    sujet;fichier;description;date
    dos;dos001.htm;la commande dir;20/06/2000

    si un champs est vide par exemple ici on va prendre la date, vous remarquez que l'on ne met rien mais que l'on met tout de meme le separateur " ; "
    dos;dos001.htm;la commande dir;;



    Quel est l'avantage d'une base de donnée ?

    L'avantage premier d'une base de donnees est de pouvoir stocker des informations classées en grande quantité.
    La force de ce support est l'acces sélectif qu'il permet.
    Ces acces s'effectuent en formulant des requetes sous forme de phrases.
    Le standard le plus utilisé est le SQL (Simple Query Language) et il a été popularisé par ORACLE.

    L'autre avantage c'est qu'avec les DB (data base=base de donnée) vous les configurez une fois et apres vous n'y touchez plus
    Niveau DB une fois que c'est regle y a plus rien a faire.



    Un script qui permet d'afficher le contenu d'un fichier csv dans un tableau

    <?
    # le separateur
    $separator="¬";

    # le ou les fichiers a scanner
    $csvfile[0]="nom_de_votre_fichier.csv";
    // $csvfile[1]="nom_de_votre_fichier.csv";
    // $csvfile[2]="nom_de_votre_fichier.csv";
    // $csvfile[3]="nom_de_votre_fichier.csv";

    # le code html pour afficher :
    $table_in="<table align=center border=1>";
    $table_out="</table>";
    $row_in="<tr>";
    $row_out="</tr>";
    $field_in="<td bgcolor=#c0c0c0><nobr><font size=-1><b>";
    $field_out="&nbsp;</td>";

    # Combien de fichiers a scanner ?
    $nb=count($csvfile);
    $i=0;

    while($i<$nb)
    {
    # a activer si heberge par php4
    // error_reporting(1);
    $row=0;
    # ouvre le fichier csv en lecture
    $fpread=@fopen($csvfile[$i], "r") or die;
    echo $table_in;
    while ($buffer=fgetcsv($fpread, 65535, $separator))
    {
    # combien de champs ?
    $num = count($buffer);
    echo $row_in;
    $row++;
    for ( $c=0; $c<11; $c++ ) print
    $field_in.$buffer[$c].$field_out;
    echo $row_out;
    }
    echo $table_out;
    $i++;
    }
    ?>



    Comment stocker le header dans un fichier php3 ?

    Voici la structure d'un header contenu dans un fichiers html
    <html>
    <head>
    </head>
    <body background="back.jpg" bgcolor="#000000" text="#FFFFFF"
    link="#00FF00" vlink="#0000FF">

    Avec php vous pouvez stocker des donnees dans des variables, et elles seront reutilisables pendant tout le deroulement du script
    par ex :

    $couleur_fond="#000000";
    $couleur_texte="#ffffff";
    $couleur_titre="yellow";

    Apres a chaque fois quevous avez besoin de rappeler cette couleur
    vous rappellez la variable en l'ecrivant dans le document :
    <body bgcolor="<? echo $couleur_fond; ?>" text="<? echo $couleur_texte; ?>">
    etc..etc..

    De la meme facon, vous pouvez inclure un autre document a l'interieur de celui qui s'execute.

    Si par exemple vous remplacez le haut de votre page (et tout le code html ,head, body, bgsound, etc) par une ligne comme ca :

    <? include("header.php3") ?>

    vous creez au prealable un fichier header.php3 dans lequel vous recopiez le code html et vous pouvez deja exporter votre header et le reutiliser sur tout votre site en l'appelant de la meme facon :

    <? include("header.php3"); ?>

    vous pouvez faire la meme chose pour le footer.



    Un exemple concret de header, footer, config et index.php3

    le config.php3

    <?
    // les deux barres permettent d'ecrire un commentaire sans gener l'execution du code
    //couleur du texte et des liens
    $fond="#000000";
    $texte="#FFFFFF";
    $couleur_link="#00FF00";
    $couleur_vlink="#80FFFF";
    $couleur_alink="#FFFFFF";
    $topmargin="0";
    $title="ICI LE TITRE DE VOTRE SITE";
    ?>

    le header.php3

    <HTML>
    <HEAD>
    <META HTTP-EQUIV="remplissez vos meta tag">
    <META HTTP-EQUIV="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <TITLE><? echo $title; ?></TITLE>
    </HEAD>
    <BODY topmargin="<? echo $topmargin; ?>" background="<? echo $background; ?>" bgcolor="<? echo $fond; ?>" text="<? echo $texte; ?>" link="<? echo $couleur_link; ?>" vlink="<? echo $couleur_vlink; ?>" alink="<? echo $couleur_alink; ?>">

    ainsi grace au variable definie dans le config on recupere les valeurs

    $fond="#000000";
    $texte="#FFFFFF";
    $couleur_link="#00FF00";
    $couleur_vlink="#80FFFF";
    $couleur_alink="#FFFFFF";
    $topmargin="0";

    le footer.php3

    </BODY>
    </HTML>

    Ecrivez les balises qui terminent toutes vos pages html ou htm

    le index.php3

    l'index.php3 va recupe toutes les valeurs definies dans vos differents fichiers de configuration soit:

    <?
    include ("config.php3");
    include ("header.php3");

    //maintenant reste plus qu'a appeler un fichier soit :
    include ("votre_fichier"."php3");

    include ("footer.php3");
    ?>

    L'avantage de cette technique c'est que vous pouvez retirer tout le code html qui figure deja dans le config, header et le footer soit ici:

    <HTML>
    <HEAD>
    <META HTTP-EQUIV="remplissez vos meta tag">
    <META HTTP-EQUIV="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <META NAME="remplissez vos meta tag">
    <TITLE><? echo $title; ?></TITLE>
    </HEAD>
    <BODY>

    </BODY>
    </HTML>

    Maintenant vous pouvez changer l'apparance de vos pages grace a un seul fichier soit le config.php3

    Vous pouvez faire de meme pour les stats et les pub soit des fichiers php3 (statistique.php3 et publicite.php3)



    Comment stocker les variables du config.php3 dans ma base de donnée ?

    il suffit de creer une table variable dans laquelle on mettra des valeurs qui seront stocker de facon temporaires ou definitives .

    Variable
    .......+Var_nom
    .......+Var_valeur


    Comment on declare une variable ?
    D'abord on lui trouve un nom, ensuite on lui assigne une valeur.
    ex :
    x=1
    Le nom c'est "x" et sa valeur c'est 1.
    On a donc deux entites (nom et valeur) qui sont en commun avec tout ce que vous povez pouvoir manipuler.

    Il suffit de creer une table avec deux champs, "nom" et "valeur" et d'y stocker tout ce qu'il te faut :

    background=>back.jpg
    fond=>#000000
    texte=>#ffffff
    couleur_lien=>#00FF00
    couleur_vlien=>#0000FF
    fichier_sound1=>parfums.mp3
    fichier_sound2=>nuit.mp3

    En php ca donnerait :

    $background="back.jpg";
    $fond="#000000";
    $texte="#ffffff";
    $couleur_lien="#00FF00";
    $couleur_vlien="#0000FF";
    $fichier_sound1="parfums.mp3";
    $fichier_sound2="nuit.mp3";

    en csv :
    background¬back.jpg
    fond¬#000000
    texte¬#ffffff
    couleur_lien¬#00FF00
    couleur_vlien¬#0000FF

    etc......



    Comment faire des liens sur mes pages ?

    Disons que tous vos liens ne pointent plus sur des pages mais sur des donnees. Prenons l'exemple d'un lien qui va afficher le document page1.htm.
    Nous avons deux facons d'y arriver, la premiere (classique) est le lien hypertexte vers le nom du document, la deuxieme (php) est un lien hypertexte vers le script d'index (par defaut sur le serveur) avec envoi de donnee par le biais de l'url :
    1) <a href=page1.htm>Page1</a> methode classique
    2) <a href=index.php3?var_page=page1.htm>Page1</a> methode sophistiquee


    Dans le cas No1, Page1.htm existe et ne contient que du blabla texte, sans header ni footer,
    Si vous cliquez sur le lien votre page s'affiche mais pour revenir a l'index, vous etes oblige de revenir en arriere ou d'ajouter un lien "back" sur votre document page1.htm
    Pas tres pratique si vous avez 500 pages a modifier...

    Dans le cas No2, la page index.php3 debutera avec une variable deja declaree par l'url (equivalent de $var_page="page1.htm";) et on pourra donc la reutiliser dans le script.

    Dans index.php3 on se retrouve avec:
    <?
    include("config.php3");
    include("header.php3");

    if (file_exists($var_page)) { include($var_page); }
    else { include("404.htm"); }

    include("footer.php3");
    ?>

    Le if(file_exists) verifie si le fichier est bien present avant de le charger, ca evite l'affichage d'un message d'erreur. On peut meme gerer quelques types d'erreurs internes au cas ou le fichier
    appelé n'existe pas.

    Donc en appelant le document de cette facon : http://mon.domaine/index.php3?var_page=le_nom_de_ma_page.htm
    la page est generee "on the fly" (a la volee) et le petit feignant qui sommeille en chacun de nous se retrouve comblé par la satisfaction.



    Comment coder la police de caractere et la taille ?

    C'est le meme principe que pour le config et le header ...

    Dans votre config.php3 vous definissez vos variables :

     

    $font_f_title="<font face=verdana>";
    $font_s_title="<font size=2>";
    $font_c_title="<font color=blue>";

    $font_f_box="<font face=arial>";
    $font_s_box="<font size=2>";
    $font_c_box="<font color=blue>";

    f pour la face, s pour le size et c pour la couleur :ca permet de ci retrouver plus facilement plus tard :

    Dans le meme esprit vous pouvez definir les tables :
    $box_m_width="650";
    $box_m_height="400";
    $box_m_color="gray";
    $box_main="<table width=$box_m_width height=$box_m_height
    bgcolor=$box_m_color>";

    Ensuite il ne vous reste plus qu'a coder chaqu'un de vos fichiers htm ou html ou php3 :
    il suffit de rapeller vos variables , pour ce faire voici le code :

    ainsi vous pouvez remplacer votre <font face=verdana> par ceci < ? echo $font_f_title ; ?>

    mais vous pouvez faire ceci :

    $font_title="<font size=2 face=verdana color=#000000>";

    soit pour appeler toute la chaine <font size=2 face=verdana color=#000000>
    vous ecrivez ceci <? echo $font_title ; ?>

    vous pouvez egalement utiliser les feuilles de style pour faire ceci



    Je suis heberge en php 4 , mes scripts sont en php3 et j'ai plein de WARNING ?

    Ca se regle sans probleme avec ceci :

    error_reporting(o);
    ou
    error_reporting(1);



    J'ai plein de table a creer je dois les creer à la main (y pas plus simple) ?

    Vous avez probablement un fichier .sql qui vous est donne avec les scripts que vous recuperer et qui contient les commandes de creation des tables et champs.
    Vous avez un textarea dans MyAdmin
    "Exécuter une ou des requêtes sur la base nom_de_votre_base "
    Vous y collez le contenu de votre fichier .sql ou .mysql soit par exmple :

    CREATE TABLE vbooth_data (
    pollID int(11) NOT NULL,
    optionText char(50) NOT NULL,
    optionCount int(11) DEFAULT '0' NOT NULL,
    voteID int(11) DEFAULT '0' NOT NULL
    );

    et vous appuyez sur executer



    J'ai recupere un script php mais par quoi on commence ?

    Avec les scripts php en general il y a un fichier de config a triturer avant de commencer.



    Impossible d'affichier un fichier qui se trouve dans un repertoire a partir de mon index.php3

    Deplacez votre fichier a la racine et appelez des modules qui appellent des modules.

    ex:

    dans index.php3
    <?
    $var_page="votre_fichier";
    include($votre_fichier.".php3");
    ?>

    dans votre_fichier.php3 :*
    <?
    $sondage_folder="votre_repertoire";
    $vote_index_file="le_fichier_a_appeler";
    include($sondage_folder."/".$vote_index_file);
    ?>


    De cette facon le pointeur php reste a la racine, meme si vous incluez un fichier qui est dans un sous-sous-sous dossier, vous n'aurez plus a rajouter des "../" partout et votre dossier "votre_repertoire" peut etre deplace, renomme, mis dans un sous-dossier, sans que vous ayez a modifier aucun des fichiers qui s'y trouvent (vous modifiez juste le fichier qui appelle ce fichier)..



    Je n'arrive pas a faire varier mes pages a partir de l'index.php3 ?

    <?
    include("config.php3");
    include("header.php3");

    include("votre_page_accueil.php3");


    include("footer.php3");
    ?>

    Le probleme vient du faite que vous avez figé votre page sur l'accueil et du meme coup impossible de faire varier le contenu.

    Reprenons le schema de navigation :


    1ere visite => index.php3 affichera la page d'accueil (par defaut)
    1er click => index.php3 affichera la page appelée par le lien cliqué

    Les url se presenteront comme suit :
    http://mon.domaine/

    Et lors d'un appel de lien :
    http://mon.domaine/?page=liens
    http://mon.domaine/?page=astuces&section=win
    etc..etc

    Donc on peut s'appuyer sur une valeur hypothetique stoquee dans la
    variable $page.
    Meme chose avec $section (le dossier ou se trouve la page que vous voulez inclure)
    Si cette variable n'existe pas, on lui assigne une valeur par defaut :

    if (!$page) $page="votre_page_accueil";
    if(!$section) $section="pages/";

    ensuite on inclut le module appelé
    include($section.$page.".php3");

    Et sur vos liens vous pouvez mettre :
    <a href=index.php3?page=le_page_a_appeler&section=le_repertoire_ou_se_trouve_la page>le_titre_du_lien</a>



    Comment passer des variables d'une page à l'autre ( la methode POST et la methode GET ) ?

    Il y a deux facons :
    1) le formulaire (methode POST)
    <input name="nom_de_la_variable" value="valeur">
    Sera recu par la cible comme etant
    $nom_de_la_variable="valeur";

    2) le lien (la methode GET)
    <a href=nom_de_la_page_cible.php3?nom_de_la_variable=valeur&autre_variable=autr
    e_valeur>texte a lier</a>

    Une methode sympa en php consiste a remplacer les mots qui definissent les noms de variables par d'autres variables.



    Ou trouver des scripts en php ?

    Sur le site http://www.nexen.net/allreponse (dans la section bookmake puis php3 & php4)

    Sinon voici deux bonnes adresses :http://www.hotscripts.com/cgi-bin/search.cgi?query=php&category=All
    ou
    http://www.trippant.org/index.php3



    La fonction mail() de php

    Tout d'abord vous creez un fichier formulaire.html avec ceci:

    <html>
    <body>

    Veuillez vous en enregistrer : <br>

    <form method="post" action="traitement.php3">

    Nom : <input type="text" name="nom" value=""><br>
    Prenom : <input type="text" name="prenom" value=""><br>
    Pays : <input type="text" name="pays" value="France"><br>

    <select name="sexe">
    <option value="masculin">masculin
    <option value="feminin">feminin
    </select>

    <input type="submit" value="Envoyer">

    </form>

    </body>
    </html>

    ------------------------------------

    Maintenant, il faut recuperer les donnees avant de les envoyer
    Creer le fichier traitement.php3 comme specifier plus haut avec ceci:

    <html>
    <body>

    Les informations suivantes nous ont été envoyées : <br>
    <?

    //On affiche ici les informations saisie
    echo " Nom : $nom <br>";
    echo " Prenom : $prenom <br>";
    echo " Pays : $pays <br>";
    echo " Sexe : $sexe <br>";

    //On envoit un mail contenant les données
    mail("mon@adresse.email","Formulaire en ligne","$nom\n$prenom\n$pays\n$sexe","From: mon@adresse.email\nReply-To: mon@adresse.email");

    ?>

    </body>
    </html>


    Maintenant imaginons que tout votre site est gere dynamiquement soit à la place de :
    <form method="post" action="traitement.php3">
    on ecrit surtout pas ca (bien que ca fonctionne:
    <form method="post" action="index.php3?section=votre_repertoire/&page=la_page_traitement">

    il faut ecrire ceci plutot parce que dans un post, on ne precise que l' URI et non pas l' URL soit :
    <form method=post action=index.php3>
    <input type=hidden name="section" value="votre_repertoire/">
    <input type=hidden name="page" value="la_page_traitement">

    et dans votre page d'index vous mettez ceci :
    if($page=="") $page="votre_page_d'accueil_du_site";
    if($section=="") $section="votre_repertoire_ou_se_trouve_la_page_d'acceuil";
    if (file_exists("$section$page.php3"))
    { include ("$section$page.php3"); }

    Elle déconne gravement sur toutes les versions de win32.



    La fonction page-1 ca existe ?

    Cette fonction existe mais c'est du javascript
    <a href="" onclick="history.back()">Page précedente</a>

    Toutefois, il est possible de le faire en php aussi :
    <a href="<? echo $HTTP_REFERRER; ?>">Page précedente</a>



    Comment faire quand j'appelle mes pages depuis la page index , pour ne pas rajouter de ../ devant chaque image ?

    Le "../" est commun a toutes vos images quand une condition est remplie.
    Identifiez cette condition et attribuez lui la valeur commune "../"
    Ex :
    dans le config.php3
    if($section!="") $image_folder="/$section../images";

    dans vos fichiers :
    echo "<img src=$image_folder/image.gif>";

    eventuellement vous redeclarez la variable pour chaque section comme ca vous pouvez meme definir un dossier image par folder.



    Comment proteger une page ?

    Vous avez juste a remplacer "login" par votre nom et "pass" par votre mot de passe

    <?php
    if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic entrer=\"Entrer dans la page\" ");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Vous avez appuyé sur le bouton annuler!!!\n";
    exit;
    } else {
    if ( ($PHP_AUTH_USER == "login") && ( $PHP_AUTH_PW == "pass" ))
    {
    echo "<html><body><center><h1>BIENVENUE <P></h1></center></body></html>";
    }
    else
    {
    echo "<html><body><center><h1>VOUS N'AVEZ PAS L'AUTORISATION<P></h1></center></body></html>";
    }
    }
    ?>



    Comment proteger un repertoire ?

    DEMANDER AVANT A VOTRE HEBERGEUR S'IL AUTORISE CETTE FONCTION

    Voici tout d'abord le premier fichier, que l'on appelera : htaccess
    Celui-ci contient les directives qui nous permettent de protéger le répertoire.


    --------------------------------------------------------------------------------

    AuthUserFile home/repertoire/.htpasswd
    AuthGroupFile /dev/null
    AuthName ByPassword
    AuthType Basic

    <limit GET>
    require valid-user
    </Limit>


    --------------------------------------------------------------------------------

    Maintenant, créer un cichier qui contiendra les couples : Nom d'utilisateur + login.
    Nous appelerons ce fichier : htpasswd
    Ce fichier ce présente sous la forme suivante :

    martin:Xfv46GgHz
    jean:FrgyHYJUJjj
    Francois:FRZScgtHYk

    il est possible de crypter les mots de pass a cette adresse vous trouverez ce genre d'outil :
    http://php3.hebergement-discount.com/protection.php3

    Vos fichiers htpasswd et htaccess sont terminé.
    Envoyez les sur le serveur dans le répertoire à protéger.
    Renommez les en .htpasswd et .htaccess