Zum Inhalt springen

Array auslesen und in ein neues Array schreiben


Empfohlene Beiträge

Hallo

Für die Teilnehmerverwaltung einer Selbsthilfegruppe bastel ich an einer Datenbank-Abfrage. In der Tabelle "sitzung_datum" befinden sich die Termine im UNIX Zeitformat, z.B. 1417528713 (02.12.2014 + Uhrzeit). Zurzeit befinden sich 24 Termine (2 Sitzungen / Monat) für das Jahr 2014 in der Tabelle. Alle Zahlen sind natürlich unterschiedlich. Für 2015 kommen min. weitere 24 Termine hinzu.

Auf der PHP Abfrageseite habe ich eine Suchmaske zur besseren Übersicht angezeigt. Man kann durch verschiedene Parameter in den Terminen suchen (welche Gruppe, an welchem Tag, welcher Ort, welches Thema). Ich habe das über ein HTML <form> Formular gemacht, in der sich <select> und <option> befinden (Pulldown-Menü).

Über die MySQL Abfrage "SELECT DISTINCT..." funktionieren die anderen Abfragen und im Formular wird alles richtig angezeigt.

Nun zu meinem Problem:

Über die MySQL Abfrage hole ich mir aus der Tabelle "sitzung_datum" die Werte im UNIX-Zeitformat. Über eine WHILE Schleife hole ich die Zahlen aus dem Abfrage-Array und wandel das Format in das Jahr, z.B. 1417528713 => 2014. Mit diesem Wert fülle ich das Formular <option>. Das funktioniert sogar so gut, dass ich nun 24x das Jahr 2014 in dem Pulldown-Menü habe. OK Ok das sind basics...

Wie kann ich es nun anstellen, dass ich nur noch 1x 2014 darin stehen habe... bzw. nächstes Jahr 2014 und 2015 ?

Mein Lösungsansatz wäre, ein Transfer-Array zu erzeugen. Die UNIX Zahl in einer 1. WHILE Schleife auslesen, das Datumsformat wandeln auf das Jahr und dieses Ergebnis in ein neues Array schreiben. Im neuen Array steht nun 24x 2014 drin. Dieses Array kann ich beispielsweise mit array_unique($array) bearbeiten und als Ergebnis sollte nun 1x 2014 rauskommen... sollte...

So sieht die Abfrage normalerweise OHNE Transfer-Array aus (24x 2014):


include "inc/db.inc.php";

  $sql = "SELECT sitzung_datum FROM orga_sitzung WHERE 1 ORDER by sitzung_datum DESC";

  $result = mysql_query($sql) OR die(mysql_error());

  mysql_close();


while($row = mysql_fetch_assoc($result)) {

  $sitzung_datum = $row['sitzung_datum'];

  $sitzung_jahr = date("Y", $sitzung_datum);


  echo "<option class='txt_sitzung_option' value=''> $sitzung_jahr </option>";

};

Nun würde ich gerne dieses Transfer-Array dazwischen bauen, komme aber irgendwie nicht weiter.

include "inc/db.inc.php";

  $sql = "SELECT sitzung_datum FROM orga_sitzung WHERE 1 ORDER by sitzung_datum DESC";

  $result = mysql_query($sql) OR die(mysql_error());

  mysql_close();


while($row = mysql_fetch_assoc($result)) {

  $transfer1 = $row['sitzung_datum'];

  $transfer2[] = date("Y", $transfer1);

};


$result_unique = array_unique($transfer2);			


while($row = mysql_fetch_assoc($result_unique)) {

  $sitzung_jahr = $row['sitzung_datum'];


  echo "<option class='txt_sitzung_option' value=''> $sitzung_jahr </option>";

};

Wie würdest du die Sache angehen?

Danke im Voraus für evtl. Hilfe

Grüße,

Frank M.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo pr0gg3r

Danke für deine schnelle Antwort. Mit einer kleinen Veränderung, warum auch immer, funktioniert das jetzt. Zumindest für das Jahr 2014. Erst wenn ich die Daten für 2015 eingegeben habe kann ich sehen, ob es tatsächlich funktioniert.


include "inc/db.inc.php";

  $sql = "SELECT FROM_UNIXTIME(UNIX_TIMESTAMP[B][COLOR="#FF0000"]()[/COLOR][/B], '%Y') AS jahr FROM orga_sitzung GROUP BY jahr ORDER BY jahr DESC";

  $result = mysql_query($sql) OR die(mysql_error());

  mysql_close();


while($row = mysql_fetch_assoc($result)) {

  $sitzung_jahr = $row['jahr'];

  echo "<option class='txt_sitzung_option' value='"; echo $sitzung_jahr; echo"'> $sitzung_jahr </option>";

};

Bei (UNIX_TIMESTAMP(sitzung_datum), '%Y') kommt bei mir nur 1970 heraus.

Vielen Dank für die Hilfe

Gruß,

Frank M.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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