Also versuche ich einen Weg zu finden, diesen Code zu minimieren. In der Spitze bekomme ich das aktuelle Jahr.Wie vereinfacht man die MySQL-Abfrage für Diagrammdaten?
//Get the current year
$theYear = date("Y", strtotime($day));
if(isset($_POST['theYear'])){
$theYear = $_POST['year_select'];
}
Weiter unten Ich erhalte die Summe der Stunden für jede Woche des Jahres. Mein Code hat alle 53 Wochen, aber ich habe gerade 10 als Referenz gegriffen. Es ist wie folgt eingerichtet.
$week01 = mysqli_query($con, "SELECT SUM(hours) AS tHours01 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."01'");
$week02 = mysqli_query($con, "SELECT SUM(hours) AS tHours02 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."02'");
$week03 = mysqli_query($con, "SELECT SUM(hours) AS tHours03 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."03'");
$week04 = mysqli_query($con, "SELECT SUM(hours) AS tHours04 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."04'");
$week05 = mysqli_query($con, "SELECT SUM(hours) AS tHours05 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."05'");
$week06 = mysqli_query($con, "SELECT SUM(hours) AS tHours06 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."06'");
$week07 = mysqli_query($con, "SELECT SUM(hours) AS tHours07 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."07'");
$week08 = mysqli_query($con, "SELECT SUM(hours) AS tHours08 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."08'");
$week09 = mysqli_query($con, "SELECT SUM(hours) AS tHours09 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."09'");
$week10 = mysqli_query($con, "SELECT SUM(hours) AS tHours10 FROM timecard WHERE YEARWEEK(date, 1) = '".$theYear."10'");
Ich versuchte, eine while-Schleife zu tun, fand aber, es war zu viele Schichten von PHP, um richtig zu arbeiten. Also wiederholte ich eine while-Schleife, um mir die unten stehenden Abfragen zu geben und kopierte dann in meinen Code.
Unter dem obigen Code greife ich auch alle Daten und verwendete die gleiche Methode wie oben, um die Codeausgabe zu wiederholen.
$Total01 = mysqli_fetch_object($week01);
$Total02 = mysqli_fetch_object($week02);
$Total03 = mysqli_fetch_object($week03);
$Total04 = mysqli_fetch_object($week04);
$Total05 = mysqli_fetch_object($week05);
$Total06 = mysqli_fetch_object($week06);
$Total07 = mysqli_fetch_object($week07);
$Total08 = mysqli_fetch_object($week08);
$Total09 = mysqli_fetch_object($week09);
$Total10 = mysqli_fetch_object($week10);
Also dann all diese Daten werden in einer Tabelle in Zellen hallen und dann in eine grafischen Darstellung umgewandelt, aber nur, wenn es Stunden für die Woche waren. So ist der Graph wächst wie wir Stunden für zukünftige Wochen einloggen stattdessen einen großen leeren Raum auf der rechten Seite am Anfang des Jahres mit und füllt es langsam in.
<? if(($Total01->tHours01) > 0) { ?><td><? if(empty($Total01->tHours01)){echo '0';}else{ echo $Total01->tHours01;}?></td><? } ?>
<? if(($Total02->tHours02) > 0) { ?><td><? if(empty($Total02->tHours02)){echo '0';}else{ echo $Total02->tHours02;}?></td><? } ?>
<? if(($Total03->tHours03) > 0) { ?><td><? if(empty($Total03->tHours03)){echo '0';}else{ echo $Total03->tHours03;}?></td><? } ?>
<? if(($Total04->tHours04) > 0) { ?><td><? if(empty($Total04->tHours04)){echo '0';}else{ echo $Total04->tHours04;}?></td><? } ?>
<? if(($Total05->tHours05) > 0) { ?><td><? if(empty($Total05->tHours05)){echo '0';}else{ echo $Total05->tHours05;}?></td><? } ?>
<? if(($Total06->tHours06) > 0) { ?><td><? if(empty($Total06->tHours06)){echo '0';}else{ echo $Total06->tHours06;}?></td><? } ?>
<? if(($Total07->tHours07) > 0) { ?><td><? if(empty($Total07->tHours07)){echo '0';}else{ echo $Total07->tHours07;}?></td><? } ?>
<? if(($Total08->tHours08) > 0) { ?><td><? if(empty($Total08->tHours08)){echo '0';}else{ echo $Total08->tHours08;}?></td><? } ?>
<? if(($Total09->tHours09) > 0) { ?><td><? if(empty($Total09->tHours09)){echo '0';}else{ echo $Total09->tHours09;}?></td><? } ?>
<? if(($Total10->tHours10) > 0) { ?><td><? if(empty($Total10->tHours10)){echo '0';}else{ echo $Total10->tHours10;}?></td><? } ?>
Das alles funktioniert gut und schön, aber ich bin neugierig Wenn es einen Weg gibt, etwas zu tun, was mir nicht bewusst ist?
„zu viele Schichten von PHP richtig zu arbeiten“ - was bedeutet das? Es hört sich so an, als hättest du die while-Schleife nicht richtig geschrieben. Vielleicht sollte deine Frage lauten: "Was ist mit dieser While-Schleife?". Dies scheint wahrscheinlich eine Hausaufgabe zu sein, deshalb werde ich nicht zu viele Details geben, aber ich würde vorschlagen, einen Blick darauf zu werfen, wie der Befehl SQL 'group by' funktioniert. – DaveyDaveDave
@DaveyDaveDave Ok, so, wenn ich sagte, dass, was ich meinte war ich eine While-Schleife Setup hatte und es würde alles tun, was ich es wie Ausdrucken den gesamten Code, aber die Seite nicht ausgeführt werden, den Code tun wollte, nachdem sie bereits hatten Führe die while-Schleife aus. Ich bin mir sicher, dass dies nicht viel mehr Sinn macht, aber ich habe Schwierigkeiten zu beschreiben, was ich meine. edit: Der Versuch, Return zu treffen und es reicht nur den Kommentar. Auch dies ist ein Projekt, das ich auf der Seite machte die manuelle Arbeit Feld, um zu versuchen und zu entkommen und in der Programmierung zu erhalten. Also nicht gerade Hausaufgaben. – Dustin