Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Array von hinten nach vorne füllen

Empfohlene Antworten

Veröffentlicht

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-

for($i=count($bla);$i>0;$i--) z.b.

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

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... ;)

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-

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

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... ;)

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

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.