• Aucun résultat trouvé

Exercice Ecrire une page qui affiche « Recherche PHP » et qui permette, quand on clique dessus, d’afficher une page google avec les résultats d’une recherche sur le mot clé « php ».

N/A
N/A
Protected

Academic year: 2022

Partager "Exercice Ecrire une page qui affiche « Recherche PHP » et qui permette, quand on clique dessus, d’afficher une page google avec les résultats d’une recherche sur le mot clé « php »."

Copied!
12
0
0

Texte intégral

(1)

Exercice

Ecrire une page qui affiche « Recherche PHP » et qui permette, quand on clique dessus, d’afficher une page google avec les résultats d’une recherche sur le mot clé « php ».

Exercice

Soit les 2 pages php suivantes : index.php et blog.php.

La balise nav contient un ul et 2 li avec des href permettant de passer d’une page à l’autre.

Pour l’exercice, réécrire le code en factorisant autant que possible ce qui peut l’être avec du PHP.

Vous devez préciser le nom des fichiers utiles et leurs contenus.

Dans votre résultat, écrivez complètement le contenu de la balise nav.

Fichier index.php :

<DOCTYPE html>

<html>

<head> … <title>Index</title></head>

<body>

<header> … <nav> … </nav></header>

<section>

<article> … </article>

<aside> … </aside>

</section>

<footer> … </footer>

</body>

</html>

Fichier blog.php :

<DOCTYPE html>

<html>

<head> … <title>blog</title></head>

<body>

<header> … <nav> … </nav></header>

<section>

<article class= «articles» > … </article>

<article class= «commentaires» > … </article>

</section>

(2)
(3)

Écrivez une page qui permettent d’afficher un tableau contenant 5 prénoms.

Exercice

Écrivez une page qui permettent de saisir votre nom et d’afficher « bonjour votre nom» dans une deuxième page. La deuxième page permettra de revenir à la première.

Exercice

Soit le code SQL suivant :

drop database if exists cinema;

create database cinema;

use cinema;

create table if not exists films(

id integer primary key auto_increment, titre varchar(250) not null,

auteur varchar(100) not null, annee integer not null ; );

insert into films values ('','L\'odyssée de PI','Ang Lee',2012);

insert into films values ('','La foule','King Vidor',1928) ;

insert into films values ('','L\'aurore','Friedrich Wilhelm Murnau',1928) ; insert into films values ('','Le sacrifice (Offret)','Andrei Tarkovski',1986)

insert into films values ('','L\'intendant Sansho (Sansho the Bailiff)',Kenji Mizoguchi, 1954) insert into films values ('','La soif du mal (Touch of evil)','Orson Welles',1958)

Codez une page qui permette d’afficher les films.

(4)

On veut coder une page PHP avec le comportement suivant :

1) Au départ, elle affiche une zone de saisie avec un bouton de validation :

Entrez le bon code pour afficher les informations : bouton de validation

2) Après validation de la saisie du code, si le code est mauvais, la page affiche :

Entrez le bon code pour afficher les informations : bouton de validation

ERREUR : vous n’avez pas le bon code !!!

// remarque : le message d’ERREUR est encadré

3) Après validation de la saisie du code, si le code est bon, la page affiche une liste d’utilisateurs :

Voici les informations à afficher :

• Toto – id = 47

• Tata – id = 52

• Tutu – id = 1

• Titi – id = 10

• Etc.

// remarque : la liste d’utilisateurs est affichée avec une liste à points.

4) Précisions

1) vous ne devez écrire qu’une seule page PHP pour faire tout l’exercice.

2) La bonne valeur du code sera écrite directement en clair dans la page PHP

3) Les informations à afficher sont issues de la table USER qui se trouve dans une base de données. La table USER contient, entre autres, les attributs suivants : nom et id. On affiche tous les utilisateurs.

4) Pour se connecter à la BD, on utilise la fonction connecterBD() qui se trouve dans le fichier connexion.php présenté en annexe à la fin de ce document.

(5)

On veut créer une page qui permette d’afficher des éléments d’une table dans une base de données. La BD est fournie en annexe pour information.

Vous devez écrire le code dans deux fichiers :

• Un fichier pour écrire obligatoirement une fonction de connexion.

• Un fichier pour afficher les résultats.

Vous devez préciser le nom des fichiers.

L’affichage de départ affiche les 5 derniers éléments entrés dans la BD (les 5 id les plus grands).

On a deux boutons dans la page :

• L’un qui permet de faire une « sélection » selon certains critères.

• L’autre qui permet de revenir à l’affichage en cours.

Dans un premier temps, les deux boutons permettent de réafficher la page à l’identique.

La BD contient des jeux avec l’id (50, 49, 48, etc.) , le nom de la console de jeu (Xbox, PC, etc.), le nom du jeu et le nombre de joueurs maximum (1, 4, 32, etc.).

