Liste déroulante qui gère un nombre d'affichage
Résolu/Fermé
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
-
10 mai 2019 à 21:58
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - 13 mai 2019 à 11:08
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - 13 mai 2019 à 11:08
A voir également:
- Liste déroulante qui gère un nombre d'affichage
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer une liste déroulante excel - Forum Word
- Supprimer liste déroulante excel - Forum Excel
5 réponses
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 729
10 mai 2019 à 22:52
10 mai 2019 à 22:52
Bonjour,
Deux choses :
- Dans une requête SQL tu peux utiliser les clauses LIMIT et OFFSET pour définir le nombre d'enregistrement à retourner.
- Pour éviter d'avoir à réactualiser la page, tu pourrais utiliser de l'ajax (mélange de javascript et php )
Voici des exemples avec Jquery :
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery
Bien entendu, tu pourrais éviter de passer par de l'ajax et utiliser comme prévu un FORM (auquel tu devras ajouter un attribut METHOD et un attribut ACTION )
Et pour faire le "submit" du formulaire, soit un bouton.... soit, en javascript à la détéction du changement de valeur dans le select déclencher le submit du formulaire.
Mais perso... je passerai par de l'ajax.
Deux choses :
- Dans une requête SQL tu peux utiliser les clauses LIMIT et OFFSET pour définir le nombre d'enregistrement à retourner.
- Pour éviter d'avoir à réactualiser la page, tu pourrais utiliser de l'ajax (mélange de javascript et php )
Voici des exemples avec Jquery :
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery
Bien entendu, tu pourrais éviter de passer par de l'ajax et utiliser comme prévu un FORM (auquel tu devras ajouter un attribut METHOD et un attribut ACTION )
Et pour faire le "submit" du formulaire, soit un bouton.... soit, en javascript à la détéction du changement de valeur dans le select déclencher le submit du formulaire.
Mais perso... je passerai par de l'ajax.
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 729
11 mai 2019 à 22:41
11 mai 2019 à 22:41
Aie... encore un qui ne lit pas entièrement les consignes qu'on lui donne ni les liens qu'on lui colle...
Bon...
essaye ça :
Bon...
essaye ça :
<?php //Affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $titre_page = "Factures"; //titre de la page //connexion à la bdd require_once 'bdd.php'; // require au lieu de include..car tu as absolument besoin du fichier. Au moins ça te mettra une erreur si le fichier est introuvable. //récupération PROPRE des variables AVANT de les utiliser $affichagenbfacture = !empty($_GET['affichagenbfacture']) ? $_GET['affichagenbfacture'] : 10; // j'ai mis 10 par défaut //on place un maximum de code php avant le html // c'est plus lisible et plus facile à maintenir par la suite // et on place, tel qu'indiqué dans le lien que je t'ai donné.. CHAQUE REQUETE dans un bloc try/catch //donc... //Nombre de facture $sql = 'SELECT COUNT(*) AS NB FROM factures'; try{ $recup_nombre_facture = $bdd->query($sql); $donnees_nombre_facture = $recup_nombre_facture->fetch(); }catch(Exception $e){ echo "Erreur : ".$e->getMessage(); } $nombre_facture = !empty($donnees_nombre_facture['NB']) ? $donnees_nombre_facture['NB'] : 0; // Montant total des factures $sql = 'SELECT SUM(montant) AS total_montant FROM factures'; try{ $recup_ca = $bdd->query($sql); $donnees_ca = $recup_ca->fetch(); }catch(Exception $e){ echo "Erreur : ".$e->getMessage(); } $total_montant = !empty($donnees_ca['total_montant']) ? $donnees_ca['total_montant'] : 0; //on récupère la liste des factures en fonction du nombre voulu : $sql = 'SELECT * FROM factures ORDER BY id DESC LIMIT ?' ; $datas = array($affichagenbfacture); try{ $recup_donnees_facture = $bdd->prepare($sql); $recup_donnees_facture->execute($datas); $arr_donnees_facture = $recup_donnees_facture->fetchAll(); }catch(Exception $e){ echo "Erreur : ".$e->getMessage(); } ?> <!DOCTYPE html> <html lang="fr"> <head> <?php include'head.php'; ?> <title><?php echo $titre_page; ?></title> </head> <body class="animsition"> <div class="page-wrapper"> <?php include 'menu.php'; ?> <div class="page-container2"> <section class="statistic"> <div class="section__content section__content--p30"> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-lg-3"> <div class="statistic__item"> <h2 class="number"><?php echo $nombre_facture;?></h2> <span class="desc">Nombre de factures</span> <div class="icon"> <i class="zmdi zmdi-shopping-cart"></i> </div> </div> </div> <div class="col-md-6 col-lg-3"> <div class="statistic__item"> <h2 class="number"><?php echo $total_montant;?> €</h2> <span class="desc">Chiffre d'affaire</span> <div class="icon"> <i class="zmdi zmdi-calendar-note"></i> </div> </div> </div> </div> </div> </div> </section> <div class="row"> <div class="col-lg-9"> <h2 class="title-1 m-b-25">Facture</h2> <div class="table-responsive table--no-card m-b-40" style="width: 1000px; height: auto;"> <a href="ajout-facture.php"><i style="margin: 0px 0px 0px 15px;"></i>Ajouter / supprimer une facture</a> <table class="table table-borderless table-striped table-earning"> <thead> <tr> <th></th> <th class="text-right">Nombre de facture a afficher</th> <th> <form action="" method="GET" id="formnbdefactureaafficher"> <select name="affichagenbfacture" size="1"> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> </select> <button type="submit" class="btn btn-success btn-sm" form="formnbdefactureaafficher"> <i class="fa fa-dot-circle-o"></i> Actualiser </button> </form> </th> <th></th> </tr> <tr> <th>REF Client</th> <th>Numéro Facture</th> <th>Montant</th> <th class="text-right">Date</th> </tr> </thead> <tbody> <?php if(!empty($arr_donnees_facture)){ foreach($arr_donnees_facture as $donnees_facture ){ ?> <tr> <td><?php echo $donnees_facture['ref_client']; ?></td> <td><?php echo $donnees_facture['numero_facture']; ?></td> <td><?php echo $donnees_facture['montant']; ?> €</td> <td class="text-right"><?php echo $donnees_facture['dat_e']; ?></td> </tr> <?php } } ?> </tbody> </table> </div> </div> </div> <?php include 'footer.php'; ?> </div> </div> <script src="vendor/jquery-3.2.1.min.js"></script> <script src="vendor/bootstrap-4.1/popper.min.js"></script> <script src="vendor/bootstrap-4.1/bootstrap.min.js"></script> <script src="vendor/slick/slick.min.js"></script> <script src="vendor/wow/wow.min.js"></script> <script src="vendor/animsition/animsition.min.js"></script> <script src="vendor/bootstrap-progressbar/bootstrap-progressbar.min.js"></script> <script src="vendor/counter-up/jquery.waypoints.min.js"></script> <script src="vendor/counter-up/jquery.counterup.min.js"></script> <script src="vendor/circle-progress/circle-progress.min.js"></script> <script src="vendor/perfect-scrollbar/perfect-scrollbar.js"></script> <script src="vendor/chartjs/Chart.bundle.min.js"></script> <script src="vendor/select2/select2.min.js"></script> <script src="vendor/vector-map/jquery.vmap.js"></script> <script src="vendor/vector-map/jquery.vmap.min.js"></script> <script src="vendor/vector-map/jquery.vmap.sampledata.js"></script> <script src="vendor/vector-map/jquery.vmap.world.js"></script> <script src="js/main.js"></script> </body> </html>
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
40
12 mai 2019 à 13:25
12 mai 2019 à 13:25
J'ai bien regarder les lien que tu ma donnée !
Les pas comprendre c'est autres chose par contre..
Bon sinon j'ai lu est tester le code que tu ma envoyer,
Je le comprend c'est déjà bien :p
Par contre il m'affiche aucune factures que je choisis 10 - 25 - 50 - 100,
J'ai bien vérifier dans le lien les valeur remonte bien.
Les pas comprendre c'est autres chose par contre..
Bon sinon j'ai lu est tester le code que tu ma envoyer,
Je le comprend c'est déjà bien :p
Par contre il m'affiche aucune factures que je choisis 10 - 25 - 50 - 100,
J'ai bien vérifier dans le lien les valeur remonte bien.
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
40
11 mai 2019 à 21:32
11 mai 2019 à 21:32
J'ai beau activer les erreur php .. toujours page blanche :
Quand j'arrive la première fois sur la page,
Par contre si je "force" le lient avec factures.php?affichagenbfacture=10 Sa marche
Idem le formulaire me change bien la valeur dans le lien.
Voici la page complète (factures.php) :
bdd.php :
Merci encore
Quand j'arrive la première fois sur la page,
Par contre si je "force" le lient avec factures.php?affichagenbfacture=10 Sa marche
Idem le formulaire me change bien la valeur dans le lien.
Voici la page complète (factures.php) :
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); include 'bdd.php'; ?> <!DOCTYPE html> <html lang="fr"> <head> <?php include'head.php'; ?> <title>Factures</title> </head> <body class="animsition"> <div class="page-wrapper"> <?php include 'menu.php'; ?> <div class="page-container2"> <section class="statistic"> <div class="section__content section__content--p30"> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-lg-3"> <div class="statistic__item"> <?php $recup_nombre_facture = $bdd->query('SELECT COUNT(*) AS id FROM factures'); $donnees_nombre_facture = $recup_nombre_facture->fetch(); ?> <h2 class="number"><?php echo $donnees_nombre_facture['id'];?></h2> <span class="desc">Nombre de factures</span> <div class="icon"> <i class="zmdi zmdi-shopping-cart"></i> </div> </div> </div> <div class="col-md-6 col-lg-3"> <div class="statistic__item"> <?php $recup_ca = $bdd->query('SELECT SUM(montant) AS total_montant FROM factures'); $donnees_ca = $recup_ca->fetch(); ?> <h2 class="number"><?php echo $donnees_ca['total_montant'];?> €</h2> <span class="desc">Chiffre d'affaire</span> <div class="icon"> <i class="zmdi zmdi-calendar-note"></i> </div> </div> </div> </div> </div> </div> </section> <div class="row"> <div class="col-lg-9"> <h2 class="title-1 m-b-25">Facture</h2> <div class="table-responsive table--no-card m-b-40" style="width: 1000px; height: auto;"> <a href="ajout-facture.php"><i style="margin: 0px 0px 0px 15px;"></i>Ajouter / supprimer une facture</a> <table class="table table-borderless table-striped table-earning"> <tr> <th></th> <th class="text-right">Nombre de facture a afficher</th> <th> <form action="" method="GET" id="formnbdefactureaafficher"> <select name="affichagenbfacture" size="1"> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> </select> <button type="submit" class="btn btn-success btn-sm" form="formnbdefactureaafficher"> <i class="fa fa-dot-circle-o"></i> Actualiser </button> </form> </th> <th></th> </tr> <thead> <tr> <th>REF Client</th> <th>Numéro Facture</th> <th>Montant</th> <th class="text-right">Date</th> </tr> </thead> <tbody> <?php $recup_donnees_facture = $bdd->query('SELECT * FROM factures ORDER BY id DESC LIMIT '. $_GET['affichagenbfacture'] .' '); while($donnees_facture = $recup_donnees_facture->fetch()) { ?> <tr> <td><?php echo $donnees_facture['ref_client']; ?></td> <td><?php echo $donnees_facture['numero_facture']; ?></td> <td><?php echo $donnees_facture['montant']; ?> €</td> <td class="text-right"><?php echo $donnees_facture['dat_e']; ?></td> </tr> <?php } ?> </tbody> </table> </div> </div> </div> <?php include 'footer.php'; ?> </div> </div> <script src="vendor/jquery-3.2.1.min.js"></script> <script src="vendor/bootstrap-4.1/popper.min.js"></script> <script src="vendor/bootstrap-4.1/bootstrap.min.js"></script> <script src="vendor/slick/slick.min.js"></script> <script src="vendor/wow/wow.min.js"></script> <script src="vendor/animsition/animsition.min.js"></script> <script src="vendor/bootstrap-progressbar/bootstrap-progressbar.min.js"></script> <script src="vendor/counter-up/jquery.waypoints.min.js"></script> <script src="vendor/counter-up/jquery.counterup.min.js"></script> <script src="vendor/circle-progress/circle-progress.min.js"></script> <script src="vendor/perfect-scrollbar/perfect-scrollbar.js"></script> <script src="vendor/chartjs/Chart.bundle.min.js"></script> <script src="vendor/select2/select2.min.js"></script> <script src="vendor/vector-map/jquery.vmap.js"></script> <script src="vendor/vector-map/jquery.vmap.min.js"></script> <script src="vendor/vector-map/jquery.vmap.sampledata.js"></script> <script src="vendor/vector-map/jquery.vmap.world.js"></script> <script src="js/main.js"></script> </body> </html>
bdd.php :
<?php
$bdd = new PDO('mysql:host=localhost;dbname=MSID;charset=utf8', 'dev', 'dev');
// Activation des erreurs PDO
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
?>
Merci encore
Bonjour,
Après la ligne 42,
il faut indiquer la variable à remplacer dans ?.
Vu que c'est un integer:
Après la ligne 42,
$sql = 'SELECT * FROM factures ORDER BY id DESC LIMIT ?' ;
il faut indiquer la variable à remplacer dans ?.
Vu que c'est un integer:
mysqli_stmt_bind_param($bdd, 'i',$affichagenbfacture);
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 729
12 mai 2019 à 15:29
12 mai 2019 à 15:29
Qu'est-ce que tu viens parler de mysqli... alors qu'il code en PDO ??
Quoi qu'il en soit, le "?" est déjà traité dans le execute
On y injecte la variable
... c'est le principe du prepare / execute de pdo.....
Quoi qu'il en soit, le "?" est déjà traité dans le execute
$recup_donnees_facture = $bdd->prepare($sql); $recup_donnees_facture->execute($datas);
On y injecte la variable
$datas = array($affichagenbfacture);
... c'est le principe du prepare / execute de pdo.....
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
40
12 mai 2019 à 17:56
12 mai 2019 à 17:56
Donc normalement je laisse le "?" dans ma requet ?
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 729
>
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
12 mai 2019 à 18:54
12 mai 2019 à 18:54
Oui.
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
40
12 mai 2019 à 19:15
12 mai 2019 à 19:15
Ha car cela ne fonctionne pas.. avec le ?
Par contre : avec le $affichagenbfacture c'est bon
Par contre : avec le $affichagenbfacture c'est bon
$sql = 'SELECT * FROM factures ORDER BY id DESC LIMIT '. $affichagenbfacture .'' ;
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 729
>
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
Modifié le 13 mai 2019 à 11:11
Modifié le 13 mai 2019 à 11:11
Je viens de vérifier.
Il semble ne effet que PDO ne gère pas le remplacement dans les requêtes préparées pour les clauses LIMIT
Reste comme tu as fais
Il semble ne effet que PDO ne gère pas le remplacement dans les requêtes préparées pour les clauses LIMIT
Reste comme tu as fais
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
CorentinRoche
Messages postés
271
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
12 juin 2023
40
Modifié le 12 mai 2019 à 14:53
Modifié le 12 mai 2019 à 14:53
11 mai 2019 à 14:49
Merci pour la réponse !
Alors premièrement j'ai une petite erreur a ce niveau :
Et la c'est la page blanche .. SI je lance la requête manuellement depuis le serveurs SELECT * FROM factures ORDER BY id DESC LIMIT 10
Aucune erreur
J'ai regarder l'ajax ... Ca ma rendu fou un peux.. J'ai pas compris grand chose mais bon je vais essayer quand même sinon on fera un petit bouton actualiser .. qui validera le formulaire.
Merci bien
11 mai 2019 à 15:14
Dans ce cas, commence par activer l'affichage des erreurs PDO et places CHAQUE requête dans un bloc try/catch comme expliqué ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Une fois le code modifié, si tes soucis persistent reviens nous voir avec le code COMPLET ( y compris la connexion à la bdd )
Pense bien à activer l'affichage des erreurs PHP aussi... https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.
Modifié le 11 mai 2019 à 19:14
Finalement j'ai travailler un peut dessus, pour essayer de trouver une solution par moi même :p
J'ai rajouter un bouton actualiser :
Qui me gène pas tant que ca, je le retirerais plus tard sinon...
J'arrive a gérer le nombre de factures à afficher grâce a un form et une méthod=GET
Ce qui fonctionne bien ! sauf lors du premier affichage.. car il ne trouve pas la variable $_GET['affichagenbfacture']
Merci encore
11 mai 2019 à 20:14