Editions ENI PHP 5 - MySQL 5 - AJAX Entraînez-vous à créer des applications pro

Editions ENI PHP 5 - MySQL 5 - AJAX Entraînez-vous à créer des applications professionnelles dans la collection Les TP Informatiques Extrait Chapitre 4 : Accès aux données MySQL 5 depuis PHP  Durée : 5 heures 50  Mots-clés : requêtes SQL, présentation de données, connexion php-mysql, attache- ment de fichiers, persistance, serveurs d’applications  Objectif Une fois l’installation de la base de données accomplie, se pose la question de sa mise en œuvre. Comme MySQL ne dispose pas d’un environnement dédié pour la production d’applications client/serveur, c’est souvent au travers de PHP qu’on la retrouve. Ce cha- pitre vise à trouver un équilibre entre le monde SQL et le monde de la programmation client/serveur. À l’issue de ce chapitre, vous serez capable : d’utiliser une classe PHP pour présenter une table MySQL au format HTML. de proposer des fonctions standard sur cette table en limitant le couplage MySQL/HTML. d’optimiser les performances de lecture d’une table en fractionnant la présentation en pages. de stocker dans une base MySQL des fichiers binaires et de les retrouver. de mettre en place un système de mapping objet/relationnel, très utile pour la réali- sation d’applications distribuées. Pré-requis Pour valider les pré-requis nécessaires, avant d’aborder le TP, indiquez si les affir- mations ci-après sont vraies ou fausses.  MySQL est la seule base de données qui fonctionne avec PHP.  MySQL ne fonctionne qu’avec PHP.  MySQL ne fonctionne que sous Unix.  PHPMyAdmin est indispensable pour administrer une base MySQL.  MySQL ne connaît pas la notion de schéma. 49 Accès aux données MySQL 5 depuis PHP ÉNONCÉS DU CHAPITRE 4 © Editions ENI - Toute reproduction interdite  Énoncé 4.1 : Création d’une classe PHP pour présenter une table MySQL Durée estimative : 45 minutes Les programmeurs PHP écrivent continuellement les mêmes lignes pour obtenir des résultats finalement très proches. Le scénario est si bien connu que l’on ga- gne à les placer dans une classe plutôt que dans un simple fichier include. Cette classe aide à opérer la distinction entre le domaine de la présentation HTML et le domaine de la manipulation des bases de données. Nous nous proposons de réaliser une telle classe pour présenter une table MySQL et ses enregistrements au travers d’une page PHP. La classe contient des fonc- tions indépendantes de la présentation telles que la suppression et l’exploration détaillée d’enregistrements.  Créez sous MySQL une base Guide et une table Restaurant contenant les champs suivants : Champ Type id entier calculé automatiquement, clé primaire nom texte adresse texte prix double 50 PHP 5 - MySQL 5 - Ajax LES TP INFORMATIQUES © Editions ENI - Toute reproduction interdite Champ Type commentaires texte note double visite date Insérez quelques enregistrements.  Concevez une page PHP pour présenter les données sous forme tabulaire.  Concevez une classe MyTable dans un fichier bases.php pour initialiser la connexion et effectuer la requête select dans le constructeur, sans toutefois afficher les données.  Ajoutez une méthode rendre_html() à la classe pour afficher les données sous forme tabulaire.  Ajoutez une méthode info_table() pour extraire et copier dans un ta- bleau PHP les noms des colonnes présentes dans le résultat de la requête.  Modifiez la méthode rendre_html() pour faire figurer les noms des colon- nes sur la première ligne.  Modifiez la fonction info_table() pour déterminer le nom de la colonne qui sert de clé primaire.  Modifiez la méthode rendre_html() pour insérer un lien vers une URL para- métrée pour chaque enregistrement (par exemple detail.php?id=34). Indices pour l’énoncé 4.1  Utilisez PHPMyAdmin.  Reprenez l’exemple habituel, en prenant soin de ne pas trop imbriquer code HTML et code PHP : adoptez le style de programmation "cgi".  Il faut profiter du fait que l’on peut donner des paramètres au constructeur pour le rendre le plus général possible.  Il suffit de déplacer le code de la question 2 dans une fonction de la classe MyTable.  Consultez la documentation pour déterminer quelles fonctions de l’API PHP vous donnent accès à ces informations.  L’appel de la méthode info_table() sera fait dans le constructeur plutôt que dans rendre_html().  Même conseil que pour la question 5. 51 Accès aux données MySQL 5 depuis PHP ÉNONCÉS DU CHAPITRE 4 © Editions ENI - Toute reproduction interdite  Le paramètre peut faire partie de l’URL pour être remplacé en utilisant les expressions régulières. En général, on utilise une séquence telle que {0}. Il est également possible de passer l’URL, le nom du paramètre et le champ servant d’identifiant comme arguments à la méthode rendre_html(). La programmation est alors plus simple. Énoncé 4.2 : Pour aller plus loin : suppression d’enregistrements Durée estimative : 20 minutes Cet exercice sur la suppression d’enregistrements vous donnera des idées pour finalement éditer toutes les colonnes de la table considérée.  Modifiez la méthode rendre_html() pour ajouter des boutons destinés à supprimer un enregistrement.  Ajoutez une méthode chargée d’interpréter les événements produits par ces boutons. Indices pour l’énoncé 4.2  N’oubliez pas d’insérer un formulaire pour que vos boutons soient actifs. Ajou- tez un champ caché pour passer l’identifiant de la ligne à supprimer. Ajoutez également une fonction JavaScript chargée de remplir le champ caché et de publier le formulaire.  La fonction JavaScript a rempli un champ caché qui contient l’identifiant de la ligne à supprimer. Il suffit de récupérer la valeur de ce champ côté PHP et de procéder à la suppression. +MyTable() +info_table() +rendre_html() +supprimer() -$connexion -$requete -$result_set -$table -$base -$colonnes_rc -$colonnes -$id MyTable 52 PHP 5 - MySQL 5 - Ajax LES TP INFORMATIQUES © Editions ENI - Toute reproduction interdite Énoncé 4.3 : Présentation paginée d’une table MySQL Durée estimative : 40 minutes Il est souvent nécessaire de fractionner la lecture et l’affichage d’enregistre- ments issus d’une base de données, les performances et la lisibilité s’améliorent alors nettement. La construction d’un dispositif permettant ce fractionnement est l’objet de ce TP.  Créez une base Annuaire à l’aide PHPMyAdmin ou d’un script sql, ainsi qu’une table Personne contenant les champs ID (auto_increment), NOM (text) et TELEPHONE (text).  Créez un script peupler.php, non nécessairement sous la forme d’une page web, chargé d’alimenter la table. Pour cela, préparez deux chaînes de ca- ractères, l’une contenant des prénoms séparés par des virgules, l’autre avec des noms de famille. Utilisez le découpage (split) pour générer des tableaux. Utilisez ensuite une fonction de génération automatique de coordonnées, as- sociant un prénom, un nom, et un numéro à 4 chiffres. Évitez les doublons. Chaque entrée générée est insérée dans la base. Générez une centaine de lignes.  Construisez une page annuaire.php chargée de présenter l’intégralité des li- gnes. Cherchez une solution très simple, très concise.  Testez la vitesse d’exécution et proposez des améliorations. Inutile d’afficher l’heure au dixième de seconde près.  Utilisez des paramètres sur la chaîne d’interrogation (query string) pour contrôler le nombre d’enregistrements présentés ainsi que l’enregistrement de départ. Annuaire Peupler.php Annuaire.php 53 Accès aux données MySQL 5 depuis PHP ÉNONCÉS DU CHAPITRE 4 © Editions ENI - Toute reproduction interdite  Estimez la différence d’exécution. Il est toujours inutile d’afficher l’heure. Indices pour l’énoncé 4.3  Un script est plus difficile à mettre au point mais il peut resservir. Pour faire fonctionner un script, utilisez la ligne de commande mysql : mysql -u root -h localhost < script.txt  Il n’est pas nécessaire de créer une page web : la mise au point du jeu de données est une opération unitaire, elle ne concerne qu’une seule personne, l’administrateur (ou le formateur). Ainsi on ne perd pas de temps avec des détails de mise en forme HTML.  Travaillez sur la requête SQL en fonction des paramètres. Pensez à donner des valeurs par défaut aux paramètres. 54 PHP 5 - MySQL 5 - Ajax LES TP INFORMATIQUES © Editions ENI - Toute reproduction interdite Editions ENI PHP 5.2 Développer un site Web dynamique et interactif dans la collection Ressources Informatiques Extrait                                                                    <FORM>  </FORM>  <FORM [ ACTION="url_de_traitement" ] [ METHOD="GET"|"POST" ] [ NAME="nom_formulaire" ] > ... </FORM>       <FORM>       ACTION !       "      #$      % $     $    & & '       $ ( !       METHOD                 %  )* "  uploads/s3/ php-mysql-ajax-extraits-des-livres.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager