Header Namensauflösung in portal.php :o(

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Header Namensauflösung in portal.php :o(

Beitrag von AWSW »

Hallo,
ich kämpfe derzeit mit einem Namensauflösungsproblem in meinem Portal. Dort habe ich im Adminpannel eine Eingabe erstellt, in die die Links und Beschreibungen für die Navigation im FOrum eingegeben werden können. In der Datenbank liegen die Daten dann auch so vor:

[ externes Bild ]

In der portal.php ist zum Auslesen der Daten folgender Code enthalten:

Code: Alles auswählen

$sql = "SELECT * FROM " . $table_prefix . "introportalmodnav fe ORDER BY navsort_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, 'Could not get introportalmodnav data', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars("topicrownav", array(
'nav_link' => $row['nav_link'],
'nav_name' => $row['nav_name'])
);
}
In der portal_body.tpl folgender Code:

Code: Alles auswählen

<table width="100%" border="0" cellpadding="1" cellspacing="1" style="border-collapse: collapse" class="forumline">
  <tr>
        <td class="catHead" colspan="2" height="25"><span class="cattitle"><center><b>Navigation{IntroPortaltext13}:</b></center></span></td>
  </tr>
  <tr>
        <td colspan="2" height="1" class="row3"><img src="images/spacer.gif" width="1" height="1" alt="."></td>
  </tr>
  <tr><td class="row1">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<!-- BEGIN topicrownav -->
  <tr>
    <td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="{topicrownav.nav_link}" class="genmed">{topicrownav.nav_name}</a></span></td>
  </tr>
<!-- END topicrownav -->
  </td></tr></table>
</table>
Das Problem, dass ich damit noch habe ist, dass die eingegebenen Bezeichnungen z.B. "{L_FAQ}" usw. nicht wie im Header aufgelöst werden in z.B. "FAQ", sondern wie in der Datenbank eingetragen erscheinen, obwohl ich die page_header.php in der portal.php includet habe.

[ externes Bild ]

Im Quelltext der portal.php sieht die Ausgabe (für mich) eigentlich OK aus:
<table width="100%" border="0" cellpadding="1" cellspacing="1" style="border-collapse: collapse" class="forumline">
<tr>
<td class="catHead" colspan="2" height="25"><span class="cattitle"><center><b>Navigation:</b></center></span></td>
</tr>
<tr>
<td colspan="2" height="1" class="row3"><img src="images/spacer.gif" width="1" height="1" alt="."></td>
</tr>
<tr><td class="row1">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="index.php" class="genmed">{L_INDEX}</a></span></td>
</tr>
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="portal.php" class="genmed">{L_PORTAL}</a></span></td>
</tr>
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="search.php" class="genmed">{L_SEARCH}</a></span></td>
</tr>
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="privmsg.php" class="genmed">{PRIVATE_MESSAGE_INFO}</a></span></td>
</tr>
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="profile.php?mode=editprofile" class="genmed">{L_PROFILE}</a></span></td>
</tr>
<tr>
<td class="row1"><span class="gensmall">&nbsp;•&nbsp;<a href="faq.php" class="genmed"><b>{L_FAQ}</b></a></span></td>
</tr>
</td></tr></table>
</table>
Ich hoffe Ihr könnte mir helfen, dass Problem zu lösen - Vielen Dank vorab für jeden Tipp :D
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Und wo speicherst du, das z.B. {L_SEARCH} dann "Suche" heissen soll (und wo gibst du es aus, das "Suche" über $lang['Search'] definiert is) ? ;)
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Beitrag von AWSW »

Guten Morgen Acid :D

Hab ich mir heute Nacht dann auch überlegt, aber blauäugig wie ich bin, hatte ich eigentlich gedacht, dass das phpbb auch etwas mitdenkt ;)

Du meinst also ich müsste erst noch ein Feld anfügen, in dem das $lang['Search'] gespeichert wird und dann in der while Schleife noch wie bei normalen .php - .tpl Aufrufen das mit rein kommen 'L_SEARCH' => $lang['Search'], (aus dem Code zusammengesetzt) ?

