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

A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

peut-être:

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

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

1
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Danielos
 
SELECT LPAD(COUNT(ID), 5,'0') AS nb1 FROM Membres_ADT
1
Danielos > yg_be Messages postés 23541 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