Le code de la BD est en fin de document

Dans un premier temps, il n’est pas nécessaire de gérer les problèmes de sécurité.

(6)

Dans la page précédente on va gérer le bouton de sélection.

Ce bouton affiche la page présentée à droite.

Faites les modifications nécessaires à l’exercice 1 pour permettre d’afficher cette nouvelle page quand on clique sur « selection ».

Le champ « id » permet de saisir un « id » pour le jeu. Le champ « console » permet de saisir un nom de console.

D’un point de vue technique, on reste dans le même fichier php.

Pour le moment, les boutons annuler et valider ramèneront sur la page de l’exercice 1 sans autre traitement.

NE PRESENTEZ QUE CE QUI EST NOUVEAU PAR RAPPORT A L’EXERCICE 1 (vous pouvez mettre le début … la fin de ce qui est identique).

(7)

Faites les modifications nécessaires dans la page pour permettre de prendre en compte le choix d’un id ou le choix d’une console et d’afficher 1 seul jeu si on saisit un « id » ou tous les jeux d’une console donnée si on saisit une « console ».

Par exemple : on a saisi « 1 » pour l’id, on obtient le résultat suivant :

Faites les modifications nécessaires dans la page pour permettre de prendre en compte le choix d’un id ou le choix d’une console et d’afficher 1 seul jeu si on saisit un « id » ou tous les jeux d’une console donnée si on saisit une « console ».

Par exemple : on a saisi « 1 » pour l’id, on obtient le résultat suivant :

Pour cet exercice on veut juste que l’affichage se passe correctement quand on clique sur « valider ». On ne gère pas les éventuelles erreurs de saisie.

On ne gère pas le fait que si on clique sur sélection à partir de l’exemple précédent (uniquement l’id = 1 affiché), on revient à la liste de 5.

NE PRESENTEZ QUE CE QUI EST NOUVEAU PAR RAPPORT A L’EXERCICE précédent (vous pouvez mettre le début … la fin de ce qui est identique).

(8)

La situation précédente ne permet pas de conserver les sélections en cours.

On veut désormais que si on clique sur « sélection » à partir de l’exemple précédent (uniquement l’id = 1 affiché), on reste sur une page avec uniquement le jeu d’id = 1.

Idem si on avait saisi « xbox » dans le champ « console ». On obtient la page suivante et on veut que cette page soit maintenue si on clique sur « selection ».

Il faut aussi traiter le cas du bouton « annuler » dans le formulaire de sélection : il doit nous maintenir sur la sélection en cours.

Piste de solution : utiliser un type « hidden »

NE PRESENTEZ QUE CE QUI EST NOUVEAU PAR RAPPORT A L’EXERCICE précédent (vous pouvez mettre le début … la fin de ce qui est identique).

(9)

On trouvera la BD complète à l’adresse suivante : http://bliaudet.free.fr/jeux_video.sql

DROP DATABASE IF EXISTS EXAM_JEUX;

CREATE DATABASE EXAM_JEUX;

USE EXAM_JEUX;

CREATE TABLE IF NOT EXISTS JEUX_VIDEO (

id int(10) unsigned PRIMARY KEY AUTO_INCREMENT, nom varchar(255) NOT NULL,

console varchar(255) NOT NULL, prix double,

nbre_joueurs_max int(11), commentaires text NOT NULL ) ENGINE=InnoDB;

INSERT INTO jeux_video (nom, console, prix, nbre_joueurs_max, commentaires) VALUES ('Super Mario Bros', 'NES', 4, 1, 'Un jeu d''anthologie !'),

('Sonic', 'Megadrive', 2, 1, 'Le meilleur jeu du monde !'),

('Zelda : ocarina of time', 'Nintendo 64', 15, 1, 'Un jeu grand, beau et complet comme on en voit rarement de nos jours'),

('Mario Kart 64', 'Nintendo 64', 25, 4, 'Un excellent jeu de kart !'),

('Super Smash Bros Melee', 'GameCube', 55, 4, 'Un jeu de baston délirant !'), ('Dead or Alive', 'Xbox', 60, 4, 'Le plus beau jeu de baston jamais créé'),

('Dead or Alive Xtreme Beach Volley Ball', 'Xbox', 60, 4, 'Un jeu de beach volley de toute beauté o_O'), ('Enter the Matrix', 'PC', 45, 1, 'Plutôt bof comme jeu, mais ça complète bien le film'),

