Valeur maximale d'une colonnne
Fermé
pc249
-
6 déc. 2019 à 22:04
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 10 déc. 2019 à 21:31
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 10 déc. 2019 à 21:31
A voir également:
- Valeur maximale d'une colonnne
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Attribuer une valeur à une cellule texte excel ✓ - Forum Excel
- Piece 2€ bonhomme valeur ✓ - Forum Loisirs / Divertissements
- Feuilles diddl valeur ✓ - Forum Graphisme
- Si valeur comprise entre x et y alors ✓ - Forum Excel
7 réponses
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
6 déc. 2019 à 22:46
6 déc. 2019 à 22:46
Bonjour,
En php.. oui.. tu dois obligatoirement faire un FETCH sur le résultat de ta requête si tu veux pouvoir exploiter les données.
Par contre, récupérer le MAX en sql.. il faut se pencher sur la requête SQL...
Mais sans connaitre la structure de ta BDD impossible de te répondre.
par contre... quand tu parles de 14 colonnes... ça me fait peur.... peur que ta base soit mal conçue.(très mal conçue même...) ....
bref, montre nous le contenu de ta bdd ( sa structure ET quelques données d'exemple )
L'ideal serait de nous fournir un dump. (si tu as phpmyadmin tu utilises le menu "export" et tu génères un fichier sql. Tu peux ensuite ouvrir ce fichier avec un éditeur de texte et nous coller son contenu ici;
NB: Pour poster du code sur le forum, tu devras utiliser les balises de code;
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
En php.. oui.. tu dois obligatoirement faire un FETCH sur le résultat de ta requête si tu veux pouvoir exploiter les données.
Par contre, récupérer le MAX en sql.. il faut se pencher sur la requête SQL...
Mais sans connaitre la structure de ta BDD impossible de te répondre.
par contre... quand tu parles de 14 colonnes... ça me fait peur.... peur que ta base soit mal conçue.(très mal conçue même...) ....
bref, montre nous le contenu de ta bdd ( sa structure ET quelques données d'exemple )
L'ideal serait de nous fournir un dump. (si tu as phpmyadmin tu utilises le menu "export" et tu génères un fichier sql. Tu peux ensuite ouvrir ce fichier avec un éditeur de texte et nous coller son contenu ici;
NB: Pour poster du code sur le forum, tu devras utiliser les balises de code;
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
7 déc. 2019 à 00:39
7 déc. 2019 à 00:39
Bon.... il y a plusieurs soucis avec ta réponse....
1 - Merci d'utiliser CORRECTEMENT les balises de code ( en y indiquant le langage afin d'avoir la coloration syntaxique et l'indentation )
Je te redonne le lien du tuto : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
2 - Tu utilises l'ancienne extension mysql .... qui est OBSOLETE.
Il faut désormais utiliser PDO ou MYSQLI
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
3 - ( le plus important !!! ) je t'ai demandé le code de ta BDD ( structure + données ) ... pas ton code php !
4 - Comme je le craignais... tu as mal conçu ta bdd ....
Avoir une colonne par mois est une grosse erreur ( erreur de débutant qui penses qu'une BDD fonctionne comme un fichier excel... )
Ta table devrait être de la forme : annee | mois | valeur
et avoir une ligne par couple année/mois
De cette façon il serait possible d'utiliser la fonction MAX de SQL, également les fonctions SUM , GROUP BY... bref... tout ce qui permettrait d'obtenir les données voulues facilement....
1 - Merci d'utiliser CORRECTEMENT les balises de code ( en y indiquant le langage afin d'avoir la coloration syntaxique et l'indentation )
Je te redonne le lien du tuto : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
2 - Tu utilises l'ancienne extension mysql .... qui est OBSOLETE.
Il faut désormais utiliser PDO ou MYSQLI
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
3 - ( le plus important !!! ) je t'ai demandé le code de ta BDD ( structure + données ) ... pas ton code php !
4 - Comme je le craignais... tu as mal conçu ta bdd ....
Avoir une colonne par mois est une grosse erreur ( erreur de débutant qui penses qu'une BDD fonctionne comme un fichier excel... )
Ta table devrait être de la forme : annee | mois | valeur
et avoir une ligne par couple année/mois
De cette façon il serait possible d'utiliser la fonction MAX de SQL, également les fonctions SUM , GROUP BY... bref... tout ce qui permettrait d'obtenir les données voulues facilement....
merci pour la réponse
le programme date de plusieurs années je ne l'ai pas conçu de A à Z je l'ai adapté à mes besoins donc le refaire entièrement n'est pas mon objectif j'utilise le serveur sql de free voici un dump de la BDD
S'il n'est pas possible d'avoir le maxi sur l'ensemble des années, pas de soucis c'était juste un petit plus à afficher!
phpMyAdmin SQL Dump
-- version 3.1.5
-- http://www.phpmyadmin.net
le programme date de plusieurs années je ne l'ai pas conçu de A à Z je l'ai adapté à mes besoins donc le refaire entièrement n'est pas mon objectif j'utilise le serveur sql de free voici un dump de la BDD
S'il n'est pas possible d'avoir le maxi sur l'ensemble des années, pas de soucis c'était juste un petit plus à afficher!
phpMyAdmin SQL Dump
-- version 3.1.5
-- http://www.phpmyadmin.net
-- phpMyAdmin SQL Dump -- version 3.1.5 -- http://www.phpmyadmin.net -- -- Serveur: sql.free.fr -- Généré le : Dim 01 Décembre 2019 à 10:19 -- Version du serveur: 5.0.83 -- Version de PHP: 5.3.9 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `ma_BDD` -- -- -------------------------------------------------------- -- -- Structure de la table `la_pluviometrie` -- CREATE TABLE IF NOT EXISTS `la_pluviometrie` ( `index` varchar(20) collate latin1_general_ci NOT NULL, `annee` year(4) NOT NULL, `janv` decimal(4,1) NOT NULL, `fev` decimal(4,1) NOT NULL, `mars` decimal(4,1) NOT NULL, `avril` decimal(4,1) NOT NULL, `mai` decimal(4,1) NOT NULL, `juin` decimal(4,1) NOT NULL, `juil` decimal(4,1) NOT NULL, `aout` decimal(4,1) NOT NULL, `sept` decimal(4,1) NOT NULL, `oct` decimal(4,1) NOT NULL, `nov` decimal(4,1) NOT NULL, `dec` decimal(4,1) NOT NULL, `total` decimal(10,1) NOT NULL, KEY `index` (`index`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Contenu de la table `la_pluviometrie` -- INSERT INTO `la_pluviometrie` (`index`, `annee`, `janv`, `fev`, `mars`, `avril`, `mai`, `juin`, `juil`, `aout`, `sept`, `oct`, `nov`, `dec`, `total`) VALUES ('', 1988, 132.0, 105.0, 83.0, 70.0, 76.0, 11.0, 65.0, 9.0, 29.0, 47.0, 37.0, 43.0, 707.0), //tronqué// ('', 2019, 38.4, 33.3, 52.5, 35.7, 40.5, 64.8, 17.4, 72.9, 40.4, 124.5, 140.7, 0.0, 520.9);
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
Modifié le 9 déc. 2019 à 12:55
Modifié le 9 déc. 2019 à 12:55
En mysql il existe la fonctio GREATEST pour trouver la valeur la plus grande sur un ensemble de colonnes
https://dev.mysql.com/doc/refman/5.6/en/comparison-operators.html#function_greatest
Un truc du genre
https://dev.mysql.com/doc/refman/5.6/en/comparison-operators.html#function_greatest
Un truc du genre
SELECT `index`, annee, GREATEST( IFNULL(janv,0), IFNULL(fev,0), IFNULL(mars,0), IFNULL(avril,0), IFNULL(mai,0), IFNULL(juin,0), IFNULL(juil,0), IFNULL(aout,0) IFNULL(sept,0) IFNULL(oct,0) IFNULL(nov,0) IFNULL(dev,0) ) plusgrand FROM la_pluviometrie
j'ai ajouté les lignes mais ça n'affiche pas la valeur max???
voici la modif
$query = "SELECT * FROM la_pluviometrie ORDER by annee ";//org
//modif du 9 dec 2019
$querymax = "SELECT `index`,
annee,
GREATEST(
IFNULL(janv,0),
IFNULL(fev,0),
IFNULL(mars,0),
IFNULL(avril,0),
IFNULL(mai,0),
IFNULL(juin,0),
IFNULL(juil,0),
IFNULL(aout,0)
IFNULL(sept,0)
IFNULL(oct,0)
IFNULL(nov,0)
IFNULL(dev,0)
) plusgrand
FROM la_pluviometrie ";
//fin de modif
voici la modif
$query = "SELECT * FROM la_pluviometrie ORDER by annee ";//org
//modif du 9 dec 2019
$querymax = "SELECT `index`,
annee,
GREATEST(
IFNULL(janv,0),
IFNULL(fev,0),
IFNULL(mars,0),
IFNULL(avril,0),
IFNULL(mai,0),
IFNULL(juin,0),
IFNULL(juil,0),
IFNULL(aout,0)
IFNULL(sept,0)
IFNULL(oct,0)
IFNULL(nov,0)
IFNULL(dev,0)
) plusgrand
FROM la_pluviometrie ";
//fin de modif
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
>
pc249
9 déc. 2019 à 22:05
9 déc. 2019 à 22:05
Alors... tu as créé une variable $querymax ..... l'exécutes tu au moins ?
Au passage Je te redonne le lien du tuto concernant les balises de code que tu as du mal à utiliser visiblement : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je t'invite également à lire ET à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour finir.... afin de voir si une requête fonctionne et avoir un aperçu de ce qu'elle retourne il faut d'abord la tester DIRECTEMENT dans la BDD ( via phpmyadmin par exemple )
Et seulement après on peut l'utiliser dans un code PHP ...
Au passage Je te redonne le lien du tuto concernant les balises de code que tu as du mal à utiliser visiblement : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je t'invite également à lire ET à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour finir.... afin de voir si une requête fonctionne et avoir un aperçu de ce qu'elle retourne il faut d'abord la tester DIRECTEMENT dans la BDD ( via phpmyadmin par exemple )
Et seulement après on peut l'utiliser dans un code PHP ...
les balise visiblement ne fonctionnent pas poutant je met entre les cotes ???
voici le résultat quand je lance directement dans mysql
voici le résultat quand je lance directement dans mysql
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IFNULL(sept,0), IFNULL(oct,0), IFNULL(nov,0), IFNULL(dev,0), ) plusg' at line 10
SELECT `index` , annee, GREATEST( IFNULL( janv, 0 ) , IFNULL( fev, 0 ) , IFNULL( mars, 0 ) , IFNULL( avril, 0 ) , IFNULL( mai, 0 ) , IFNULL( juin, 0 ) , IFNULL( juil, 0 ) , IFNULL( aout, 0 ) IFNULL( sept, 0 ) , IFNULL( oct, 0 ) , IFNULL( nov, 0 ) , IFNULL( dev, 0 ) , ) plusgrand
FROM `la_pluviometrie`
LIMIT 0 , 30
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
>
pc249
9 déc. 2019 à 23:03
9 déc. 2019 à 23:03
les balise visiblement ne fonctionnent pas poutant je met entre les cotes
Tu as bien lu le tuto ?? .... il faut spécifier le LANGAGE dans les balises de code.
Voici la requête corrigée
SELECT `index`, annee, GREATEST( IFNULL(janv,0), IFNULL(fev,0), IFNULL(mars,0), IFNULL(avril,0), IFNULL(mai,0), IFNULL(juin,0), IFNULL(juil,0), IFNULL(aout,0), IFNULL(sept,0), IFNULL(oct,0), IFNULL(nov,0), IFNULL(`dec`,0) ) plusgrand FROM la_pluviometrie
merci la requête fonctionne bien en direct sur le serveur mais le but c'est d'afficher une seule année ou la valeur est la plus haute (cumul de tous les mois) pour l'instant de 1988 à 2019 c'est l'annéee 1994 avec 863 mm qui arrive en tête donc je voudrais afficher "l'année de tous les records de pluviométrie est 1994 avec 863 mm"
j'ai remplacé index par annee et annee par total
j'ai remplacé index par annee et annee par total
merci pour la réponse pour les balises tjrs le me^me pb????
le code ci-dessous fonctionne sur le server mais pour la partie php non...
au niveau des query je ne sais pas trop! j'ai mis un query à la suite de celui d'origine c'est pas top je pense
le code ci-dessous fonctionne sur le server mais pour la partie php non...
au niveau des query je ne sais pas trop! j'ai mis un query à la suite de celui d'origine c'est pas top je pense
<?php SELECT annee, total FROM `la_pluviometrie` ORDER BY `index` DESC LIMIT 1 $query = "SELECT * FROM la_pluviometrie ORDER by annee "; //affiche tout le tableau indispensable $querymax ="SELECT annee, total FROM `la_pluviometrie` ORDER BY `index` DESC LIMIT 1"; $resultmax = @mysql_query($querymax) or die('Erreur SQL !<br />'.$resultmax.'<br />'.mysql_error()); //arret sur erreur $numbermax = @mysql($resultmax); echo "$numbermax" ; ?>
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
10 déc. 2019 à 09:59
10 déc. 2019 à 09:59
Ligne 12 ok
Ligne 13 .... $resultmax ? ... non c'est $query
Ligne 14 : Si tu ne fais pas un fetch ... tu ne verras jamais rien...
Ligne 13 .... $resultmax ? ... non c'est $query
Ligne 14 : Si tu ne fais pas un fetch ... tu ne verras jamais rien...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
là j'ai besoin du spécialiste pour sortir la valeur! car ça affiche Array mais il y a sans doute une bonne raison... une bonne nouvelle les balises fonctionnent!
<?php //modif du 9 dec 2019 $query2 = "SELECT annee, total FROM la_pluviometrie ORDER by total DESC LIMIT 1 "; $result2 = @mysql_query($query2) or die('Erreur SQL !<br />'.$result2.'<br />'.mysql_error()); //arret sur erreur while($row1 = @mysql_fetch_row($result2)){ $max_des_annee = max(array($row1)); } echo $max_des_annee ; //fin de modif*/ ?>
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
10 déc. 2019 à 20:13
10 déc. 2019 à 20:13
C'est un array associatif
Il faut donc utiliser la syntaxe
Il faut donc utiliser la syntaxe
while($row1 = @mysql_fetch_row($result2)){ $annee= $row1['annee']; $total = $row1['total']; echo $annee . " : " . $total ; }
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
10 déc. 2019 à 21:01
10 déc. 2019 à 21:01
Je n'avais pas vu qu'elle fetch tu avais utilisé
Donc
Donc
echo $row[0]; echo $row[1];
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
10 déc. 2019 à 21:02
10 déc. 2019 à 21:02
Et si tu veux utiliser la syntaxe que je t'ai donné dans ce cas utilise celui-là
https://www.php.net/manual/fr/function.mysql-fetch-array.php
https://www.php.net/manual/fr/function.mysql-fetch-array.php
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
>
pc249
10 déc. 2019 à 21:31
10 déc. 2019 à 21:31
Bonne continuation
PS: https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
PS: https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
6 déc. 2019 à 23:26
voilà le code qui fonctionne mais sans faire ressortir la valeur maxi des annéees.
Le maxi pour les mois fonctionne bien