Hab ich schon versucht, aber es wollte mir nicht gelingen :( Außerdem hatte ich auch auf eine etwas Userfreundlichere Lösung gehofft ;)

Danke & Gruß !
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Hi Axel :D

Versuchs doch mal so: in die DB schreibst Du nicht die Template-Variable, sondern die PHP-Variable, also statt "{L_INDEX}" "$lang['Index']".

Dann kannst Du

Code: Alles auswählen

nav_name => $nav_name;
schreiben.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Beitrag von AWSW »

Hallo & Guten Morgen Sascha,
hmmm so gut sich dass auch anhörte, leider bleiben dann die Namen ganz aus :( oder es wird nur $lang['Index'] angezeigt, wenn ich die ursprüngliche Zeile 'nav_name' => $row['nav_name']) drin lasse...

:(

Meine Idee bei der Sache war auch, dass so einfach = Userfreundlich wie möglich zu gestallten, denn wenn ich die User erst die lang-Angabe raus suchen lassen will, ist es IMHO fast einfacher den Code direkt in die .tpl einzutragen ;)

Wäre schön wenn wir das gelöst bekommen würden ! Danke Euch :D
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Hier mal ein Beispiel:

Code: Alles auswählen

<?php

$lang['Index'] = "Startseite";

$row['nav_name'] = "\$lang[\"Index\"]";

$nav_name = $row['nav_name'];

echo $nav_name;

?>
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Beitrag von AWSW »

Hallo Sascha,
ich hab wahrscheinlich zu kurz geschlafen, aber als Ergebnis erhalte ich dann:
$lang["Index"]
:roll:
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Beitrag von AWSW »

Hallo,
hier auch mal der SQL Teil, falls das weiter hilft:

Code: Alles auswählen

#
# Tabellenstruktur für Tabelle `phpbb_introportalmodnav`
#

CREATE TABLE phpbb_introportalmodnav (
  nav_id int(11) NOT NULL auto_increment,
  navsort_id int(11) NOT NULL default '0',
  nav_link varchar(255) NOT NULL default '',
  nav_name varchar(255) NOT NULL default '',
  PRIMARY KEY  (nav_id)
) TYPE=MyISAM;

#
# Daten für Tabelle `phpbb_introportalmodnav`
#

INSERT INTO phpbb_introportalmodnav VALUES (1, 1, 'index.php', '{L_INDEX}');
INSERT INTO phpbb_introportalmodnav VALUES (2, 2, 'portal.php', '{L_PORTAL}');
INSERT INTO phpbb_introportalmodnav VALUES (3, 3, 'search.php', '{L_SEARCH}');
INSERT INTO phpbb_introportalmodnav VALUES (4, 6, 'faq.php', '<b>{L_FAQ}</b>');
INSERT INTO phpbb_introportalmodnav VALUES (5, 4, 'privmsg.php', '{PRIVATE_MESSAGE_INFO}');
INSERT INTO phpbb_introportalmodnav VALUES (9, 5, 'profile.php?mode=editprofile', '{L_PROFILE}');
Ach ja hab ich es schon erwähnt ? Nein ? >>> HILFE :D
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Hmm, ok, Sackgasse. Variable Variablen funktionieren mit Arrays nicht...

Sieht so aus, als ob Du es auch zu Fuß machen musst... Mir fällt auch im Moment nix Schlaues ein...
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Code: Alles auswählen

$lang['Index'] = "Startseite";
$row['nav_name'] = '$lang["Index"]';

eval('$nav_name = ' . $row['nav_name'] . ';');
echo $nav_name;
Im fertigen Code:

Code: Alles auswählen

while ( $row = $db->sql_fetchrow($result) ) 
{
  eval('$nav_name = ' . $row['nav_name'] . ';'); 
  $template->assign_block_vars("topicrownav", array( 
    'nav_link' => $row['nav_link'], 
    'nav_name' => $nav_name) 
  ); 
}
Antworten

Zurück zu „Coding & Technik“