Frage zu Variablen

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Egonkab
Mitglied
Beiträge: 47
Registriert: 09.03.2007 14:54

Frage zu Variablen

Beitrag von Egonkab »

Moin Moin,

so ich wollte euch mal wieder mit meinen Fragen nerven!

Diesmal möchte ich wissen wie ich es machen muss wenn ich die einen Datensatz ausgelesen haben möchte..

Also ich habe die Tabelle "phpbb_test"
Mit folgenden Feldern

Code: Alles auswählen

"ID" mit Auto Increment
"Name1" TEXT
"Nachname" TEXT
z.B. ID = 1, Name1 = hugo, Nachname = Mueller
Nun möchte ich im PHPBB2 Forum den Namen und Nachnamen Angezeigt bekommen...

Hatte dazu die Idee:

Code: Alles auswählen

$name = $SQL ?????? *genau das nun suche ich hier
Dann die Variable so Umsetzen

Code: Alles auswählen

'TABELLENNAME' => $name
Und dann iiuns TOL
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Du willst es im "phpbb"-Stil machen ja?

Dann ist erstmal wichtig, ob du nur eine Zeile auslesen willst oder mehrere.

Schau Dir doch einfach mal den Code in der memberlist.php an.

z.B. um zu zählen wie viele User im Forum vorhanden sind:

Code: Alles auswählen

$sql = "SELECT count(*) AS total
          FROM " . USERS_TABLE . "
          WHERE user_id <> " . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, $sql);
}
if ( $total = $db->sql_fetchrow($result) )
{
	$total_members = $total['total'];
	echo($total_members);
}
$db->sql_freeresult($result);
Oder um die Usernamen von 100 Usern auszugeben:

Code: Alles auswählen

$sql = "SELECT username 
     FROM " . USERS_TABLE . "
     WHERE user_id <> " . ANONYMOUS . "
     ORDER BY username
	 LIMIT 100";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
	echo($row['username'] . '<br />');
}
Für so Testspielchen habe ich am Anfang auch die memberlist zerhackt und mir selber was gebastelt.

Damit verstehst Du dann auch recht gut das Template-System von phpBB.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Egonkab
Mitglied
Beiträge: 47
Registriert: 09.03.2007 14:54

Beitrag von Egonkab »

Wenn das Wochenende ruhig wird werde ich mich wohl mal wieder damit beschäftigen...

Möchte eigentlich es so ausgegeben haben das ich einen mehr oder minder Langen Text in der DB habe den ich dann auslese und im Forum angezeigt bekomme wenn ich im ACP einen Button drücke...

Edit: Meine natürlich wenn ich um ACP eine Checkbox Aktiviere!
Egonkab
Mitglied
Beiträge: 47
Registriert: 09.03.2007 14:54

Beitrag von Egonkab »

Also kann das noch mal einer erklären?

Ich habe nun die Tabelle
"phpbb_datenbank" mit den Feld "lager"
Diese Tabelle hat nur einen Datensatz der Variabel sein soll

Und dazu folgende SQL Abfrage:

Code: Alles auswählen

$sql = "SELECT username
     FROM " . USERS_TABLE . " ";
if( !($lagerabfrage = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Lager kann nicht angezeigt werden..', '', __LINE__, __FILE__, $sql);
} 
while ( $lager = $db->sql_fetchrow($lagerabfrage) )
Dann erkläre ich dem Template in der Liste noch das:
{LAGER} => $lager

Im Template ist es auch eingebunden, nun muesste doch an der Stelle im TPL der Datensatz zu sehen sein, oder was mache ich falsch?
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Hast Du es mit einer einfach echo Ausgabe vorher mal probiert, ob ein Ergebnis ausgeliefert wird?

Du musst übrigens result und row nicht unbenennen. Du füllst damit nur weitere Variablen und opferst damit unnötigen Speicher.

Die Zuweisung muss für ein Template ja 'LAGER' => $lager['username'] sein.

Im Template musst Du auch daran denken, die Switche zu setzen und diesen Switch der Templatevariablen hinzuzufügen. Orientiere Dich mal an der Mitgliederliste. Da siehst Du wie das geht.

Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Egonkab
Mitglied
Beiträge: 47
Registriert: 09.03.2007 14:54

Beitrag von Egonkab »

Code: Alles auswählen

$sql = "SELECT lager
     FROM " . phpbb_datenbank . " ";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Lager kann nicht angezeigt werden', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
   echo($row['lager'] . '<br />');
}
Damit wird der wert schon einmal angezeigt!

So nun möchte ich aber das ich im TPL die Variable {LAGER} einbinde und so die Position bestimmen kann, wie mache ich das?

Da muss doch unter garantie das "echo" aber was dafür hin?
Zuletzt geändert von Egonkab am 08.04.2007 14:19, insgesamt 1-mal geändert.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Hi,

ich weiß nicht was Du da machst. Es wäre sinnvoller, wenn Du meine Fragen beantwortest ;)

Wenn Du weißt, dass das Ergebnis eh nur eine Zeile sein wird, dann kannst Du auch das machen:

Code: Alles auswählen

$sql = "SELECT lager 
     FROM " . phpbb_datenbank . ""; 
if( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Lager kann nicht angezeigt werden..', '', __LINE__, __FILE__, $sql); 
} 
$lager = ($row = $db->sql_fetchrow($result)) ? $row['lager'] : '';
In diesem Fall ist die Variable lager gefüllt mit dem Ergebnis aus der Datenbankabfrage. Die letzte Zeile ist dieser Bedingungen gleichzusetzen (ist nur eine Kurzform):

Code: Alles auswählen

if ( $row = $db->sql_fetchrow($result) )
{
$lager = $row['lager'];
}
else
{
$lager = '';
}
Bevor Du das weiter verarbeitest, solltest Du das aber erstmal testen, in dem Du es ausgibst mit:

Code: Alles auswählen

echo($lager);
Danach machst Du Dir den Kopf wegen der Zuweisung.

Du kannst nicht einfach "else $lager = $lagerabfrage;". Da fehlt ja das sql_fetchrow um die Ressource zu verarbeiten. Deswegen bekommst Du nur die ID der Ressource, aber nicht das Ergebnis ausgeliefert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Egonkab
Mitglied
Beiträge: 47
Registriert: 09.03.2007 14:54

Beitrag von Egonkab »

Oo gerade nur noch Bahnhof, sollte viell. zum Anfang klein Anfangen als so was hier zu machen, so es Funktioniert nun mit diesem Code

Code: Alles auswählen

$sql = "SELECT lager
     FROM " . phpbb_datenabnkl . " ";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Layer kann nicht angezeigt werden', '', __LINE__, __FILE__, $sql);
}
$lager = ($row = $db->sql_fetchrow($result)) ? $row['lager'] : '';
Und nun kann ich es auch per Variable bestimmen wo es hin soll!

Vielen vielen Herzlichen dank!
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Kein Problem.

Das ist aber wie gesagt nur dann sinnvoll, wenn das Ergebnis aus einer Zeile besteht. Also wenn wirklich nur eine Reihe in der Tabelle ausgelesen wird.

Wenn Du z.B. mehrere Zeilen für verschiedene Seiten anlegst, dann müsstest Du mit "WHERE seite = 'seitenname'" deine Abfrage genauer machen.

Oder wenn Du eine Liste von Ergebnissen ausliefern möchtest, dann eben mit einer while-Schleife arbeiten.

Bei Bedarf einfach noch mal fragen :D
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“