Seite 1 von 1

UserID in <!-- PHP --> übernehmen

Verfasst: 29.10.2016 23:27
von Pofi
Moin :grin:

Ich stehe gerade etwas auf dem Schlauch.

Ich suche nach einer Möglichkeit, die UserID in eine Variable zu packen.

Code: Alles auswählen

<!-- PHP -->
// Prüfen ob eine ID übergeben wurde
    if( isset($_GET['userid']) )
    { 
	$userid = $_GET["userid"];
	// Verbindung zum Datenbankserver
	mysql_connect("lalalalala", "dumdidum", "47110815") or die (mysql_error ());

	// Datenbank auswählen
	mysql_select_db("usr_web267_2") or die(mysql_error());

	mysql_query("CREATE TABLE IF NOT EXISTS user_".$userid." (
	  id INT AUTO_INCREMENT,
	  
	  Erstellt DATETIME,
	  Template CHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Header CHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  
	  Vorname CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Nachname CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Geschlecht CHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Geburtsdatum DATE,
	  Sterbedatum DATE,
	  
	  Geburtsort CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Sterbeort CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  
	  Laengengrad CHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Breitengrad CHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  
	  Text1 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text2 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text3 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text4 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text5 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text6 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  Text7 TEXT(65000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	  
	  PRIMARY KEY(id)
	)") Or die(mysql_error());
	mysql_close ();
	echo "Datenbank erstellt.";
	} 
	else
	{
	echo "Wichtige Daten konnten nicht empfangen werden. Somit konnte auch keine Datenbank angelegt, bzw eine vorhandene Datenbank nicht ausgewertet werden.";
	}
<!-- ENDPHP -->
Dieser Code wurde in eine Templatedatei gepackt. Der User, welche diese Seite aufruft soll einen Tabelleneintrag in einer externen Datenbank bekommen.
Ich habe mir dank einiger Infos von hier und der englischen Partnerseite schon ein Schnipsel erstellt, welche die ID ohne PHP-Umgebung ins Template schreibt.
Ich muss quasi aus {CURRENT_USERNAME_ID} ein $userid machen...

Ich hoffe man versteht was ich meine :wink:

Kann mir jemand helfen, bevor die Kekse alle weg sind?!? :cookie: :D

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 30.10.2016 03:21
von tas2580
Ganz so einfach wird das nicht funktionieren. Aber schau dir mal die Cookies an, da gibt es ein Cookie in dem die User ID steht, das könntest du auslesen. Besser ist allerdings wenn du deinen Code in eine PHP Datei packst statt das über das Template zu machen.

Gruß Tobi

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 30.10.2016 07:32
von Pofi
Hab das schon befürchtet :-) Ich hatte auch schon ein paar Sachen ausprobiert....

Beim Einschlafen gestern Abend hab ich auch den Gedanken gehabt, einfach eine PHP zu erstellen. Damit hätte ich keine Sorgen und dieses Datenbankzeug alles beisammen... :roll:

Manchmal sind die einfachsten Lösungen, die besseren 8)


Danke dir Tobi; :cookie: Keks? :wink:

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 30.10.2016 19:06
von gn#36
Ich habe nie mit PHP im Template gearbeitet, aber vielleicht geht ja sowas wie

Code: Alles auswählen

global $user;
$userid = $user->data['user_id'];

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 31.10.2016 21:34
von Pofi
Jo.... Funktioniert :D

Code: Alles auswählen

<!-- PHP -->
global $user;
$userid = $user->data['user_id'];
echo $userid;
<!-- ENDPHP -->
Ich mache meine ersten Gehversuche mit PHP und seit einer Woche auch mit SQL... Da ich noch nicht so recht hinter die Struktur vom neuen phpbb gekommen bin, taste ich mich über die Templatedateien voran :-)
Learning by doing :wink:

Vielen Dank für das Snippet; hat mir enorm geholfen :grin:

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 01.11.2016 18:42
von gn#36
Eine sinnvolle Dauerlösung ist PHP im Template normalerweise nicht, denn das ist verbunden mit einer ganzen Reihe von Nachteilen:
  • Du musst entweder die Templateänderung bei jedem Update neu einbauen, oder aber das Update selber durchführen
  • Die Trennung von Darstellung und Funktion geht verloren (z.B. blöd, wenn du irgendwann mal mehrere Templates einsetzen willst)
  • Wenn man an mehreren Stellen im Template PHP Code einbaut ist die Reihenfolge in der etwas ausgeführt wird nicht immer ganz klar. Das kann zu schwer zu findenden Fehlern führen.
  • Der PHP Code im Template wird erst sehr spät ausgeführt. Eine Einflussnahme auf phpBB interne Vorgänge ist darüber daher normalerweise nicht möglich.
  • Je nach phpBB Version (bei phpBB 3.0.x sicher, bei 3.1 habe ich nicht nachgesehen) läuft der PHP Code im Kontext einer Klassenmethode. Das kann zu seltsamem Verhalten führen.
  • Der Zugriff auf phpBB interne Variablen ist nicht ganz einfach. Eine Dauerlösung ist die Verwendung von globalen Variablen nicht, Seiteneffekte kann sie auch haben, z.B. wenn die globalen Variablen lokale Variablen mit gleichem Namen überlagern.
Ich empfehle dir daher, dich eingehend mit Erweiterungen zu beschäftigen und es direkt richtig zu machen. Der Aufbau von Erweiterungen ist am Anfang vielleicht etwas verwirrend und das Template System ist auch nicht unbedingt direkt zu Beginn intuitiv.

Lesestoff:
viewtopic.php?f=140&t=238108
viewtopic.php?f=140&t=235138
viewtopic.php?f=140&t=229654
KB:template_system
KB:template_syntax

Re: UserID in <!-- PHP --> übernehmen

Verfasst: 02.11.2016 10:30
von Pofi
Viel zu lesen :grin:

Aber ich hab da richtig Bock drauf. Ich freue mich, wenn ich etwas bastel und das dann auch tatsächlich funktioniert. Allerdings ist das immer mit Arbeit und Zeit verbunden. Obwohl ich sagen muss, dass ich php & SQL in relativ kurzer Zeit soweit verstanden habe, dass man damit vernünftig arbeiten kann.

Ich werde mir die Sachen mal anschauen und etwas rumprobieren. Ich denke, wenn man da ein paar Versuche gemacht hat, sollte das schon klappen.

Vielen Dank für die investierte Zeit, ich kann mir vorstellen, diese hin und wieder nochmal in Anspruch zu nehmen :lol: