====== TD09 : Tableaux, images, mails ======
Pour ce TD vous devez avoir codé la galerie du [[td08]] nous en aurons besoin pour créer une galerie avec une base de données.
===== Tableaux =====
Révisez rapidement le [[http://www.atelierphp.net/lesson_05_arrays/lesson_05.php|concept de tableaux]] qu'on a vu lors du [[td01#les_tableaux|td01]]
====== array_manip_events ======
Rajouter une date : 23 mars 1918 : L'offensive allemande est déviée du côté d'Amiens et de Paris.
Nous sommes au mois de {$monthInfo[$moisEnCours][0]}
qui a {$monthInfo[$moisEnCours][1]} jours
$events=array("1914" => array ("Juin" => array ("28" => "Archiduc Ferdinand d'Autriche assassiné"),"Juillet" => array ("26" => "Début de la mobilisation Autrichienne","28" => "Autriche declare la guerre à la Serbie")),"1918" => array ("Novembre" => array ("11" => "Armistice","16" => "Soldats alliés se déplacent vers l'Allemagne")));
NB: n'ayez pas peur de "ranger" un peu le code en rajoutant des retours à la ligne et des indentations qui vous permettront d'y voir un peu plus clair.
====== array_manip_saisons ======
$moisEnCours = date("m");
// permet de transformer du texte en nombre
// et de faire coïncider les mois numérotés de 1 à 12
// aux tableau numéroté de 0 à 11
$moisEnCours = (int) $moisEnCours -1;
$monthInfo = array(
array("Janvier", 31),
array("Fevrier", 28),
array("Mars", 31),
array("Avril", 30),
array("Mai", 31),
array("Juin", 30),
array("Juillet", 31),
array("Aout", 31),
array("Septembre", 30),
array("Octobre", 31),
array("Novembre", 30),
array("Decembre", 31));
echo "
Ajoutez la saison (en paramètre) et affichez comme texte "Nous sommes au mois de Septembre qui a 30 jours et qui est à l'automne.
====== array_for ======
Affichez dans une liste à puces (
$mois = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
====== array_for_double ======
Affichez de couleurs différentes tous les mois suivants :
$mois = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
$couleur=array();
$couleur[0]='blue';
$couleur[1]='white';
$couleur[2]='red';
$couleur[3]='yellow';
$couleur[4]='grey';
$couleur[5]='lime';
$couleur[6]='lightblue';
$couleur[7]='fuchsia';
$couleur[8]='lightgrey';
$couleur[9]='olive'
$couleur[10]='pink';
$couleur[11]='purple';
====== array_foreach ======
Affichez le contenu de ce tableau dans une liste de
$myArray=array('fruit'=>'pomme','couleur'=>'rouge','outil'=>'marteau');
====== array_multi ======
Affichez le contenu de ce tableau, avec des
$myArray=array('fruits'=>array('pomme','cerise','orange'),'outils'=>array('marteau','pelle','pioche'),'verite'=>42,'d'=>true);
====== array_multi_recursion (optionnel) ======
Affichez le contenu de ce tableau en utilisant la récursivité.
$myArray=array('fruits'=>array('pomme','cerise','orange'),'outils'=>array('marteau','pelle','pioche'),'verite'=>42,'d'=>true,'filesystem'=>array('index.html','images'=>array('logo.gif','header.jpg','footer.jpg'),'media'=>array('home.swf','menu.xml'=>array('node'=>array('home'=>'index.html','contact'=>'contact.html')),'contact.html'),'choucroute','pissenlit'),array(true,false,true,false));
NB : [[phpfn>var_dump]] peut vous aider.
====== array_intersect ======
Quels sont les 5 nombres communs à ces trois listes ?
$tableau_1 = array(71, 14, 21, 28, 45, 78, 89, 56);
$tableau_2 = array(17, 14, 21, 28, 23, 56, 45, 78, 94);
$tableau_3 = array(17, 14, 26, 28, 23, 56, 45, 78, 94);
====== array_sum ======
Quelle est la somme de ces nombres ?
$tableau = array(71, 14, 21, 28, 45, 78, 89, 56.75,5,77,66,1,0,11,12,34,45,78);
(Bonus : quelle est la moyenne de ces nombres ?)
====== array_count_values ======
Quel est le le nombre d'occurences de chaque valeur pour chaque clé, quelle automobile est la plus populaire ?
$cars_rented = array("Clio", "Twingo", "Laguna", "Laguna", "Clio", "Laguna", "Velsatis", "Clio", "Polo");
====== array_rand ======
$legumes = array("Guillaume", "Pierre", "Louis", "Julie", "Valentin", "Jennifer", "Joane");
Tirez au hasard 3 étudiants (sans remise)
===== Manipulation d'images =====
Vous allez avoir besoin [[http://www.atelierphp.net/lesson_17_images/lesson_17.php|des cours sur la manipulation d'images]] et d'un peu de patience.
====== image_logotize ======
Créez un dossier image_logotize dans-lequel vous placerez l'image mdr.jpg. Un script php devra modifier l'image pour afficher un rendu ressemblant à l'image image_logotize.png ci-dessous.
{{:ressources:php:mdr.jpg|}} {{:ressources:php:image_logotize.png|}}
Pour la réaliser, j'ai utilisé les fonctions php suivantes :
header();
imagecreatetruecolor();
imagecolorallocate();
ImageFillToBorder();
imagefilledpolygon();
imagecreatefromjpeg();
imagecopyresampled();
imagefilledrectangle();
imagestring();
imagepng();
Bonus : le texte qui s'affiche peut être paramétrable en utilisant $_GET[]
===== L'envoi de mails =====
Sur vos machines locales, il y a peu de chances pour que le mail soit vraiment envoyé. Pour tester ce script, il va vous falloir héberger les fichiers sur un hébergeur qui supporte PHP.
L'envoi de mails est bien documenté sur la page de la fonction [[phpfn>mail]].
==== mail_formulaire ====
Faites un formulaire de contact qui vous envoie un mail.
Les champs du formulaire doivent être :
* Le nom de l'interlocuteur
* Son adresse e-mail
* Son message
Quand le formulaire est soumis, une page de remerciement doit s'afficher.
==== mail_lien ====
Faire un formulaire de contact qui propose d'uploader un fichier et dans le corps du mail, spécifiez l'adresse du fichier à télécharger.
NB : Pensez à utiliser la fonction [[phpfn>rand]] ou la fonction [[phpfn>uniqid]] pour donner un nom aléatoire au fichier pour ne pas qu'un utilisateur ayant donné le même nom à son fichier qu'un utilisateur précédent n'écrase le fichier.
==== mail_pj (optionnel) ====
Faites le même formulaire mais en y ajoutant une pièce jointe, attention, vous devez créer vous devez encoder le fichier avec [[phpfn>base64_encode]].
===== Mysql =====
Quelques petits exercices en MySQL pour vous remémorer les requêtes SELECT et INSERT si vous êtes un peu courageux, vous pouvez faire ce tutoriel fort instructif qui permet de créer un module de news : [[http://www.grafikart.fr/tutoriels/gerer-news-php-43]]
==== mysql_galerie ====
Sur une page, listez l'ensemble des images de la galerie et leur nom. Pour ce faire, vous utiliserez une base MySQL, vous pouvez utiliser le [[td03]] pour vous remémorer.
Créez un fichier mysql_galerie.php pour le code PHP et placez utilisez ce fichier pour créer la table dans MySQL.
{{:ressources:php:mysql_galerie.sql.zip|}}
==== mysql_galerie_add ====
Créez un formulaire vous permettant d'ajouter une nouvelle image, celui-ci doit vous permettre de renseigner le nom de l'image et de l'uploader.
Faites en sorte que l'image ne soit renseignée dans la base de données que si l'upload a été fructueux (il s'agit bien d'une image, le fichier n'est pas trop volumineux, etc.)