Bonjour,
J'ai une base avec par exemple 3 colonnes : pays, continent, population. Je cherche à retourner sous la forme d'un tableau avec ces 3 colonnes la population maximale du pays en fonction du continent
Si je tape cette requête :
Code :
- <?php
- $select = 'SELECT pop,cont,pays FROM bddpays WHERE pop=(SELECT MAX(pop) FROM bddpays) order by cont';
- $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
- $total = mysql_num_rows($result);
- if($total) {
- echo '<table bgcolor="#FFFFFF">'."\n";echo '<tr>';
- echo '<td bgcolor="#669999"><b>Population</b></td>';
- echo '<td bgcolor="#669999"><b>Continent</b></td>';
- echo '<td bgcolor="#669999"><b>Pays</b></td>';
- echo '</tr>'."\n";
- while($row = mysql_fetch_array($result)) {
- echo '<tr>';
- echo '<td bgcolor="#CCCCCC">'; if (empty($row['pop'])) echo 'Non Disponible'; else echo number_format($row['pop'], 0, ',', '.') ; echo ' </td>';
- echo '<td bgcolor="#CCCCCC">'.$row["cont"].'</td>';
- echo '<td bgcolor="#CCCCCC">'.$row["pays"].'</td>';
- echo '</tr>'."\n";
- }
- echo '</table>'."\n";
- }
- else echo 'Pas d\'enregistrements dans cette table...';
- mysql_free_result($result);
- ?>
|
Voici le résultat (une seule ligne correspondant au pays le plus peuplé de la base)
Population; Continent; Pays
1.330.044.605; asie; chine
Mais si je fais ceci :
Code :
- <?php
- $select = 'SELECT MAX(pop),cont,pays FROM bddpays GROUP BY cont';
- $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
- $total = mysql_num_rows($result);
- if($total) {
- echo '<table bgcolor="#FFFFFF">'."\n";echo '<tr>';
- echo '<td bgcolor="#669999"><b>Population</b></td>';
- echo '<td bgcolor="#669999"><b>Continent</b></td>';
- echo '<td bgcolor="#669999"><b>Pays</b></td>';
- echo '</tr>'."\n";
- while($row = mysql_fetch_array($result)) {
- echo '<tr>';
- echo '<td bgcolor="#CCCCCC">'; if (empty($row['MAX(pop)'])) echo 'Non Disponible'; else echo number_format($row['MAX(pop)'], 0, ',', '.') ; echo ' </td>';
- echo '<td bgcolor="#CCCCCC">'.$row["cont"].'</td>';
- echo '<td bgcolor="#CCCCCC">'.$row["pays"].'</td>';
- echo '</tr>'."\n";
- }
- echo '</table>'."\n";
- }
- else echo 'Pas d\'enregistrements dans cette table...';
- mysql_free_result($result);
- ?>
|
le résultat me retourne bien la population maximale par continent mais il y a une erreur pour le pays. Le pays affiché est en en fait le premier dans l'ordre alphabétique et non celui qui a la plus grande population...
Population; Continent; Pays
138.283.240; afrique; afrique-du-sud -> le résultat devrait être nigeria
303.824.646; ameriques; anguilla -> ici USA
1.500; antarctique; antarctique
1.330.044.605; asie; afghanistan -> chine
140.702.094; europe; albanie
20.600.856; oceanie; australie
Auriez-vous une solution pour afficher le nom du pays relatif à la population maximale et à son continent ?
Merci par avance,