tableau sous php avec base mysql

albinszten2
Invité n'ayant pas de compte PHPfrance

12 août 2010, 08:55

bonjour


j'ai une base de donnée en mysql avec 1 table et 3 champs.
1champ evttime qui est la date (datetime)
1champ evtcellule qui est le numero des variables enregistrées (bigint)
1champ evtvalue qui est la valeur desvariables enregistrées (décimal)

cette table me plais pas car j'aimerais avoir un tableau avec une colonne date (ok je l'es deja), une colonne variable1 (venant d'evtcellule), une colonne variable2 (venant d'evtcellule)....colonne variable 19. et dans ces colonnes variables j'aimerais avoir la valeur (venant d'evtvalue).

mais je n'y arrive pas...

voici un exemple de ce que j'ai fait pour le moment :
<?php
$link = mysql_connect("140.68.50.50", "external", "external")
    or die("Impossible de se connecter : " . mysql_error());
echo 'Connexion réussie';

 
$colonnes = array();
 
$sql = "SELECT evttime, evtcellule, evtvalue FROM DT ORDER BY evttime";
$result = mysql_query($sql);
 
while ($row=mysql_fetch_assoc($result)) {
     $tab[$row['evttime']][$row['evtcellule']] = $row['evtvalue'];
     if (!in_array($row['evtcellule'], $colonnes)) { $colonnes[] = $row['evtcellule']; }
}
 
sort ($colonnes);
 
echo '<table>
           <tr>
              <th></th>';
for ($i = $evtrange['min']; $i<= $evtrange['max']; $i++) {
           echo '<th>'  . $i .  '</th>';
}
foreach ($tab as $key=>$value) {
    echo '<tr>
               <td>' . $key . '</td>';
    foreach ($colonnes as $c) { 
           echo '<td>' . (isset($value[$c]) ? $value[$c] : "" . '</td>');
    }
    echo '</tr>';
}
echo '</table>';
mysql_close($link);
?>
voici aussi un extrait de la requete mysql qui donne :
http://cjoint.com/?imiwyS7ICq

Mammouth du PHP | 881 Messages

13 août 2010, 17:26

Je ne suis pas sûr de bien comprendre le problème que tu rencontres, car les résultats affichés dans la page à laquelle tu réfères semblent correspondre à ton souhait.

Ceci dit, je soupçonne que tu veuilles faire du tri à plusieurs niveaux. Il conviendrait alors d'utiliser array_multisort
Pour ma part, je privilégierais un tri en MySQL. En MySQL, tu pourrais faire un GROUP BY peut-être, tu aurais alors accès à des additions, des comptages.

Autre solution possible, tu pourrais simplement te mettre un compteur dans ta boucle WHILE et bâtir un tableau ayant la valeur de compteur comme première dimension,
exemple:
$compte = 0;
while ($row=mysql_fetch_assoc($result)) {
     if ($row['evttime'] != $Donnees[$compte][0]['evttime'] ) { $compte = $compte + 1; }
     $tab[$compte][] = $row;
}
Soyez artisans de paix