Déroulement réel des cours

La « pensée » du Disadorn, d'an 17 a viz Eost 2019 , 14h42m55s :
Plusieures réponses de présidents français agressés verbalement :
* De Gaulle : À la descente d'un avion, un homme lui crie "Mort aux cons !", il répond "Vaste programme".
* Mitterrand : À un "Mitterrand, fout le camp", il répond "Ça rime, certes, mais la rime est pauvre".
* Chirac : Traité de "connard", "Enchanté, moi c'est Jacques Chirac".
* Sarkozy : au Salon de l'agriculture à Paris, à un visiteur qui le repousse, "Casse-toi alors pauvre con !"
1 : semaine du lendi 21 janbier 2008
 Cours n°1 (Cumul=2h) : [Voir le CM n°1]
 TD n°1 (Cumul=3h) : [Voir le TD n°1]
2 : semaine du lendi 28 janbier 2008
 Cours n°2 (Cumul=4h) : [Voir le CM n°2]
 TD n°2 (Cumul=6h) : [Voir le TD n°2]
3 : semaine du lendi 4 fébrier 2008
 Cours n°3 (Cumul=6h) : [Voir le CM n°3]
 TD n°3 (Cumul=9h) : [Voir le TD n°3]
4 : semaine du lendi 11 fébrier 2008
 Cours n°4 (Cumul=8h) : [Voir le CM n°4]
 TD n°4 (Cumul=12h) : [Voir le TD n°4]
5 : semaine du lendi 25 fébrier 2008
 Cours n°5 (Cumul=10h) : [Voir le CM n°5]
 TD n°5 (Cumul=15h) : [Voir le TD n°5]
6 : semaine du lendi 3 môrs 2008
 Cours n°6 (Cumul=12h) : [Voir le CM n°6]
 TD n°6 (Cumul=18h) : [Voir le TD n°6]
