Select FORMAT

Résolu/Fermé
Danielos - 30 juil. 2022 à 04:34
 Danielos - 30 juil. 2022 à 11:30

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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 Ambassadeur 1 552
30 juil. 2022 à 08:58

bonjour,

peut-être:

SELECT FORMAT(COUNT(ID),'00000') AS nb1 FROM Membres_ADT
1
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
30 juil. 2022 à 09:01

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

1
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 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
30 juil. 2022 à 09:31

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

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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552 > Danielos
30 juil. 2022 à 11:21
SELECT LPAD(COUNT(ID), 5,'0') AS nb1 FROM Membres_ADT
1
Danielos > yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024
30 juil. 2022 à 11:30

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