Problem mit Array-Variable.

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.
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Problem mit Array-Variable.

Beitrag 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 -->
Liebe Grüße
JumpinJack
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Beitrag von Seether »

Das wirst Du in dieser Datei nicht lösen können.

Poste mal den Ausschnitt aus der PHP Datei.


S.
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag 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');

?>
Liebe Grüße
JumpinJack
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Beitrag 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.
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Re: Problem mit Array-Variable.

Beitrag 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?
Liebe Grüße
JumpinJack
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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}] = ...
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag von JumpinJack »

Ich küss dich wenns klappt! :D
Liebe Grüße
JumpinJack
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag 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.
Liebe Grüße
JumpinJack
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

dann schreib halt $array_index=1 anstatt 0 wenn du schon einen Eintrag manuell eingetragen hast.
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag 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.
Liebe Grüße
JumpinJack
Antworten

Zurück zu „Coding & Technik“