7 : semaine du lendi 10 môrs 2008
 Cours n°7 (Cumul=14h) :
  • EasyPHP.
  • Utiliser un éditeur de texte plus évolué : Quanta.
    Avantages :
    • Coloration syntaxique.
    • Auto-complétion des balises, des attributs des balises et des paramètres des fonctions PHP.
    • Fermeture automatique de la dernière balise non fermée en tapant seulement « </ ».
    • Quand une balise ouvrante est modifiée, la balise fermante est automatiqument modifiée.
    • Quelques boutons prédéfinis (pour insertion de texte, balises, d'entités ou de commentaires).
    • Permet de travailler en projets.
    Inconvénients :
    • Plante parfois inexplicablement, sauvegardez régulièrement.
    • Comme tout processus automatique, la modification automatique des balises peut entrainer des effets indésirables.
  • Programmation séparée en PHP (Chapitre 12. du poly).
    Exemples d'utilisations :
    • Un fichier debutdepage.php qui regroupe le texte commun à toutes les pages (DOCTYPE, BODY, HEAD, TITLE, etc.).
      Chaque page du site commence par <?php require("debutdepage.php"); ?>. Si on veut avoir un titre différent sur chaque page, celà oblige à recourir à des variables globales.
      On peut faire la même chose avec la fin de page.
    • Une page fonctions.php regroupe toutes les fonctions utiles dans les pages, communes ou pas (debutdepage($t), menu(), findepage(), etc.) et chaque page commence par <?php require("fonctions.php"); ?>.
  • Sessions.
    Le texte qui suit est une partie de la page consacrée aux sessions sur le site de http://fr.php.net :
    Le support des sessions de PHP est un moyen de préserver des données entre plusieurs accès. Cela vous permet de créer des applications personnalisées, et d'augmenter l'attrait de votre site.
    Chaque visiteur accédant à votre page web se voit assigner un identifiant unique, appelé "identifiant de session". Il peut être stocké soit dans un cookie, soit propagé dans l'URL.
    Le support des sessions vous permet d'enregistrer un nombre illimité de variables qui doivent être préservées entre les requêtes. Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si session.auto_start est activé) ou sur demande (explicitement avec session_start() ou implicitement avec session_register()) s'il existe une session du même nom. Si c'est le cas, l'environnement précédemment sauvé sera recréé.
    La seule fonction nécessaire pour un usage simple des sessions est session_start(), mais je ne peux que vous encourager à aller voir les autres.
  • Application : identification des visiteurs.
    Principe :
    • Deux variables de session contiennent le login et le mot de passe du visiteur (variables vides si le visiteur n'est pas identifié).
    • Si le visiteur n'est pas identifié, le menu propose un choix Se connecter qui envoie sur un formulaire de saisie (on peut aussi inclure ce formulaire directement dans le menu). Si le visiteur est identifié, le menu propose un choix Se déconnecter qui vide les variables de session qui contiennent le login et le mot de passe du visiteur.
    • Chaque page commence par quelque chose qui ressemblera à :
                if (le visiteur n'a pas le bon niveau d'autorisation pour cette page) {
                       message de refus
                       fin de page
                       return ;
                }
  • Problèmes lors d'une insertion, d'une suppression ou d'une modification : l'intégrité référentielle.
    Les flèches du MLD de la base TeniRaq sont codées dans la structure : ce sont les FOREIGN KEYS (clefs étrangères) utilisées lors de la création de la base. Le serveur Postgres utilise ces FOREIGN KEYS pour vérifier l'intégrité référentielle des données.
    Exemples de conséquences :
    • une fiche de voirie ne peut être détruite que si aucune fiche de joueur n'y fait plus référence (par le champ refvoirie) ;
    • le champ refvoirie ne peut être rempli qu'avec un identifiant de voirie valide ;
    • un enregistrement de la table matchs ne peut être rempli qu'avec un numéro de badge de vainqueur (refvainqueur) et un numéro de badge de perdant (refperdant) valides ;
    • etc.
    Autre cas où le serveur Postgres vérifie l'intégrité référentielle des données : les valeurs NOT NULL. Par exemple dans la description de la table reservations on trouve refreservant INTEGER NOT NULL. Cela signifie qu'un enregistrement dans la table reservations ne pourra être créé que si le champ refreservant est rempli. (Comme de plus ce champ est une clef étrangère faisant référence à un joueur, il devra être rempli avec une référence à un joueur existant.)
  • Insertion d'un enregistrement.
    D'après ce qui précéde, il faut que les champs correspondant à des FOREIGN KEYS ne puissent pas être remplis à la main, mais seulement par l'intermédiaire de listes déroulantes allant chercher leurs valeurs dans les tables de la base.
    De toutes façons c'est une généralité :
    Quand il y a interaction avec l'utilisateur dans un programme (formulaire par exemple), il faut toujours privilégier les choix fermés quand c'est possible : plus vous laissez de liberté dans la saisie, plus vous devez contrôler la validité des données fournies.
    Par exemple, dans le cas particulier du projet, si vous voulez insérer un nouveau joueur, vous avez deux solutions :
    • une unique liste déroulante des rues accompagnées de leurs villes,
    • ou une liste des villes, et quand la ville est sélectionnée, la liste des rues de la ville choisie...
    Mais alors surgit un autre problème : et si on veut inscrire une personne dont la rue ne figure pas dans la base ? Une seule solution : prévoir des formulaires de création de villes et de création de rues...
  • Insertion d'un enregistrement, suite : comment choisir un identifiant ?
    L'identifiant de chaque table est une clef primaire (PRIMARY KEY) Il doit donc être unique pour chaque enregistrement. Comment faire pour créer un identifiant unique ?
    La solution la plus simple est sans doute, par exemple pour la table voiries :
    INSERT INTO values VALUES ( 1+(SELECT MAX(codevoirie) FROM voiries), .....)
  • Les problèmes posés par la suppression en cascade.
    Si vos pages doivent supprimer des enregistrements, attention aux contraintes d'intégrité référentielle sur les clefs étrangères.
    Vous ne pourrez par exemple pas :
    • supprimer un joueurs si tous les matchs qui le concernent n'ont pas d'abord été supprimés,
    • supprimer un niveau d'autorisation si tous les badges qui sont concernés n'ont pas d'abord été supprimés ou modifiés,
    • supprimer une ville si toutes ses voiries n'ont pas d'abord été supprimées,
    • supprimer une rue si tous les joueurs qui y habitent n'ont pas d'abord été supprimés ou modifiés,
    • etc.
Dernière modification : 25/8/2016
 TD n°7 (Cumul=21h) : [Voir le TD n°7]
8 : semaine du lendi 17 môrs 2008
 Cours n°8 (Cumul=16h) : [Voir le CM n°8]
 TD n°8 (Cumul=24h) : [Voir le TD n°8]
9 : semaine du lendi 24 môrs 2008
 Cours n°9 (Cumul=18h) : [Voir le CM n°9]
 TD n°9 (Cumul=27h) : [Voir le TD n°9]
10 : semaine du lendi 31 môrs 2008
 Cours n°10 (Cumul=20h) : [Voir le CM n°10]
 TD n°10 (Cumul=30h) : [Voir le TD n°10]
11 : semaine du lendi 21 averil 2008
 TD n°11 (Cumul=33h) : [Voir le TD n°11]
12 : semaine du lendi 28 averil 2008
 TD n°12 (Cumul=36h) : [Voir le TD n°12]
Dernière modification : 25/8/2016