add initial project files including JSON data, PHP scripts, and HTML structure
This commit is contained in:
15
Voiliers.dtd
Normal file
15
Voiliers.dtd
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!ELEMENT skipper (nom, age, originaire)>
|
||||||
|
<!ELEMENT age (#PCDATA)>
|
||||||
|
<!ELEMENT originaire (#PCDATA)>
|
||||||
|
|
||||||
|
<!ELEMENT voiliers (voilier+)>
|
||||||
|
<!ATTLIST voiliers transat CDATA #REQUIRED>
|
||||||
|
|
||||||
|
<!ELEMENT voilier (nom, classe, année, photo, author, skipper+)>
|
||||||
|
|
||||||
|
<!ELEMENT nom (#PCDATA)>
|
||||||
|
<!ELEMENT classe (#PCDATA)>
|
||||||
|
<!ELEMENT année (#PCDATA)>
|
||||||
|
<!ELEMENT photo (#PCDATA)>
|
||||||
|
<!ELEMENT author (#PCDATA)>
|
||||||
1428
Voiliers.xml
Normal file
1428
Voiliers.xml
Normal file
File diff suppressed because it is too large
Load Diff
1
abandons.json
Normal file
1
abandons.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
["LE RIRE MÉDECIN - LAMOTTE","ACTUAL ULTIM 4"]
|
||||||
17
abandons.php
Normal file
17
abandons.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
$headers = getallheaders();
|
||||||
|
|
||||||
|
if ($headers['Content-Type'] == 'application/json') {
|
||||||
|
$abandonsJSON = file_get_contents('php://input');
|
||||||
|
$_POST = ["ok"];
|
||||||
|
json_decode($abandonsJSON);
|
||||||
|
if (json_last_error() == JSON_ERROR_NONE) {
|
||||||
|
file_put_contents('abandons.json', $abandonsJSON);
|
||||||
|
echo "Enregistrement réussi";
|
||||||
|
} else {
|
||||||
|
echo "Erreur JSON";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo file_get_contents('abandons.json');
|
||||||
2
composer.json
Normal file
2
composer.json
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
95
file.csv
Normal file
95
file.csv
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
Numero,Nom du voilier,Classe,Année de construction,Photo du voilier,Nom du skipper / skippeuse,Age du skipper / skippeuse,Originaire,Nom du skipper / skippeuse,Age du skipper / skippeuse,Originaire,Prénom,
|
||||||
|
1,EDENRED 5,Ocean Fifty,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/EDENRED-Ocean%20Fifty.JPG.webp?itok=8YErlYtU,Emmanuel LE ROCH,53,Plouharnel,Basile BOURGNON,23,Saint-Philibert,Théo,
|
||||||
|
2,INTER INVEST,Ocean Fifty,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/INTER%20INVEST%20%20-%20OCEAN%20FIFTY.jpg.webp?itok=vp5doKgS,Matthieu PERRAUT,35,Pornichet,Jean-Baptiste GELLÉE,37,Pornichet,Théo,
|
||||||
|
3,KOESIO,Ocean Fifty,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/KOESIO%20-%20Ocean%20Fifty.jpg.webp?itok=HyIGFE15,Erwan LE ROUX,51,La Trinité sur Mer,Audrey OGEREAU,33,La Ciotat,Théo,
|
||||||
|
4,Lazare x Hellio,Ocean Fifty,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/lazare.jpg.webp?itok=uLH5UkxL,Erwan LE DRAOULEC,29,Plouhinec,Tanguy LE TURQUAIS,36,Locmiquelic,Théo,
|
||||||
|
5,LE RIRE MÉDECIN - LAMOTTE,Ocean Fifty,2009,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/LE%20RIRE%20MEDECIN%20-%20LAMOTTE%20-%20Ocean%20Fifty%202.png.webp?itok=DT3puNTP,Luke BERRY,39,Saint Malo,Antoine JOUBERT,39,Tours,Théo,
|
||||||
|
6,MON BONNET ROSE,Ocean Fifty,?,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/mon_bonnet_rose.jpg.webp?itok=ltiJYsvS,Laurent BOURGUES,44,Marseille,Arnaud VASSEUR,45,Fontenay aux roses,Théo,
|
||||||
|
7,SOLIDAIRES EN PELOTON,Ocean Fifty,2020,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/SOLIDAIRES%20EN%20PELOTON%20-%20Ocean%20Fifty.jpg.webp?itok=SHF5s_eo,Thibaut VAUCHEL-CAMUS,47,Cancale,Damien SEGUIN,46,Auray,Théo,
|
||||||
|
8,UPWIND BY MERCONCEPT,Ocean Fifty,?,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/upwind_by_merconcept.jpg.webp?itok=MbantxNz,Anne-Claire LE BERRE,43,Brest,Elodie-Jane METTRAUX,41,Neyruz,Théo,
|
||||||
|
9,VIABILIS OCEANS,Ocean Fifty,2017,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/VIABILIS%20OCEANS%20-%20Ocean%20fifty.jpg.webp?itok=1tEPrTK1,Baptiste HULIN,28,La Tessoualle,Thomas ROUXEL,43,St Brieuc,Théo,
|
||||||
|
10,WEWISE,Ocean Fifty,2019,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/WEWISE%20-%20OCEAN%20FIFTY.jpg.webp?itok=mVU3h3CV,Pierre QUIROGA,33,La Capte,Gaston MORVAN,28,Landeda,Théo,
|
||||||
|
11,ALTERNATIVE SAILING- LES CONSTRUCTIONS DU BELON,Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/alternative_sailing_-_les_constructions_de_belon.jpg.webp?itok=PYkuBV7v,Guillaume L'HOSTIS,32,Brest,Antoine LE MANCHEC,40,Chartres,Orlando,
|
||||||
|
12,ALDERAN,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/alderan.jpg.webp?itok=1JaFi1pB,Sasha LANIECE,32,Paris,Sanni BEUCKE,34,Kiel,Orlando,
|
||||||
|
13,AIRVANCE OCÉLIAN TERÉLIAN,Class40,2019,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/AIRVANCE%20OC%C3%89LIAN%20TER%C3%89LIAN%20-%20Class40.jpg.webp?itok=HVxv8_z7,Théa KHELIF,26,Calais,Marion ENGELHARD,43,Havre,Orlando,
|
||||||
|
14,MARTINIQUE HORIZON,Class40,2012,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/MARTINIQUE%20HORIZON%20-%20CLASS40.jpg.webp?itok=6tHUoQtS,Jean-Yves AGLAE,40,Sainte-Luce,Moane MANGATTALE,37,Le Lamentin,Daniel,
|
||||||
|
15,MACCAFERRI FUTURA,Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/MACCAFERRI%20FUTURA%20-%20Class40.jpg.webp?itok=a6jXdbTx,Luca ROSETTI,30,Bologne,Matteo SERICANO,28,Genova ,Daniel,
|
||||||
|
16,LES INVINCIBLES,Class40,2024,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/LES%20INVINCIBLES%20-%20Class40.jpg.webp?itok=agFVeXD5,William MATHELIN-MOREAUX,32,Paris,Pietro LUCIANI,40,Venise,Daniel,
|
||||||
|
17,LEGALLAIS,Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/legallais.jpg.webp?itok=PZpSr1YI,Fabien DELAHAYE,41,Larmor Plage,Pierre LEBOUCHER,45,Nantes,Daniel,
|
||||||
|
18,L'AGENCE TELECOM - SOTRAPLANT,Class40,2018,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/l_agence_telecom_-_sotraplant.png.webp?itok=TpV_hm5B,Matthieu FOULQUIER-GAZAGNES,51,Montpellier,Gildas BEAUCHAMPS,34,Nice,Daniel,
|
||||||
|
19,INTERACTION,Class40,2020,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/interaction.jpg.webp?itok=P3vGyCpn,Yannig LIVORY,59,Arcachon,Erwan LIVORY,56,Arcachon,Daniel,
|
||||||
|
20,EMPOWHER,Class40,2021,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/empowher.jpg.webp?itok=Euo0m7Ve,Pamela LEE,37,Dublin,Jay THOMPSON,37,Etats-Unis,Orlando,
|
||||||
|
21,AMARRIS,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/amarris.jpg.webp?itok=TPlQAkao,Achille NEBOUT,35,Montpellier,Gildas MAHÉ,50,Concarneau,Orlando,
|
||||||
|
22,BELCO-CEC,Class40,2016,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/cec_belco.jpg.webp?itok=QyvjClZA,Louis MAYAUD,36,Beauvais,Alexandre BELLANGÉ,43,Harfleur,Orlando,
|
||||||
|
23,BLEU BLANC PLANETE LOCATION,Class40,2024,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/bleu_blanc_planete_location.jpg.webp?itok=Vi1QCMTW,Quentin LE NABOUR,37,Saint-Malo,Thierry CHABAGNY,53,Neuilly-sur-Seine,Orlando,
|
||||||
|
24,CENTRAKOR HIRSCH,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/CENTRAKOR%20-%20class40.jpg.webp?itok=VOa9mD6x,Mikael MERGUI,44,Hyeres,Kéni PIPEROL,,Saint Vivien de Médoc,Orlando,
|
||||||
|
25,WEEECYCLING,Class40,2018,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/weeecycling.jpg.webp?itok=Wn9ySbnP,Nicolas LEMARCHAND,48,Lehon,Matthieu DERENNE,50,Saint Malo,Thomas,
|
||||||
|
26,ZEISS,Class40,2024,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/ZEISS%20-%20Class40.jpeg.webp?itok=lbZ7-nUD,Thimoté POLET,25,Le Havre,Pierrick LETOUZÉ,27,Cherbourg,Thomas,
|
||||||
|
27,ACTUAL ULTIM 4,Ultim,2017,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/ACTUAL%20ULTIM%204%20%C2%A9Ronan_Gladu.jpg.webp?itok=iEu877I4,Anthony MARCHAND,40,Saint-Brieuc,Julien VILLION,38,Lorient,Thomas,
|
||||||
|
28,MAXI BANQUE POPULAIRE XI,Ultim,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/MAXI%20BANQUE%20POPULAIRE%20XI%20-%20ULTIM.jpg.webp?itok=va562IiQ,Armel LE CLÉAC'H,48,Lorient,Sébastien JOSSE,50,Lorient,Thomas,
|
||||||
|
29,SODEBO ULTIM 3,Ultim,2019,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/SODEBO%20ULTIM%203%20-%20Ultim.jpg.webp?itok=cFUTyMXT,Thomas COVILLE,57,Locmariaquer,Benjamin SCHWARTZ,38,Lyon,Thomas,
|
||||||
|
30,SVR - LAZARTIGUE,Ultim,2021,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/SVR%20LAZARTIGUE%20-%20ULTIM.JPG.webp?itok=GH2wi3Ui,Tom LAPERCHE,28,La Rochelle,Franck CAMMAS,53,Aix-en-Provence,Thomas,
|
||||||
|
31,RÊVE À PERTE DE VUE - QWANZA,Class40,2010,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/REVE%20A%20PERTE%20A%20VUE%20-%20class40.jpg.webp?itok=GNRQUSbg,Joël PARIS,62,Marseille,Goulven MARIE,49,Vence,Nourâne,
|
||||||
|
32,RÊVE DE LARGE 5,Class40,2014,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/REVE%20DE%20LARGE%205%20-%20Class40.jpg.webp?itok=Btb86jze,Rodolphe SEPHO,39,Les Abîmes,Jean-Pierre COUTAYAR,26,Martinez,Nourâne,
|
||||||
|
33,NST RACING & CABINET Z,Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/NST%20RACING%20%26%20CABINET%20Z%20-%20Class40.jpg.webp?itok=rmQzHSkK,Thomas JOURDREN,25,Brest,Joseph CLOAREC,26,France,Daniel,
|
||||||
|
34,OCEAN CONNECT - THE SEA CLEANERS,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/THE%20SEA%20CLEANERS%20-%20Class40.jpg.webp?itok=20BOFp2V,Jean Baptiste TERNON,36,Rochefort,Gaëtan THOMAS,38,Lorient,Daniel,
|
||||||
|
35,BUREAU VALLÉE,Imoca,2020,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/BUREAU%20VALL%C3%89E%20-%20IMOCA%20%40%20Benjamin%20Sellier_wind4production.com_.png.webp?itok=ML97VaFk,Louis BURTON,40,Evry,Clément COMMAGNAC,30,Saint Brieuc,Gabriel,
|
||||||
|
36,CAFÉ JOYEUX,Imoca,2011,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/CAFE%20JOYEUX%20-%20IMOCA.jpeg.webp?itok=ompeE8Fo,Nicolas D'ESTAIS,34,Paris,Simon KOSTER,37,Zurich,Gabriel,
|
||||||
|
37,CHARAL,Imoca,2020,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2023-10/231015_mlr_charal_155.jpg.webp?itok=y-sfi3H_,Jérémie BEYOU,49,Landivisiau,Morgan LAGRAVIÈRE,38,Saint-Paul,Gabriel,
|
||||||
|
38,COUP DE POUCE,Imoca,2010,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/COUP%20DE%20POUCE%20-%20Imoca.jpg.webp?itok=dTtCLDKU,Manuel COUSIN,58,Rouen,Jean-Baptiste DARAMY,44,Biarritz,Gabriel,
|
||||||
|
39,11TH HOUR RACING,Imoca,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/11TH%20HOUR%20RACING%20-%20Imoca.jpg.webp?itok=FtiSUJ_a,Francesca CLAPCICH,37,Trieste,Will HARRIS,31,Hampshire,Gabriel,
|
||||||
|
40,4CAD - LA MIE CÂLINE,Imoca,2015,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/4%20CAD%20-%20LA%20MIE%20CALINE%20-%20Imoca.jpg.webp?itok=70FnGUcH,Arnaud BOISSIÈRES,53,Les Sables d'Olonne,Benjamin DUTREUX,35,Les Sables d'Olonne,Gabriel,
|
||||||
|
41,ALLAGRANDE MAPEI,Imoca,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/ALLAGRANDE%20MAPEI-Imoca.jpg.webp?itok=FypE7x1c,Ambrogio BECCARIA,34,Milan,Thomas RUYANT,44,Saint-Pol-sur-Mer,Gabriel,
|
||||||
|
42,ASSOCIATION PETITS PRINCES - QUEGUINER,Imoca,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/ASSOCIATION%20PETITS%20PRINCES%20-%20QUEGUINER%20-%20Imoca%20-%20%C2%A9Romain%20mari.jpg.webp?itok=ynOlajzQ,Elodie BONAFOUS,30,Morlaix,Yann ELIES,51,Saint-Brieuc,Gabriel,
|
||||||
|
43,OSE TA VICTOIRE,Class40,2010,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/ose_ta_victoire.jpeg.webp?itok=MzYwc4KP,Thomas LURTON,28,Vannes,Sacha VANDENBROUCK,26,Uccle,Nourâne,
|
||||||
|
44,PHARE 40 - HA PLUS PME,Class40,2014,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/PHARE%2040%20-%20HA%20PLUS%20PME%20-%20Class40.jpg.webp?itok=5GKeBzcN,Edgard VINCENS,49,Bordeaux,Louis TORREILLES,31,Montpellier,Nourâne,
|
||||||
|
45,PIERREVAL-FONDATION GOOD PLANET,Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/PIERREVAL-FONDATION%20GOOD%20PLANET%20-%20Class40.jpg.webp?itok=w_m651qr,Vincent RIOU,53,Loctudy,Yann DOFFIN,52,Poitiers,Nourâne,
|
||||||
|
46,RDT LOGISTIC - FORVIS MAZARS,Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/RDT%20LOGISTICS-FORVIS%20MAZARS%20-%20Class40.jpg.webp?itok=KIdjkE-k,Renaud COURBON,53,Le Havre,Gilles COURBON,52,Le Havre,Nourâne,
|
||||||
|
47,RÉAUTÉ CHOCOLAT,Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/REAUTE%20CHOCOLAT%20-%20Class40%20Maquette.png.webp?itok=a2x9Y2KZ,Lomano TAKASI,34,Le Mans,Jean MARRE,32,Lorient,Nourâne,
|
||||||
|
48,"SEAFRIGO - SOGESTRAN
|
||||||
|
",Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/SEAFRIGO%20-%20SOGESTRAN%20-%20Class40.jpg.webp?itok=q_RBh2Jf,Guillaume PIROUELLE,31,Le Havre,Cédric CHATEAU,28,Le Havre,Manel,
|
||||||
|
49,"SNSM, FAITES UN DON !
|
||||||
|
",Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/TBC%20-%20Class40.jpg.webp?itok=fn6zW6FM,"Corentin DOUGUET
|
||||||
|
",51,Nantes,"Axel TRÉHIN
|
||||||
|
",37,ST NAZAIRE,Manel,
|
||||||
|
50,"SOLANO
|
||||||
|
",Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/SOLANO%20-%20Class40.jpg.webp?itok=yr0LPQxd,"Robin FOLLIN
|
||||||
|
",30,Nice,Jules BONNIER,30,Saint-Malo,Manel,
|
||||||
|
51,TRIMCONTROL,Class40,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/TRIMCONTROL-%20Class40.jpg.webp?itok=u1DYj05z,"Alexandre LE GALLAIS
|
||||||
|
",46,Carnac,"Michel DESJOYEAUX
|
||||||
|
",60,Concarneau,Manel,
|
||||||
|
52,"VIRANGA
|
||||||
|
",Class40,2021,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/Viranga%20-%20Class40.jpg.webp?itok=gpmNkfBV,"Emmanuel HAMEZ
|
||||||
|
",62,Lille,"Gérald VÉNIARD
|
||||||
|
",55,Chambéry,Manel,
|
||||||
|
53,"VOGUE AVEC UN CROHN
|
||||||
|
",Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/VOGUE%20AVEC%20UN%20CROHN%20-%20class40.jpg.webp?itok=akb6d1lg,"Pierre-Louis ATTWELL
|
||||||
|
",29,Honfleur,"Maxime BENSA
|
||||||
|
",32,Deauville,Manel,
|
||||||
|
54,"VSF SPORTS
|
||||||
|
",Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/VSF%20SPORT%20-%20Class40.jpg.webp?itok=Kxe-HVkb,"Pep COSTA
|
||||||
|
",26,Barcelone,"Pablo SANTURDE DEL ARCO
|
||||||
|
",38,Santander ,Manel,
|
||||||
|
55,"WASABIII
|
||||||
|
",Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/wasabiii.jpg.webp?itok=uC9-0zW0,"Stéphane BODIN
|
||||||
|
",57, Roches premarie andille,"Loeiz CADIOU
|
||||||
|
",47,Quimper,Manel,
|
||||||
|
56,CROSSCALL,Class40,2020,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/crosscall.jpg.webp?itok=kfXQqKpy,Aurélien DUCROZ,43,Servoz,Jonathan CHODKIEWIEZ,42,Villeneuve Saint-Georges,Raphaël,
|
||||||
|
57,DÉFI SOLIDAIRE AVEC ELLYE ET L'ARCHE,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/DEFI%20SOLIDAIRE%20AVEC%20ELLYE%20ET%20L%27ARCHE%20-%20Class40.jpg.webp?itok=DWVmQli6,Nicolas JOSSIER,49,Granville,Sophie FAGUET,38,Rouen,Raphaël,
|
||||||
|
58,EKINOX,Class40,2025,https://www.class40.com/modules/kameleon/imageAccueil.php?img=f052ce98134f45d0ba032ceaa468b24d%2EJPG&width=1280&height=360,Benoît SINEAU,55,Argenteuil,Alberto RIVA,33,Milan,Raphaël,
|
||||||
|
59,ENGIE - Dessine-Moi la High-Tech,Class40,2022,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/cap_pour_elles_avec_engie.jpg.webp?itok=VO6lvHxu,Aina BAUZA ROIG,30,Palma de Mallorca,Axelle PILLAIN,35,Saint-Renan,Raphaël,
|
||||||
|
60,ESATCO,Class40,2014, https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/ESATCO%20-%20Class40.jpeg.webp?itok=m_bFqoGQ,Nicolas GUIBAL,42,Nantes,Gauthier BRIL,24,Corée du Sud,Raphaël,
|
||||||
|
61,INFLUENCE2,Class40,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/INFLUENCE2-Class40.jpg.webp?itok=VJ2QHLkG,Andrea FORNARO,48,Rome,Alessandro TORRESANI,33,Rome,Raphaël,
|
||||||
|
62,INLAND ROOTS OCEAN SOUL,Class40,2021,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/inland_roots_ocean_soul.jpg.webp?itok=YokotH2W,Milan KOLACEK,46,Louny,Pierre BRASSEUR,45,Amiens,Raphaël,
|
||||||
|
63,INNOVAD.GROUP - XLG,Class40,2011,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/INNOVAD.GROUP%20-%20XLG%20-%20Class40.jpg.webp?itok=QNNnhSc4,Jérôme DELIRE,44,Anderlercht,Caroline DIEU,38,Uccle,Raphaël,
|
||||||
|
64,RENOVATEC - VOILES ET PERFORMANCES,Class40,2009,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/VOILES%20ET%20PERFORMANCES%20-%20Clas40.jpg.webp?itok=XjOwVUyk,Ulysse POZZOLI,35,Nancy,Steven GRIENER,43,Nyon (Suisse),Nourâne,
|
||||||
|
65,Team Snef - Teamwork,Imoca,2017,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/TEAMWORKTEAM%20SNEF.jpg.webp?itok=ws7YlCRQ,Justine Mettraux,39,Suisse,Xavier MACAIRE,44,Mont-Saint-Aignan,Nicolas,
|
||||||
|
66,Paprec Arkéa,Imoca,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/PAPREC%20ARK%C3%89A%20-%20Imoca.jpg.webp?itok=uVGuCYZ0,Yoann RICHOME,42,Fréjus,Corentin HOREAU,36,Auray,Nicolas,
|
||||||
|
67,New Europe,Imoca,2007,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/new_europe.jpg.webp?itok=W1OoqcqZ,Szabolcs WEÖRES,52,Hongrie,Bérénice CHARREZ,33,Suisse,Nicolas,
|
||||||
|
68,MSIG EUROPE,Imoca,2007,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-09/MSIG%20EUROPE%20-%20IMOCA.jpg.webp?itok=nSRyE79a,Conrad COLMAN,42,Auckland,Mathieu BLANCHARD,38,Cavaillon,Nicolas,
|
||||||
|
69,MACIF SANTÉ PRÉVOYANCE,Imoca,2023,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-10/MACIF%20SANTE%20PREVOYANCE%20-%20Imoca.jpg.webp?itok=_bFnCliH,Sam GOODCHILD,36,Bristol,Loïs BERREHAR,32,Tours,Nicolas,
|
||||||
|
70,LES P'TITS DOUDOUS,Imoca,2025,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/LES%20P%27TITS%20DOUDOUS%20-%20IMOCA.jpg.webp?itok=yNe0s0VI,Armel TRIPON,50,Nantes,Tanguy LEGLATIN,47,Ploemeur,Nicolas,
|
||||||
|
71,INITIATIVES COEUR,Imoca,2021,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/INITIATIVES%20COEUR-IMOCA.jpg.webp?itok=CVQDdA2K,Violette DORANGE,24,Pont l'Abbé d'Arnoult,Sam DAVIES,51,Lorient,Nicolas,
|
||||||
|
72,FORTINET - BEST WESTERN,Imoca,2015,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-08/FORTINET-BEST%20WESTERN-Imoca.jpg.webp?itok=E7G1vQV2,Romain ATTANASIO,48,Paris,Maxime SOREL,39,Cancale,Nicolas,
|
||||||
|
73,FIVES GROUP - LANTANA ENVIRONNEMENT,Imoca,2006,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-06/five_group_lantana_environnement.jpg.webp?itok=tH8N8K7o,Louis DUC,42,Cherbourg,Masa SUZUKI,40,Chiba (Japon),Nicolas,
|
||||||
|
74,FDJ UNITED - WEWISE,Imoca,2007,https://www.transatcafelor.org/sites/default/files/styles/crop_1800_607/public/2025-07/FDJ%20UNITED%20-%20WEWISE%20-%20Imoca.png.webp?itok=GaBX3SCf,Fabrice AMEDEO,48,Vannes,Andreas BADEN,34,Klel,Gabriel,
|
||||||
|
BIN
images/logo_class40.webp
Normal file
BIN
images/logo_class40.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
BIN
images/logo_classultim.webp
Normal file
BIN
images/logo_classultim.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
BIN
images/logo_imoca.webp
Normal file
BIN
images/logo_imoca.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
BIN
images/logo_oceanfifty.webp
Normal file
BIN
images/logo_oceanfifty.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
126
index.php
Normal file
126
index.php
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<script src="scripts/Exercice_2_AJAX.js"></script>
|
||||||
|
<title>Route du café - 2025</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header h1 {
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 2.5rem;
|
||||||
|
letter-spacing: -0.5px;
|
||||||
|
color: #2c3e50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 2rem auto;
|
||||||
|
padding: 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logos {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nomDeClasse {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 25%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.header h1 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
margin: 1rem auto;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logos, #nomDeClasse {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
padding: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<h1>Route du café - 2025</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div id="logos">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<p id="nomDeClasse" class="text-classe">
|
||||||
|
Tous les voiliers
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td>Voilier</td>
|
||||||
|
<td>Skippers</td>
|
||||||
|
<td>Abandon</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="liste">
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
26
scripts/Exercice_1_JSON.js
Normal file
26
scripts/Exercice_1_JSON.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
const chaineJSON = '[{"nom": "Class40", "logo": "Class40.webp"},' +
|
||||||
|
'{"nom": "IMOCA", "logo": "Imoca.webp"},' +
|
||||||
|
'{"nom": "Ocean Fifty", "logo": "OceanFifty.webp"},' +
|
||||||
|
'{"nom": "Ultim", "logo": "ClassUltim.webp"}]';
|
||||||
|
|
||||||
|
const data = JSON.parse(chaineJSON);
|
||||||
|
|
||||||
|
window.onload = function () {
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
const nomAfficheDiv = document.getElementById('nomDeClasse');
|
||||||
|
const logosDiv = document.getElementById('logos');
|
||||||
|
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
const bateau = data[i];
|
||||||
|
const img = document.createElement('img');
|
||||||
|
img.className = 'logo';
|
||||||
|
img.src = 'images/logo_' + bateau.logo.toLocaleLowerCase();
|
||||||
|
img.alt = bateau.nom;
|
||||||
|
|
||||||
|
img.addEventListener('pointerover', function () {
|
||||||
|
nomAfficheDiv.innerHTML = bateau.nom;
|
||||||
|
})
|
||||||
|
logosDiv.appendChild(img);
|
||||||
|
}
|
||||||
|
};
|
||||||
95
scripts/Exercice_2_AJAX.js
Normal file
95
scripts/Exercice_2_AJAX.js
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
window.onload = function () {
|
||||||
|
let request = new XMLHttpRequest();
|
||||||
|
request.open('GET', 'abandons.php');
|
||||||
|
request.send();
|
||||||
|
request.onreadystatechange = function () {
|
||||||
|
if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
|
||||||
|
document.abandons = JSON.parse(request.responseText.trim());
|
||||||
|
|
||||||
|
request = new XMLHttpRequest();
|
||||||
|
request.open('GET', 'data.php');
|
||||||
|
request.send();
|
||||||
|
request.onreadystatechange = function () {
|
||||||
|
if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
|
||||||
|
afficherData(JSON.parse(request.responseText.trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function afficherData(data) {
|
||||||
|
|
||||||
|
// on affiche les classes
|
||||||
|
const classes = data.classes;
|
||||||
|
const nomAfficheDiv = document.getElementById('nomDeClasse');
|
||||||
|
const logosDiv = document.getElementById('logos');
|
||||||
|
|
||||||
|
for (let i = 0; i < classes.length; i++) {
|
||||||
|
const bateau = classes[i];
|
||||||
|
const img = document.createElement('img');
|
||||||
|
img.className = 'logo';
|
||||||
|
img.src = 'images/logo_' + bateau.logo.toLocaleLowerCase();
|
||||||
|
img.alt = bateau.nom;
|
||||||
|
|
||||||
|
img.addEventListener('pointerover', function () {
|
||||||
|
nomAfficheDiv.innerHTML = bateau.nom;
|
||||||
|
|
||||||
|
var voiliers = data.voiliers;
|
||||||
|
const voiliersFiltres = voiliers.filter(voilier => voilier.classe === bateau.nom);
|
||||||
|
rafraichirTableau(voiliersFiltres);
|
||||||
|
})
|
||||||
|
logosDiv.appendChild(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
// on affiche les voiliers suivant la classe hovered
|
||||||
|
rafraichirTableau(data.voiliers)
|
||||||
|
console.log(data.voiliers)
|
||||||
|
}
|
||||||
|
|
||||||
|
function rafraichirTableau(voiliers) {
|
||||||
|
const tbody = document.getElementById('liste');
|
||||||
|
tbody.innerHTML = '';
|
||||||
|
|
||||||
|
for (let i = 0; i < voiliers.length; i++) {
|
||||||
|
const voilier = voiliers[i];
|
||||||
|
const tr = document.createElement('tr');
|
||||||
|
|
||||||
|
const td_id = document.createElement('td');
|
||||||
|
td_id.innerText = i.toString();
|
||||||
|
tr.appendChild(td_id);
|
||||||
|
|
||||||
|
const td_nom = document.createElement('td');
|
||||||
|
td_nom.innerText = voilier.nom + " " + voilier.année
|
||||||
|
tr.appendChild(td_nom);
|
||||||
|
|
||||||
|
const td_skippers = document.createElement('td');
|
||||||
|
for (let skipperI = 0; skipperI < voilier.skipper.length; skipperI++) {
|
||||||
|
const skipper = voilier.skipper[skipperI];
|
||||||
|
td_skippers.innerText += skipper.nom + " et ";
|
||||||
|
}
|
||||||
|
td_skippers.innerText = td_skippers.innerText.slice(0, -3);
|
||||||
|
tr.appendChild(td_skippers);
|
||||||
|
|
||||||
|
const td_abandon = document.createElement('td');
|
||||||
|
const is_abandon = document.abandons.includes(voilier.nom)
|
||||||
|
console.log("est ce que " + document.abandons + " inclut " + voilier.nom + "? " + is_abandon)
|
||||||
|
td_abandon.innerHTML = "<input type='checkbox' " + (is_abandon ? "checked" : "")
|
||||||
|
+ " onchange='toggleabandon(\"" + voilier.nom + "\")'" +
|
||||||
|
">";
|
||||||
|
tr.appendChild(td_abandon);
|
||||||
|
|
||||||
|
tbody.appendChild(tr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleabandon(nomVoilier) {
|
||||||
|
document.abandons.includes(nomVoilier) ? document.abandons.splice(document.abandons.indexOf(nomVoilier), 1) : document.abandons.push(nomVoilier);
|
||||||
|
console.log(document.abandons);
|
||||||
|
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('POST', 'abandons.php');
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||||
|
xhr.send(JSON.stringify(document.abandons));
|
||||||
|
|
||||||
|
}
|
||||||
1428
voiliers.json
Normal file
1428
voiliers.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user