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