Seite 1 von 2

Problem mit Array-Variable.

Verfasst: 23.05.2003 00:10
von JumpinJack
Halllo.

Also ich benötige eure Hilfe. Also ich möchte phpbb2 FAV MOD + ext URLs in ein Javascript-Menü einbinden. Nun im Prinzip ist das fast fertig. Scheitern tuts nur noch an ner kleinigkeit.

Das Problem ist die Angabe der Anzahl der Links. Da die Links in einem Array ausgegeben werden, und ich dort fest [1] eingebe, bekomme ich derzeit nur einen Link angezeigt (den letzten)... Ich benötige jetzt eine funktion welche die Angabe im jeweiligen Array durch eine hochzählende Varibale ersetzt.

Sprich, wenn ich zehn links habe muss der beim ersten halt [1] beim zweiten link [2] und beim dritten [3] usw in den Array setzen.

Hat einer ne Idee wie man das umsetzen kann?

Hier ein Auszug von Javascript Code:
// Infos Suche menu
menu[3] = new Array();
menu[3][0] = new Menu(true, '<', 0, 21, 160, defOver, defBack, 'itemBorder', 'itemText');
menu[3][1] = new Item('Suchen', '{U_SEARCH}', '', defLength, 0, 0);
menu[3][2] = new Item('FAQ', 'faq.php ', '', defLength, 0, 0);
menu[3][3] = new Item('Board Regeln', 'rules.php ', '', defLength, 0, 0);
menu[3][4] = new Item('{L_MEMBERLIST}', '{U_MEMBERLIST}', '', defLength, 0, 0);
menu[3][5] = new Item('{L_USERGROUPS}', '{U_GROUP_CP}', '', defLength, 0, 0);
menu[3][6] = new Item('Acronyme', 'acronyme.php', '', defLength, 0, 0);
menu[3][7] = new Item('Smiley Liste', 'smilies_list.php', '', defLength, 0, 0);

// Reopen Favoriten (intern)
menu[4] = new Array();
// This is across but not down... a horizontal popout (with crazy stylesheets :)...
menu[4][0] = new Menu(true, '>', 163, 0, 160, defOver, defBack, 'itemBorder', 'itemText');
// These items are lengthier than normal, and have extra spacing due to the fancy borders.
<!-- BEGIN topicrow0 -->
menu[4][1] = new Item('{topicrow0.L_TOPIC_TITLE}', '{topicrow0.U_TOPIC_TITLE}', '', defLength, 0, 0);
!-- END topicrow0 -->

// Help About popout
menu[5] = new Array();

// Favoriten (extern)
menu[5][0] = new Menu(true, '>', 163, 0, 160, defOver, defBack, 'itemBorder', 'itemText');
<!-- BEGIN topicrow1 -->
menu[5][1] = new Item('{topicrow1.ext_name}', '{topicrow1.ext_id}', '', defLength, 0, 0);
<!-- END topicrow1 -->

Verfasst: 23.05.2003 01:21
von Seether
Das wirst Du in dieser Datei nicht lösen können.

Poste mal den Ausschnitt aus der PHP Datei.


S.

Verfasst: 23.05.2003 01:24
von JumpinJack
Ja ok. Hier ist der Auszug der page_header.php .

Code: Alles auswählen

