Seite 1 von 1

SQL Query user_birthday

Verfasst: 07.11.2022 12:22
von TomLB
Frage an die Profis, ich bekomme es nicht hin:

Ich möchte aus der Db nur die Spalte user_birthday exportieren,
SELECT * FROM `phpbb_users` ORDER BY `phpbb_users`.`user_birthday` DESC

Am besten wäre es , die Felder ohne Eintrag gleich herauszufiltern, (where IF NOT NULL ? )

Es exportiert mir immer nur die ganze Tabelle phpbb_user.

Sinn der Sache: Es sollen mit einem Tabellenprogramm das Durchschnittsalter der Mitglieder ermittelt werden.

Re: SQL Query user_birthday

Verfasst: 07.11.2022 12:32
von Dr.Death
Beschäftige dich mal mit Standard SQL Abfragen ....

https://www.php-einfach.de/mysql-tutori ... l-befehle/

SELECT user_birthday FROM phpbb_users WHERE user_birthday <> "";
SELECT user_id, username, user_birthday FROM phpbb_users WHERE user_birthday <> "";

Re: SQL Query user_birthday

Verfasst: 07.11.2022 12:48
von chris1278
Also ich hab mal einen string angepasst den ich für eine Meiner Extension für was anderes nutze.

Code: Alles auswählen

$sql	= 'SELECT user_birthday
		FROM ' . USERS_TABLE  . '
		ORDER BY user_birthday';

		$result	= $this->db->sql_query($sql);
		$rows	= $this->db->sql_fetchrowset($result);
		$this->db->sql_freeresult($result);
Damit kann man arbeiten in dem man das per loop ausgeben kann etwa so:

Code: Alles auswählen

	foreach ($rows as $row)
	{
	

		$this->template->assign_block_vars('birthday_loop', [
			'ROW_USER_BIRTHDAY'					=> $row['user_birthday'],
			

		]);
	}

Dann musst du nur noch im Template etwa so was erstellen:

Code: Alles auswählen

{% for options in loops.birthday_loop %}
	 {{ options.ROW_USER_BIRTHDAY }}
{% endfor %}
Das würde im Normalfall (wahrscheinlich) den inhalt der Spalte user_birthdays als text ausgeben.

Probier es einfach aus. Ich habe das jetzt nicht getestet aber anhand dessen was ich bisher in meinen Extensions umgesetzt habe müsste das aber so funktionieren. Die Template ausgabe musst du dann selber sehen wo und wie du das ausgeben lassen möchtest. Ich empfehle dir das aber als eine Extension umzusetzen.

edit

Habs mal so getestet so würde das Geburtags Datum ausgegeben. Den html code um die ausgabe musst du dann aber selber bauen.

In meiner Box sähe das so aus:

https://prnt.sc/AzfwLI3G5dIR

Also der Code oben würde auch funktionieren. Allerdings getestet mit nur einem nutzer im lokalem Testforum. Er würde aber alle der Reihe nach auflisten die er findet.

Re: SQL Query user_birthday

Verfasst: 07.11.2022 18:43
von Mike-on-Tour
Ich hatte mal diese Fragestellung, darauf habe ich ein Skript geschrieben, das das Durchschnittsalter aller Registrierten Mitglieder und Gründer ausliest und berechnet.
Ich habe es in die Pastebin eingestellt.

Wenn du in den Zeilen 6 - 9 die entsprechenden Daten für deine Datenbank eingibst und es laufen lässt, sollte es dir das Durchschnittsalter deiner Mitglieder anzeigen.

Re: SQL Query user_birthday

Verfasst: 07.11.2022 19:07
von TomLB
Cool, vielen Dank Mike, hat funktioniert. Ergebnis: 53.984572230014

Wir sind alte Säcke... :o

Vielen Dank auch an die anderen Helfer.

Grund war, uns hat eine Marktforschungs Anfrage erreicht, die wollten gegen guter Bezahlung eine Studie / Befragung einer Zielgruppe durchführen.

Zielgruppe zwischen 18 und 35 Jahren, welche sich ab 2019 eine V-Strom DL650 NEU gekauft haben.

Das wir da trotz 17k+ Mitglieder keinen zutreffenden <35J haben, war mir eh klar... das sehe ich schon in der Tabelle.

@ Mike, Zeile 17 hast n tippfehler drinnne "errno"

Code: Alles auswählen

if ( $dbLink->connect_errno ) {
                    echo $dbLink->connect_error . '<br>';
                        die ('<p>Verbindungsaufbau zu ' . $dbName . ' fehlgeschlagen!</p>');

Re: SQL Query user_birthday

Verfasst: 08.11.2022 06:59
von Mike-on-Tour
Fehler im eigenen Code zu finden ist immer schwierig, weil man dabei ein bisschen betriebsblind ist, aber wo ist in connect_errno ein Tippfehler?

Re: SQL Query user_birthday

Verfasst: 08.11.2022 07:11
von chris1278
Mike-on-Tour hat geschrieben: 08.11.2022 06:59 Fehler im eigenen Code zu finden ist immer schwierig, weil man dabei ein bisschen betriebsblind ist, aber wo ist in connect_errno ein Tippfehler?
ich denke das connect_errno sollte so heissen: connect_error also nicht errno sondern error

Re: SQL Query user_birthday

Verfasst: 08.11.2022 10:33
von Dr.Death

Re: SQL Query user_birthday

Verfasst: 08.11.2022 11:24
von TomLB
Sachen gibts, das kannte ich noch nicht.
Man lernt nie aus :)