etops Geschrieben 14. Juli 2005 Geschrieben 14. Juli 2005 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- Zitieren
TheyCallMeGeek Geschrieben 14. Juli 2005 Geschrieben 14. Juli 2005 for($i=count($bla);$i>0;$i--) z.b. Zitieren
perdian Geschrieben 14. Juli 2005 Geschrieben 14. Juli 2005 for($i=count($bla);$i>0;$i--) Rums, ein bisschen über die Grenzen gelaufen for($i=count($bla) - 1; $i >= 0; $i--) Zitieren
TheyCallMeGeek Geschrieben 14. Juli 2005 Geschrieben 14. Juli 2005 Oh ja, habs nun nicht ausgeführt Aber wo du recht hast... by the way; du hast hier ganz schön viel recht Zitieren
kills Geschrieben 14. Juli 2005 Geschrieben 14. Juli 2005 Oh ja, habs nun nicht ausgeführt Aber wo du recht hast... by the way; du hast hier ganz schön viel recht 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... Zitieren
etops Geschrieben 18. Juli 2005 Autor Geschrieben 18. Juli 2005 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... ) Ich hoffe, daß nun klarer ist, was ich eigentlich möchte , Danke für Eure Hilfe, -etops- Zitieren
kills Geschrieben 18. Juli 2005 Geschrieben 18. Juli 2005 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 Zitieren
etops Geschrieben 18. Juli 2005 Autor Geschrieben 18. Juli 2005 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... Zitieren
kills Geschrieben 18. Juli 2005 Geschrieben 18. Juli 2005 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 Zitieren
etops Geschrieben 18. Juli 2005 Autor Geschrieben 18. Juli 2005 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 Zitieren
Empfohlene Beiträge
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.