..................................
else
{
	header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
//
// EXTERNE FAVORITEN AUSGABE DER URLs START
//
$sql = "SELECT * FROM " . $table_prefix . "favorites_ext fe WHERE fe.user_id = '" . $userdata['user_id'] . "' ORDER BY ext_name";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, 'Could not get extern favorites data', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars("topicrow1", array(
'fav_id' => $row['fav_id'],
'ext_id' => $row['ext_id'],
'ext_name' => $row['ext_name']));
}
//
// EXTERNE FAVORITEN AUSGABE DER URLs ENDE
//
header ('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header ('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');

$template->pparse('overall_header');

?>

Verfasst: 23.05.2003 10:00
von Seether
Ich kann mich täuschen, aber ich denke Du musst mit

{fav_id}
{ext_id}
{ext_name}

arbeiten. Die müssen dann zwischen Topicrow in der Template Datei.


S.

Re: Problem mit Array-Variable.

Verfasst: 26.05.2003 07:38
von JumpinJack
Naja also die {ext_id} nimm ich ja schon um den a href auszuwerfen.
Und den {ext_name} Natürlich auch.

Aber die fav_id kann ich nicht nehmen, da diese hochgezählt wird. Also User 1 legt einen link an (fav_id=1) User 2 legt nen Link an (fav_id=2) und dann wieder User 1 (fav_id=3)

Also ich das dann in das template baue dann sieht das wie folgt aus:

Code:
// Favoriten (extern)
menu[5][0] = new Menu(true, '>', 163, 0, 160, defOver, defBack, 'itemBorder', 'itemText');
<!-- BEGIN topicrow1 -->
menu[5][{fav_id}] = new Item('{topicrow1.ext_name}', '{topicrow1.ext_id}', '', defLength, 0, 0);
<!-- END topicrow1 -->
Menü nach db-abfragedes Users 1:
menu[3][0] = new Menu(true, '<', 0, 21, 160, defOver, defBack, 'itemBorder', 'itemText');
menu[3][1] = new Item('1. Link', '{linkpfad}', '', defLength, 0, 0);
menu[3][3] = new Item('2. Link', linkpfad', '', defLength, 0, 0);
Also das Problem gibt nun die 3. da muss, wenn das menü klappen soll, ne 2 stehen. Also immer hochzählend.

Weiß einer rat?

Verfasst: 26.05.2003 15:35
von Pyramide

Code: Alles auswählen

$array_index = 0;
while ( $row = $db->sql_fetchrow($result) ) 
{ 
$template->assign_block_vars("topicrow1", array( 
'fav_id' => $row['fav_id'], 
'ext_id' => $row['ext_id'], 
'ext_name' => $row['ext_name'],
'array_id' => $array_index++)); 
}
und im Template schreibst du dann einfach

Code: Alles auswählen

menu[3][{topicrow1.array_id}] = ...

Verfasst: 26.05.2003 20:00
von JumpinJack
Ich küss dich wenns klappt! :D

Verfasst: 26.05.2003 20:31
von JumpinJack
Noch darf ich dich nitt küssen! ;)

Also hab jetzt folgendes drinne:
page-header.php hat geschrieben://
// EXTERNE FAVORITEN AUSGABE DER URLs START
//
$sql = "SELECT * FROM " . $table_prefix . "favorites_ext fe WHERE fe.user_id = '" . $userdata['user_id'] . "' ORDER BY ext_name";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, 'Could not get extern favorites data', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars("topicrow1", array(
'fav_id' => $row['fav_id'],
'ext_id' => $row['ext_id'],
'ext_name' => $row['ext_name'],
'array_id' => $array_index++));
}
$array_index = 0;

//
// EXTERNE FAVORITEN AUSGABE DER URLs ENDE
//
overallheader.tpl hat geschrieben:// Help Favoriten (extern))
menu[7] = new Array();
// Favoriten (extern)
menu[7][0] = new Menu(true, '>', 163, 0, 160, defOver, defBack, 'itemBorder', 'itemText');
<!-- BEGIN topicrow1 -->
menu[7][{topicrow1.array_id}] = new Item('{topicrow1.ext_name}', '{topicrow1.ext_id}', '', defLength, 0, 0);
<!-- END topicrow1 -->
Ist da noch ein denkfehler drinne? Wenn ich nämlich die 1 anstatt der {topicrow1.array_id} setze bekomme ich den letzten Link raus. Wenn ich halt den von dir vorgeschlagenen {topicrow1.array_id} nehme, gibts nen Fehler und das Menü wird nicht gezeigt.

Verfasst: 27.05.2003 08:41
von Pyramide
dann schreib halt $array_index=1 anstatt 0 wenn du schon einen Eintrag manuell eingetragen hast.

Verfasst: 27.05.2003 09:08
von JumpinJack
Nein. Das habe ich nur gemacht um zu versuchen ob die DB abfrage mit den anderen Variabelen klappt.
Quasie als Fehlerdiagnose. So weis ich das der alte Code nicht den Fehler erzeugt.

Schon mal vielen dank für deine Hilfe.