Select FORMAT

Résolu
Danielos -  
 Danielos -

Bonjour,

Je souhaiterai formater le résultat d'une requête COUNT de façon à obtenir un nombre sur 5 digits.

Le code sans la partie SELECT FORMAT fonctionne.
Peut-être n'utilise-je pas la bonne façon de faire ...

Voici mon code :
 

<?php

	//activation de l'affichage des erreurs PHP
	error_reporting(E_ALL);
	ini_set('display_errors', TRUE);
	ini_set('display_startup_errors', TRUE);

// echo 'Test <br>';
// echo date("Y");


	//on inclut le fichier de connexion à la bdd
	require_once "../secure/cnxBddADT.php";

    $sql1 = "SELECT FORMAT(SELECT COUNT(ID) AS nb1 FROM Membres_ADT, '00000')";  
    $result1 = $bdd->query($sql1);
    $columns1 = $result1->fetch();
    $nb1 = $columns1['nb1']; 
    
// echo 'Il y a '.$nb1.' enregistrement(s).<br>';

    $NumMembre=date("Y").$nb1;
// echo $NumMembre.'<br>';
?>

Merci pour toute aide.

Daniel
Windows / Firefox 102.0

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    peut-être:

    SELECT FORMAT(COUNT(ID),'00000') AS nb1 FROM Membres_ADT
    1
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Ta variable $columns1 devrait plutôt s'appeller $row1: il s'agit de ligne, pas de colonne.

      1
    2. Danielos
       
      SELECT FORMAT(COUNT(ID),'00000') AS nb1 FROM Membres_ADT

      ne donne pas d'erreur mais ne donne pas le résultat escompté. nb1 à la valeur de 1 et pas de 00001 ;-(

      Pour la variable c'est vrai que ce serait plus logique même si cela n'affecte pas le fonctionnement. Je vais corriger.

      Merci yg_be

      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    Bonjour

    La fonction format ne sert pas à ça...

    The FORMAT() function formats a number to a format like "#,###,###.##", rounded to a specified number of decimal places, then it returns the result as a string.

    Toi, c'est la fonction LPAD que tu dois utiliser.


    1
    1. Danielos
       

      Bonjour Jordane45,

      Je ne connaissais pas LPAD. Mes recherche m'avait seulement amener à FORMAT.
      C'est vrai que la majorité des exemples était pour spécifier les décimales, mais il y avait aussi un exemple avec non pas '00000' mais D5 qui donnait le résultat souhaité.

      Avec LPAD et le code suivant :

      <?php
      
      	//activation de l'affichage des erreurs PHP
      	error_reporting(E_ALL);
      	ini_set('display_errors', TRUE);
      	ini_set('display_startup_errors', TRUE);
      
      echo 'Test <br>';
      echo date("Y");
      
      
      	//on inclut le fichier de connexion à la bdd
      	require_once "../secure/cnxBddADT.php";
      
          $sql1 = "SELECT LPAD('COUNT(ID) AS nb1 FROM Membres_ADT', 5,'0')";
          $result1 = $bdd->query($sql1);
          $row1 = $result1->fetch();
          $nb1 = $row1['nb1']; 
          
         echo 'Il y a '.$nb1.' enregistrement(s).<br>';
      
      $NumMembre= date("Y").$nb1;
          echo $NumMembre.'<br>';
      
      ?>

      J'ai l'erreur :

      Notice: Undefined index: nb1 in /..../Adhesion.php on line 18 (94 chez moi).

      Je ne vois pas ce qu'est cette histoire d'index qui manque.

      Si tu peux m'aiguiller...
      Merci d'avance

      Daniel

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Danielos
         
        SELECT LPAD(COUNT(ID), 5,'0') AS nb1 FROM Membres_ADT
        1
      2. Danielos > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Bonjour yg_be, (j'avais omis la première des politesse sur le post d'avant ...)

        C'est super, ça marche nickel.
        C'est fou comme un simple morceau de code au mauvais endroit peut devenir une énorme prise de tête...

        1000 merci et bon WE à toi.

        Je mets le sujet en résolu.

        Daniel

        0