Comment ajouter ou enlever 1 année
Résolujordane45 Messages postés 38483 Date d'inscription Statut Modérateur Dernière intervention -
- Comment ajouter ou enlever 1 année
- Enlever pub youtube - Accueil - Streaming
- Comment enlever une page sur word - Guide
- Ajouter signature word - Guide
- Ajouter liste déroulante excel - Guide
- Comment ajouter un compte facebook - Guide
8 réponses
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.
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.
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); } ?>
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 questionDe quelle façon envoies tu les données à ton code php ? (Quel est le code html ou js utilisé au niveau de tes boutons ?)
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" } }
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à ...
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.