Seite 1 von 1
Frage zu Variablen
Verfasst: 25.03.2007 18:01
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
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:
Dann die Variable so Umsetzen
Und dann iiuns TOL
Verfasst: 28.03.2007 01:47
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.
Verfasst: 29.03.2007 20:05
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!
Verfasst: 08.04.2007 13:34
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?
Verfasst: 08.04.2007 13:40
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ß
Verfasst: 08.04.2007 13:47
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?
Verfasst: 08.04.2007 14:18
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:
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.
Verfasst: 08.04.2007 14:24
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!
Verfasst: 08.04.2007 14:31
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
