Bonjour les amis :-).
Rassurez vous, si vous n'avez pas tout compris dans le titre, je ne suis pas sur non plus en relisant de bien comprendre...
Bon l'histoire est la suivante.
J'ai un petit code bien sympas élaboré grâce à l'aide précieuse des membres de ce forum qui fait la chose suivante (le code hein, pas les membres du forum).
1/ Allez chercher des infos dans une page exell et les placer dans des variables.
2/ Vérifier le contenu des variable et modifier leur contenu s'il y a lieu. (Exemple si $telephone contient 0, il donne à $telcomplet la valeur "Pas de réservation par téléphone".
3/ Afficher tout ça de manière propre et claire.
Et ça marche plutôt bien :-).
Vous pouvez voir le résultat ici : https://www.espaceimagi.com/_agenda_/agenda.php.
Et voici le code en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 <body> <?php /** Charger la bibliothèque **/ set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/'); include 'PHPExcel/IOFactory.php'; /** définir le fichier à examiner*/ $inputFileName = './dates.xlsx'; /** On "charge le fichier excel*/ $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); /** On dit que c'est la feuille 0 du fichier excell qu'on va utiliser*/ $worksheet=$objPHPExcel->getSheet(0); /** je met à zero la variable qui va compter les lignes*/ $i=1; /** On boucle pour passer les lignes en revue*/ foreach ($worksheet->getRowIterator() as $row) { $i = $row->getrowindex(); /** Ici je met dans les différentes variables le contenu de la cellule concernée pour la ligne en cours*/ $affiche =$worksheet->getCellByColumnAndRow('0',$i)->getCalculatedValue(); $lieu =$worksheet->getCellByColumnAndRow('1',$i)->getCalculatedValue(); $datu =$worksheet->getCellByColumnAndRow('2',$i)->getCalculatedValue(); $heure =$worksheet->getCellByColumnAndRow('3',$i)->getCalculatedValue(); $mail =$worksheet->getCellByColumnAndRow('4',$i)->getCalculatedValue(); $telephone =$worksheet->getCellByColumnAndRow('5',$i)->getCalculatedValue(); $reserve =$worksheet->getCellByColumnAndRow('6',$i)->getCalculatedValue(); $spectacle =$worksheet->getCellByColumnAndRow('7',$i)->getCalculatedValue(); $dati = PHPExcel_Shared_Date::ExcelToPHP($datu); $dati =date('d-m-Y',$dati); $dato =date('d-m-Y'); $mailcomplet="Réserver par mail : " . $mail; $telcomplet ="Réserver par téléphone : " . $telephone; if ($mail=='0') { $mail=""; $mailcomplet="Pas de réservation par mail"; } if ($telephone=='0') { $telephone=""; $telcomplet="Pas de réservation par téléphone"; } if ((strtotime($dati)>=strtotime($dato)) or (strtotime($dati)>=strtotime($dato) )) /** on regarde si la date de la ligne Excell est dans le passé, si pas on affiche le contenu des variables */ { echo /** On envoi du HTML pour exploiter le contenu des différentes variables et que ça s'affiche bien*/ <<<HTML <div class="spectacle"> <img class="affiche" src="$affiche" alt="Affiche spectacle"> <dl> <dd class="address">{$lieu} <dt class="title">{$spectacle} <dd class="date">{$dati} à {$heure} <dd class="mail"><a href="mailto:{$mail}">{$mailcomplet}</a> <dd class="tel"><a href="tel:{$telephone}">{$telcomplet}</a> <dd class="reservation"><a href="$reserve" target="_blank"><img src="./btn3.png" alt="Réservation"></a> </dl> </div> </html> HTML; }} $closeFileName = './dates.xlsx'; ?> </body> </html>
Je suis donc heureux sauf qu'on ne va pas se voiler la face : c'est moche
Ce que je voudrais c'est que cela ressemble à ceci plutôt.
Vous me direz, simple, il suffit de mettre les icones dans un dossier et de faire des
Oui sauf que quand il n'y a pas de possibilité de réserver par un certain moyen, je voudrais afficher les icones grisées un peu comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="$liendumachin" ><img src="./imagedelicone.png" alt="ce que ça fait"></a>
Alors du coup, voilà ce que j'ai pensé faire :
1 Dans la partie des IF :
Et dans la partie affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $dati =date('d-m-Y',$dati); $dato =date('d-m-Y'); $mailcomplet="Réserver par mail : " . $mail; $mailimage ="./mailactif.png"; $telcomplet ="Réserver par téléphone : " . $telephone; if ($mail=='0') { $mail=""; $mailcomplet="Pas de réservation par mail"; $mailimage=".mailinactif.png"; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part <dd class="mail"><a href="mailto:{$mail}"><img src={$mailimage} alt="mail"></a>
Est ce que ça vous semble propre et judicieux ?
Moi il y a 2 trucs qui me contrarient :
1/ Même si on grise l'icone et qu'aucun numéro de téléphone ne s'affiche, le lien est encore actif, du coup si on click dessus ça va ouvrir lun mail sans adresse dedans.
Ce que je voudrais c'est que quand l'icone est grisé, la fonction mailto: ne soit plus activée.
Mais là je nage un peu pour imaginer comment faire ça...
2/ J'ai quelques problèmes pour faire un joli petit tableau avec les icones alignés, les textes en dessous et que ça reste propre en responsive.
Est-ce que je dois imaginer ce "tableau" dans le CSS comme un élement unique dans lequel viennent des image ou est ce que chaque élément doit avoir sa classe ?
Merci de votre aide, je sais que je viens toujours avec des brols étranges mais bon au départ moi je suis un artiste hein![]()
A fort bientôt...
Partager