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.

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

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.