EdwinMosesPray Geschrieben 2. Dezember 2014 Geschrieben 2. Dezember 2014 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. Zitieren
EdwinMosesPray Geschrieben 2. Dezember 2014 Autor Geschrieben 2. Dezember 2014 Nachtrag... so sieht es zurzeit OHNE Transfer-Array aus: Zitieren
pr0gg3r Geschrieben 2. Dezember 2014 Geschrieben 2. Dezember 2014 SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(sitzung_datum), '%Y') AS jahr FROM 'orga_sitzung' GROUP BY jahr ORDER BY jahr ASC Zitieren
EdwinMosesPray Geschrieben 3. Dezember 2014 Autor Geschrieben 3. Dezember 2014 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. 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.