J'ai un problème mineur avec une page d'administration de base de données que j'utilise pour mettre à jour des valeurs et des totaux dans une base de données MySQL pour générer diverses figures et données pour un site web. Un peu d'arrière-plan - la table de base de données en question contient les totaux de collecte de fonds pour un libraire de charité, avec la table ayant trois colonnes - id, date et amountraised. Il n'est pas difficile de faire la somme du total recueilli pour une année donnée ou pour l'année en cours - j'ai déjà un total cumulatif de février dernier lorsque la collecte de fonds a commencé et un pour l'année en cours, et ça fonctionne bien. Je viens de me rendre compte tout en ajoutant au total de cette semaine que je sais que le total des fonds recueillis et le montant qui a été recueilli jusqu'ici cette année ne sont nulle part le total de l'année dernière. Évidemment pour cette année, je peux juste prendre le total à ce jour pour cette année du grand total, mais j'ai vraiment besoin d'un total pour chaque année à montrer. J'ai un tableau affiché sur la page qui montre les objectifs de collecte de fonds pour chaque année, et je veux ajouter le total de l'année à ce tableau afin que nous puissions voir à la fois la cible pour chaque année et le montant recueilli an.Somme des valeurs par année avec MySQL/PHP
Dans le bit de la page qui affiche le total en cours d'exécution, je donne les résultats suivants, qui affichent le grand total, et le total pour l'année en cours:
$result = mysql_fetch_array($query);
$sumtotal = $result["sum_total"];
$query2 = mysql_query("SELECT SUM(amountraised) AS year_total FROM fundraisingtotal WHERE YEAR(
date
) = AN (CURDATE()); »);
$ result2 = mysql_fetch_array (query2 $);
$ yeartotal = $ result2 [ "year_total"];
>
<p class="dbpara">The current fundraising total since February 2009 is <b>£<? echo "$sumtotal"; ?></b>.</p>
<p class="dbpara">The current fundraising total for this year (<?php echo date('Y'); ?>) is <b>£<? echo "$yeartotal"; ?></b>.</p>
également sur la même page j'ai l'affichage du f? Le fait que la collecte de fonds totalise les données dans un tableau distinct des objectifs annuels (les objectifs annuels sont dans un tableau avec juste l'année et la cible), et en partie parce que le tableau qui affiche la cible annuelle utilise une boucle while pour écrire les données de la base de données vers la page. Voici le code que je utilise pour écrire la table et les données (je l'ai mis la cellule de table pour le total des fonds levés, mais de toute évidence pas de code pour cela):
<?php $query="SELECT * FROM annualtarget ORDER BY year DESC"; $result=mysql_query($query);
$num = mysql_num_rows ($result);
if ($num > 0) {
$i=0;
while ($i < $num) {
$year = mysql_result($result,$i,"year");
$target = mysql_result($result,$i,"target");
$id = mysql_result($result,$i,"id");
echo "<tr><td class=\"yr\"> $year </td><td class=\"tg\"> £$target </td><td class=\"total\"> ???? </td><td class=\"update\"><a href=\"updatetarget.php?id=$id\">Update</a></td><td class=\"delete\"><a href=\"delete.php?id=$id\">Delete</a></td></tr>";
++$i; } } else { echo "<tr><td colspan=\"4\">The database is empty!</td></tr>"; }
mysql_close();
?>
Il est évident que Je vais avoir besoin d'une requête différente pour calculer les totaux pour l'année, mais je ne peux pas déterminer comment je peux travailler dans la boucle while. Je pourrais utiliser la date du tableau des montants de collecte de fonds en séparant le peu d'année de la date, mais étant donné que la cible pour chaque année est dans un tableau différent qui ne fonctionnerait pas, et je ne veux vraiment pas avoir à ... code l'année et son total soulevé dans la base de données juste pour afficher, quand je peux (si je peux comprendre comment le faire) utiliser la base de données pour le calculer.
Je manque probablement quelque chose de ridiculement évident ici, mais je ne peux pas le comprendre. Quelqu'un at-il une idée de comment je peux faire cela?
Merci pour le heads up. Trié. ;-) – BlissC