('Max Payne 2', 'PC', 50, 1, 'Très réaliste, une sorte de film noir sur fond d''histoire d''amour. A essayer

!'),

('Yoshi''s Island', 'SuperNES', 6, 1, 'Le paradis des Yoshis :o)');

(10)

Soit l’organisation MVC de répertoires et de fichiers suivante :

• controleur

• connexionBD

• css

• images

• includeHTML

• index.php

• indexSwitch.php

• modele

• vue

Seuls index.php et indexSwitch.php sont des fichiers. Les autres noms sont des répertoires.

index.php est le fichier d’entrée dans le site. IndexSwitch.php est le contrôleur frontal.

Le dossier connexionBD contient le fichier de connexion à la BD, connexion.php, qui se trouve présenter à la fin de ce document dans les annexes.

L’objectif sera d’afficher l’id, le nom et la console de la table des jeux vidéo dont le code est donné en annexe de ce document.

On fera l’affichage dans une table HTML.

Pour cela vous devez écrire :

1. le contenu du fichier indexSwitch.php

2. le contenu du fichier header.php qui contiendra le header (avec le nav) de toutes les pages et qui se situera dans le dossier includeHTML. Le nav présente un ul-li permettant de passer d’une page à l’autre avec un href. Vous ferez le li correspondant à la page du contrôleur des jeux.

3. Le contenu du fichier controleurJeux.php qui se situera dans le dossier controleur 4. Le contenu du fichier modeleJeux.php qui se situera dans le dossier modèle 5. Le contenu du fichier vueJeux.php

(11)

Fichier connexion.php

<?php

function connexionBD($dbname){

// paramètres de la base de donnée

$sgbdname='mysql';

$host='localhost';

$charset='utf8';

// dsn : data source name

$dsn = $sgbdname.':host='.$host.';dbname='.$dbname.';charset='.$charset;

// utilisateur connecté à la base de donnée

$username = 'root';

$password = 'root';

// pour avoir des erreurs SQL plus claires

$erreur = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);

try {

$bdd = new PDO($dsn, $username, $password, $erreur);

} catch (PDOException $e) {

die ('Connexion échouée : ' . $e->getMessage() );

}

return $bdd;

}

(12)

DROP DATABASE IF EXISTS EXAM_JEUX;

CREATE DATABASE EXAM_JEUX;

USE EXAM_JEUX;

CREATE TABLE IF NOT EXISTS JEUX_VIDEO (

id int(10) unsigned PRIMARY KEY AUTO_INCREMENT, nom varchar(255) NOT NULL,

console varchar(255) NOT NULL, prix double,

nbre_joueurs_max int(11), commentaires text NOT NULL ) ENGINE=InnoDB;

INSERT INTO jeux_video (nom, console, prix, nbre_joueurs_max, commentaires) VALUES ('Super Mario Bros', 'NES', 4, 1, 'Un jeu d''anthologie !'),

('Sonic', 'Megadrive', 2, 1, 'Le meilleur jeu du monde !'),

('Zelda : ocarina of time', 'Nintendo 64', 15, 1, 'Un jeu grand, beau et complet comme on en voit rarement de nos jours'),

('Mario Kart 64', 'Nintendo 64', 25, 4, 'Un excellent jeu de kart !'),

('Super Smash Bros Melee', 'GameCube', 55, 4, 'Un jeu de baston délirant !'), ('Dead or Alive', 'Xbox', 60, 4, 'Le plus beau jeu de baston jamais créé'),

('Dead or Alive Xtreme Beach Volley Ball', 'Xbox', 60, 4, 'Un jeu de beach volley de toute beauté o_O'), ('Enter the Matrix', 'PC', 45, 1, 'Plutôt bof comme jeu, mais ça complète bien le film'),

('Max Payne 2', 'PC', 50, 1, 'Très réaliste, une sorte de film noir sur fond d''histoire d''amour. A essayer

!'),

('Yoshi''s Island', 'SuperNES', 6, 1, 'Le paradis des Yoshis :o)');

Références

Documents relatifs

explode (separateur, chaine) Retourne un tableau qui contient les éléments de la chaîne, séparés par séparateur. Les fonctions

01-exemple-SiteArtiste-Objet-base-php-separe dans 02-Exemples-PHP-Objet-Site-Artiste.zip propose une version du site artiste avec 3 tables : œuvres, exposition et œuvres exposées.

Page d’administration : administration des commentaires On peut saisir un commentaire directement.. Page d’administration : administration des commentaires On peut saisir

 Pour passer des valeurs d'une page à l'autre, la méthode POST est sure, mais il faut utiliser à chaque fois un formulaire.  Solution : les sessions,

• Connaître le langage HTML (simple HTML et formulaires pour plus tard) Module technique précédent: html-intro (HTML simple).. Module technique précédent:

Cela a vous a peut être parut un peu lourd, mais si vous n'avez fait que survolez cette partie, vous verrez que vous y reviendrais car c'est vraiment des bases très importants à

Cette formation PHH Objet vous permettra de maîtriser d'une manière opérationnelle le langage PHP dans le contexte d'un développement objet.. Il vous permettra aussi d'aborder

 On peut récupérer l'élément racine du document (dans ce cas-là, on récupère un objet DomElement, et pas un DomNodeList, puisqu'il n'y a qu'un seul. élément