Comment ajouter ou enlever 1 année
Résolu/Ferméjordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 - 6 mars 2023 à 07:03
- Comment ajouter ou enlever 1 année
- Comment enlever une page sur word - Guide
- Ajouter un compte gmail - Guide
- Ajouter signature word - Guide
- Enlever pub youtube - Accueil - Streaming
- Ajouter un compte whatsapp - Guide
8 réponses
4 mars 2023 à 15:18
Bonjour,
Il faudrait déjà que tes boutons déclenchent une action ...
Soit par le biais d'un lien, soit par appel ajax.
Une fois que tu auras mis ça en place, transmettre une variable qui contiendra deux variables : La date en cours et si il faut faire prev ou next sera facile.
De là, tu pourras, dans ton php, récupérer ces deux variables et les utiliser pour ajouter ou soustraire ce que tu veux.
4 mars 2023 à 18:04
Effectivement,
Voilà les lignes modifiées :
<?php namespace App; use \DateTime; require_once __DIR__ . '/vendor/autoload.php'; $year = new DateTime(); $year = $year->format('Y'); $year = intval($year); if(isset($_POST['prev'])) { $anne = $year; $anne--; var_dump($anne); } if(isset($_POST['next'])) { $year++; } $year = new Year($year); ?> <nav> <form method="post"> <input class="btn btn-primary" name="prev" type="submit" value="Précédant"> </form> <button class="btn btn-success" id="premier">Premier semestre</button> <button class="btn btn-success" id="second">Deuxième semestre</button> <form method="post"> <input class="btn btn-primary" name="next" type="submit" value="Suivant"> </form> </nav>
Le souci que j'ai maintenant, c'est qu'il ne le fait qu'une fois prev -> 2022, next->2024.
J'ai dû mal faire quelque part.
Si tu as une idée, je t'en saurai très reconnaissant.
4 mars 2023 à 18:37
Comme je te l'ai dit, il faut passer DEUX variables à ton code
le prev ou le next, comme tu as fais
ET ... l'ANNEE affichée par ton calendrier pour qu'il sache sur quelle valeur il doit agir ...
4 mars 2023 à 19:25
Merci,
Je ne veux que l'année, ça ne marche qu'une seule fois.
Revoilà le code :
<?php namespace App; require_once __DIR__ . '/vendor/autoload.php'; $year = new Year($_GET['year'] ?? null); if(isset($_POST['prev'])) { $year->year--; $year = new Year($year->year); } if(isset($_POST['next'])) { $year->year++; $year = new Year($year->year); } ?>
4 mars 2023 à 19:31
Quand tu cliques sur tes boutons ... l'année change dans l'url ( là où tu as passé la variable ) ?
Et pourquoi as tu .. d'un côté du POST .. et de l'autre .. du GET ?
Si tu veux le faire en POST, il faut stocker l'année en cours dans ton formulaire ( dans un champ hidden éventuellement )
5 mars 2023 à 09:02
Merci,
J'ai essayé de tout mettre en _GET, mais rien ne s'affiche dans l'url, pour cela, je saisis l'url.
Je suis un peu débutant en php.
merci de m'aider pour bien le coder.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question5 mars 2023 à 10:28
De quelle façon envoies tu les données à ton code php ? (Quel est le code html ou js utilisé au niveau de tes boutons ?)
Modifié le 5 mars 2023 à 11:10
Je te renvois tout ça.
1 - index.php
<?php namespace App; require_once __DIR__ . '/vendor/autoload.php'; $year = new Year($_GET['year'] ?? null); if(isset($_GET['prev'])) { $year->year--; $year = new Year($year->year); } if(isset($_GET['next'])) { $year->year++; $year = new Year($year->year); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Calendrier</title> <!-- Favicon --> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <!-- Styles CSS --> <link rel="stylesheet" href="css/styles.css"> <!-- Scripts --> <script src="js/date.prototype.js" defer></script> <script src="js/date.time.js" defer></script> <script src="js/calend.js" defer></script> </head> <body> <div class="container"> <header> <div class="datetime"> <span class="date"></span><br> <span class="num-day"></span> <span class="num-week"></span><br> <span class="reste"></span> </div> <h1><a href="">Calendrier</a> <?= $year->year ?> </h1> <div class="time"></div> </header> <nav> <form method="get"> <input class="btn btn-primary" name="prev" type="submit" value="<"> </form> <button class="btn btn-success" id="premier">Premier semestre</button> <button class="btn btn-success" id="second">Deuxième semestre</button> <form method="post"> <input class="btn btn-primary" name="next" type="submit" value=">"> </form> </nav> <section id="sect01"> <?= $year->getFirstSem($year->year) ?> </section> <section id="sect02"> <?= $year->getSecondSem($year->year) ?> </section> </div> <footer> <p>Copyright © calendrier (2023-<span class="cpy"></span></span>). Tous droits réservés</p> </footer> </body> </html>
2 - calend.js (uniquement pour affichage de page)
// Déclarations const first = document.querySelector('#premier'), second = document.querySelector('#second'), sect01 = document.querySelector('#sect01'), sect02 = document.querySelector('#sect02'), opt = { month: 'numeric' } month = new Date().toLocaleDateString('fr-FR', opt) // Afficher premier ou second semestre suivant le mois if (month <= 6) { sect01.style.display = 'flex' sect02.style.display = 'none' } else { sect01.style.display = 'none' sect02.style.display = 'flex' } // Afficher premier semestre au click first.addEventListener('click', () => { sect01.style.display = 'flex' sect02.style.display = 'none' }) second.addEventListener('click', () => { sect01.style.display = 'none' sect02.style.display = 'flex' })
Je n'arrive pas à coder correctement les boutons 'Previous' et 'Next'.
3 - composer.json
{ "name": "amaur/new-php", "description": "Calendrier", "type": "project", "license": "1.0.0", "authors": [ { "name": "Amaury le Cour" } ], "minimum-stability": "stable", "autoload": { "psr-4": { "App\\": "class/" } }, "require": { "symfony/var-dumper": "^6.2" } }
5 mars 2023 à 22:07
Tu utilises des <form en POST pour transmettre tes données
<form method="post"> <input class="btn btn-primary" name="next" type="submit" value=">"> </form>
Comme je te l'ai déjà dit ... il te suffirait d'y ajouter un input hidden contenant l'année "en cours" pour ensuite pouvoir ajouter ou soustraire à cette année là ...
6 mars 2023 à 06:49
Merci pour tout.
En fait, j'ai juste ajouté 2 méthodes à ma classe Year comme cela :
/** * Envoit l'année suivante * @return Year */ public function nextYear(): Year { $year = $this->year + 1; return new Year($year); } /** * Envoit l'année précédente * @return Year */ public function prevYear(): Year { $year = $this->year - 1; return new Year($year); }
et dans index.php cela devient :
<nav> <a href="<?= $url ?>?year=<?= $year->prevYear()->year ?>" class="btn btn-primary">Prev</a> <button class="btn btn-success" id="premier">Premier semestre</button> <button class="btn btn-success" id="second">Deuxième semestre</button> <a href="<?= $url ?>?year=<?= $year->nextYear()->year ?>" class="btn btn-primary">Next</a> </nav>
$url = $_SERVER['PHP_SELF'];
Cela marche exactement comme je le voulais.
6 mars 2023 à 07:03
En GET avec un lien... Et en transmettant deux variables ...C'était aussi ma proposition...
Pense a mettre le sujet en résolu.