Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe folgendes Problem:

in einem Formular kann ich im Format 27/2005 eine Kalenderwoche und ein Jahr angeben; dies wird dann mit Hilfe von PHP ausgewertet und zeigt mir die Periode dieser Woche an (also das Datum vom Montag bzw. Sonntag der zugehörigen Woche).

Mit einer for-Schleife laufe ich nun rückwärts und lasse mir die letzten 52 Wochen inklusive der entsprechenden Daten ausgeben.

Bis hier funktioniert auch alles.

Allerdings möchte ich in diese for-Schleife noch eine DB-Abfrage einbauen, die mir für jede entsprechende Woche die Anzahl bestimmter Ereignisse ausgibt. Soweit alles ok. Die Zahlen (Ergebnisse der DB-Abfrage) werden dann in ein Array geschrieben, das aber die Zahlen nun rückwärts drinstehen hat. Problem ist hierbei, daß der zeitliche Verlauf natürlich jetzt rückwärts dargestellt wird. Ich hab schon an array_unshift gedacht, aber irgendwie tut das nicht das, was es soll (ich möchte einfach das Ergebnis der DB-Abfrage in jeder Zeile vorne anfügen).

Kann mir da jemand mal auf die Sprünge helfen und einen Tip geben? Das wäre sehr nett :)

Danke + Gruß

-etops-

Geschrieben
Oh ja, habs nun nicht ausgeführt :D

Aber wo du recht hast... by the way; du hast hier ganz schön viel recht :P

Naja, aber passt nicht zu der Fragestellung...

Er beschreibt das er bereits rückwärts durch das Array läuft, aber das Problem liegt wohl an irgendeinem index o.ä.... Ganz genau hab ichs auch nicht verstanden... ;)

Geschrieben

Ok, ich versuch es nochmal zu beschreiben.

Ziel: ich möchte ein Array haben, in der fortlaufend die Ergebnisse einer Datenbankabfrage drinstehen, die sich jeweils auf eine Woche beziehen. Mit anderen Worten: 52 aufeinanderfolgende Zahlen. Hintergrund ist, daß ich mit diesen Zahlen in JpGraph eine Verlaufsgrafik für die Entwicklung der Zahlen im rollierenden 52-Wochen-Fenster darstellen möchte.

Der Nutzer gibt dazu eine bestimmte Woche als Startwoche an (z.B. 29/2005) und dann wird automatisch (mittels for-Schleife) zurückgerechnet.

In dieser for-Schleife ist dann entsprechend die Datenbankabfrage integriert, die für jede Woche das entsprechende Ergebnis liefert. Das funktioniert bis hier auch. Allerdings werden die Ergebnisse nicht wie gewünscht in ein Array fortgeschrieben (was ich weniger den Arrays vorwerfe als mir selbst... :rolleyes:;) )

Ich hoffe, daß nun klarer ist, was ich eigentlich möchte ;):rolleyes: ,

Danke für Eure Hilfe,

-etops-

Geschrieben

hm,.. sowas?


$sql = 'DEIN SELECT';
$res = mysql_query( $sql);

$result = array();
while(( $row = mysql_fetch_array( $res)) !== false) {
$result[] = $row;
}

[/PHP]

Das Array sollte dann so eine Strukur haben:

[PHP]
var_dump( $result);

$result => Array {
0 => Array { /*deine Wochendaten KW0*/ }
1 => Array { /*deine Wochendaten KW1*/ }
}

Das es keine KW0 gibt, ist mir bewusst...

Gruß,

Markus

Geschrieben

Mmmh, irgendwas geht da nicht oder ich stell mich echt doof an.

Hier ist mein Quelltext - vielleicht hilft das?!


for ($i = 52; $i >= 0; $i--)
{
if ($vr != "")
{
$vr = array_unshift($var, $vr);
}
else
{
}

$start_prev_week = $start_week - $cpl_week;
$end_prev_week = $end_week - $cpl_week;

$s_prev_wk = strftime('%V/%G', $start_prev_week);
$start_prev_wk = strftime('%F %H:%M:%S', $start_prev_week);
$end_prev_wk = strftime('%F %H:%M:%S', $end_prev_week);

echo "<br><br>";

echo $i;
echo " - ";

echo $start_prev_wk;
echo " - ";
echo $end_prev_wk;
echo " // ";
echo $s_prev_wk;

$var = array($start_prev_wk, $end_prev_wk, $s_prev_wk);

$qry = array();

$query = ("SELECT SQL_CACHE * FROM tbl");

if (!($ergebnis_query = @ mysql_query ($query, $connection)))
showerror();

$result_query = mysql_num_rows($ergebnis_query);

echo " // ";
echo $result_query;
echo " // ";

array_push($qry, $result_query);

$qry[] = $qry;

echo $qry;

echo " // ";
echo $var[0];
echo " -- ";
echo $var[1];
echo " -- ";
echo $var[2];

$start_week = $start_prev_week;
$end_week = $end_prev_week;
}
[/PHP]

Manches ist da drin nur zur Formatierung bei der Ausgabe, da bitte einfach mal drüber hinwegsehen... ;)

Geschrieben

Hi,

ich hab grad leider nicht viel Zeit mich in den code einzudenken...

Aber was mir aufgefallen ist, du rechnest immer mit 52KWs pro Jahr...

Es gibt aber Jahre mit 53 KWs .. ;)

Ich hab hier zufälligerweise noch eine Methode rummliegen, die die Max Kw berechnet.. :)


function getMaxKw ( $year)
{
$kw_chk = date("W",mktime(0,0,0,12,31,$year)); // Woche des letzten Tages im Jahr holen
if ( $kw_chk == 1 )
{
$kw_chk = date("W",mktime(0,0,0,12,24,$year)); // Falls der letzte Tag auf KW1 fällt dann 1ne woche weniger!
}
return $kw_chk;
}
[/PHP]

Gruß,

Markus

Geschrieben

Danke - das mit den 52 Wochen ist mir bewußt und soll so beibehalten werden, da der Zeitraum ja rollierend ist und außerdem mit verhältnismäßig wenig Abweichung fast immer stimmt.

Eleganter ist natürlich Deins, da geb ich Dir recht :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...