ist es auch, vor allem unleserlich! kann hier mal jemand tags hinzufügen?!
dann können wir es ja nochmal versuchen, wobei ich mich mit oop noch nicht auskenne.
Probleme mit include
Einklappen
X
-
Bei dem ganzen Teil wird überprüft ob der Link in der URL mit dem was in der menu_withsubs.inc steht übereinstimmt. Ist das der Fall wir ein aktiver Button angezeigt.
Ich versuche bei dem ganzen unterhalb von ID=1 ein Submenü anzeigen zu lassen (alle Buttons inaktiv natürlich)
Bei einem Klick auf einen Link des Submenüs soll dieser auch aktiv werden.
Da ich es bisher mit der Variante wie aus meinem erstem Posting probiert habe - geht das nicht. Ich habe ja einen weiteren Parameter mit übergeben =>index.php?ID=1&submenu=2
Deshalb meine Fragestelung in diesem Forum.
Ich war nicht zu faul den ganzen Code zu posten sondern dachte es wäre zu viel code - ist es ja eigentlich auch.
Einen Kommentar schreiben:
-
OK
hier die Seíte in der das menü und ein submenü geladen wird
PHP-Code:<?php
$menu = new Menu;
$menu->config['menumode'] = 'withsubs';
$menu->config['withsubs_treemode'] = 'true';
$menu->config['templatefile'] = 'menu_withsubs.tpl';
$menu->config['templatecfgfile'] = 'menu_withsubs.cfg';
$menu->config['datamode'] = 'flatfile';
$menu->search_in_key = 'ID';
if (!empty($_GET['ID'])) {
$menu->search_for_value = $_GET['ID'];
} else {
$menu->search_for_value = '1';
}
?>Code:<html> <head> <title>Seite</title> </head>
PHP-Code:<?php
if( !class_exists('Menu')){
include_once('menu/Menu.php');
}
$menu = new Menu;
?>Code:<body> <table border="1" cellspacing="0" width="67%" height="273"> <tr> <td width="12%" height="24"> </td> <td width="88%" height="24">PHP-Code:<?php
if($ID==1)
include("subbutton_off.inc");
?>Code:</td> </tr> <tr> <td width="12%" height="223">PHP-Code:<?php
$menu->out();
?>hier ist der inhalt von Menu.phpCode:</td> <td width="88%" height="223"> </td> </tr> <tr> <td width="12%" height="18"></td> <td width="88%" height="18"></td> </tr> </table> </body> </html>
hier der inhalt der config.phpPHP-Code:<?php
if(!isset($_GET)) $_GET = $HTTP_GET_VARS;
require_once(dirname(__FILE__).'/xtpl.inc.php');
class Menu {
var $search_in_key;
var $search_for_value;
function Menu() {
require(dirname(__FILE__).'/config.php');
}
function out() {
$this->_MenuTpl = new XTemplate($this->config['templatefile_path'].$this->config['templatefile']);
if (file_exists($this->config['templatecfgfile_path'].$this->config['templatecfgfile'])) {
include_once($this->config['templatecfgfile_path'].$this->config['templatecfgfile']);
}
$this->_MenuTpl->assign('CONFIG', $this->CONFIG);
$this->_MenuTpl->assign('TEMPLATEPATH', $this->config['templatefile_url']);
switch ($this->config['datamode']) { // Daten in Array umspeichern
case 'mysql':
$this->_load_data_in_array_from_mysql($this->config['mysql']);
break;
default:
$this->_load_data_in_array_from_flatfile($this->config['datafile_path'].$this->config['datafile']);
break;
}
$this->_get_current_menu_id($this->_menudata, $this->search_in_key, $this->search_for_value); // ID des aktiven Menüpunkts ausfindig machen
switch ($this->config['menumode']) { // Im entsprechenden Modus das Menü parsen
case 'withopensubs':
$this->_parse_menu_withopensubs($this->_menudata);
break;
case 'withsubs':
$this->_parse_menu_withsubs($this->_menudata);
break;
case 'standard':
$this->_parse_menu($this->_menudata);
break;
default:
$this->_parse_menu($this->_menudata);
break;
}
$this->_MenuTpl->parse('main'); // Hauptbereich des Menüs parsen
$this->_MenuTpl->out('main'); // Menü ausgeben:
print("");
}
function _load_data_in_array_from_flatfile($datafile) {
// Menüaten laden und parsen:
$fp = fopen($datafile, 'r');
$menufields = fgetcsv($fp, '1000', ';');
$this->_num_menufields = count($menufields); // Anzahl der Menüfelder in Variable speichern
// Daten in Array umspeichern
$row = '0';
while ($tmp = fgetcsv($fp, '1000', ';')) { // Daten aus der Menüdatei auslesen
for ($i = '0'; $i < $this->_num_menufields; $i++) {
$this->_menudata[$row][$menufields[$i]]=$tmp[$i];
}
$row++;
}
fclose ($fp);
$this->num_menu_rows = $row - 1;
}
function _load_data_in_array_from_mysql($config) {
$this->mysqllink = mysql_connect($this->config['mysql']['host'], $this->config['mysql']['user'], $this->config['mysql']['pwd']) or die(mysql_error());
mysql_select_db($this->config['mysql']['db'], $this->mysqllink) or die(mysql_error());
// Daten aus mySQL Datenbank holen:
$sql = "SELECT * FROM ".$this->config['mysql']['table']." ORDER BY 'INT_ID'";
$result = mysql_query($sql);
while ($tmp = mysql_fetch_array($result)) {
$this->_menudata[] = $tmp;
}
$this->num_menu_rows = mysql_num_rows($result) - 1;
}
function _get_current_menu_id($menudata, $search_in_key, $search_for_value) {
global $HTTP_SERVER_VARS;
// Wenn gesetzt ist in welchem Schlüssel nach welchen Wert gesucht werden soll diese Daten verwenden:
reset ($menudata);
if (!empty($search_in_key) || $search_in_key == '0' and !empty($search_for_value) || $search_for_value == '0') {
while (list(, $value) = each($menudata)) {
if ($value[$search_in_key] == $search_for_value) {
$this->current_menu_id = $value['ID'];
}
}
}
// Ansonsten versuchen aktuellen Menüpunkt anhand von HTTP_SERVER_VARS['SCRIPT_NAME'] zu erkennen
else {
while (list(, $value) = each($menudata)) {
if($value['URL'] == substr($HTTP_SERVER_VARS['REQUEST_URI'], 0, strlen($value['URL']))) {
$this->current_menu_id = $value['ID'];
}
}
}
}
function _parse_menu($menudata) {
for ($row=0; $row <= $this->num_menu_rows; $row++) {
$this->_MenuTpl->assign('MENUDATA', $menudata[$row]);
if ($this->current_menu_id == $menudata[$row]['ID']) {
$this->_MenuTpl->parse('main.menu.active');
$this->_MenuTpl->parse('main.menu');
}
else {
$this->_MenuTpl->parse('main.menu.inactive');
$this->_MenuTpl->parse('main.menu');
}
}
}
function _parse_menu_withopensubs($menudata) {
for ($row=0; $row <= $this->num_menu_rows; $row++) {
$this->_MenuTpl->assign('MENUDATA', $menudata[$row]);
if ($this->current_menu_id == $menudata[$row]['ID']) {
$this->_MenuTpl->parse('main.menu.'.strlen($menudata[$row]['ID']).'_active');
$this->_MenuTpl->parse('main.menu');
}
else {
$this->_MenuTpl->parse('main.menu.'.strlen($menudata[$row]['ID']).'_inactive');
$this->_MenuTpl->parse('main.menu');
}
}
}
function _parse_menu_withsubs($menudata) {
$activerow_idlenght = strlen($this->current_menu_id);
for ($row=0; $row <= $this->num_menu_rows; $row++) {
$currentrow_idlenght = strlen($menudata[$row]['ID']);
if ($currentrow_idlenght > $activerow_idlenght + 1) {
continue; // Wenn die ID der aktuellen Reihe mind. 2 Zeichen länger ist als die der aktiven muss sie nicht angezeigt werden
}
elseif ($currentrow_idlenght == $activerow_idlenght + 1) {
if ($this->current_menu_id != substr($menudata[$row]['ID'] ,0 , $currentrow_idlenght - 1)) {
continue;
}
}
elseif ($currentrow_idlenght <= $activerow_idlenght) {
if (substr($menudata[$row]['ID'], 0, $currentrow_idlenght - 1) != substr($this->current_menu_id, 0, $currentrow_idlenght - 1)) {
continue;
}
}
$this->_MenuTpl->assign('MENUDATA', $menudata[$row]);
if ($this->current_menu_id == $menudata[$row]['ID'] or ($this->config['withsubs_treemode']) ? (substr($menudata[$row]['ID'], 0, $currentrow_idlenght) == substr($this->current_menu_id, 0 ,$currentrow_idlenght)) : (0)) {
$this->_MenuTpl->parse('main.menu.'.strlen($menudata[$row]['ID']).'_active');
$this->_MenuTpl->parse('main.menu');
}
else {
$this->_MenuTpl->parse('main.menu.'.strlen($menudata[$row]['ID']).'_inactive');
$this->_MenuTpl->parse('main.menu');
}
}
}
}
?>
die menu_withsubs.tplPHP-Code:<?php
global $HTTP_SERVER_VARS;
$this->config['templatefile'] = 'menu_withsubs.tpl';
$this->config['templatecfgfile'] = 'menu_withsubs.cfg';
$this->config['menumode'] = 'standard';
$this->config['withsubs_treemode'] = true;
$this->config['datamode'] = 'flatfile';
$this->config['datafile'] = 'menu_withsubs.inc';
$this->config['mysql']['db'] = 'menu';
$this->config['mysql']['user'] = '';
$this->config['mysql']['host'] = '';
$this->config['mysql']['pwd'] = '';
$this->config['mysql']['table'] = 'menu_std';
$this->config['templatefile_path'] = dirname(__FILE__).'/templates/';
$this->config['templatefile_url'] = substr(dirname(__FILE__).'/templates', strlen($HTTP_SERVER_VARS['DOCUMENT_ROOT']));
$this->config['templatecfgfile_path'] = $this->config['templatefile_path'];
$this->config['datafile_path'] = dirname(__FILE__).'/data/';
die menu_withsubs.incCode:<!-- BEGIN: main --> <table width="{CONFIG.table_width}" border="0" cellspacing="0" cellpadding="0"> <!-- BEGIN: menu --> <!-- BEGIN: inactive --> <tr> <td><a href="{MENUDATA.URL}" title="{MENUDATA.DESCRIPTION}"> <img src="{TEMPLATEPATH}/images/stdimages/{MENUDATA.IMAGE_INACTIVE}" alt="{MENUDATA.NAME}" border="0"></a></td> </tr> <!-- END: inactive --> <!-- BEGIN: active --> <tr> <td><a href="{MENUDATA.URL}" title="{MENUDATA.DESCRIPTION}"> <img src="{TEMPLATEPATH}/images/stdimages/{MENUDATA.IMAGE_ACTIVE}" alt="{MENUDATA.NAME}" border="0"></a></td> </tr> <!-- END: active --> <!-- END: menu --> </table> <!-- END: main -->
sorryPHP-Code:"ID"; "URL"; "NAME"; "DESCRIPTION"; "IMAGE_ACTIVE"; "IMAGE_INACTIVE"
"1"; "/index.php?&language=de&ID=1"; "Startseite"; "Zur Startseite"; "Menu_big_de_aktive_01.gif"; "Menu_big_de_inaktive_01.gif"
"2"; "/forum.php?&language=de&ID=2"; "Forum"; "Zum Diskussionsforum"; "Menu_big_de_aktive_02.gif"; "Menu_big_de_inaktive_02.gif"
"3"; "/kontakt.php?&language=de&ID=3"; "Kontakt"; "Zu den Kontaktinfos"; "Menu_big_de_aktive_03.gif"; "Menu_big_de_inaktive_03.gif"
Zuletzt geändert von wasi; 16.07.2003, 15:29.
Einen Kommentar schreiben:
-
deswegen ist hier noch immer kein code! wenn du das nicht packst, kannst du keine hilfe erwarten!
Einen Kommentar schreiben:
-
Also das eigentliche Menü basiert auf dem von spellweb.
http://www.spellweb.de/airscripts/ai.../standard_img/
Ich versuche halt noch ein Submenü dazwischen zu bauen allerdings
im oberen bereich der seite
Einen Kommentar schreiben:
-
wenn dein code so aussehen würde, ginge gar nichts!
gib den ganzen code rüber, mit tags!
Einen Kommentar schreiben:
-
Probleme mit include
Hallo,
ich habe so einige Probleme mit include bzw. parameterübergabe im Link.
Ich möchte folgendes.
Über ...php?ID=1 wird ein Button im Menü aktiv geschaltet.
D.h. über die variable 1 wird der Button durch einen andersfarbigen erstetzt.
Soweit OK.
Gleichzeitig wird über diesen Link auch ein Submenü includiert - alle Links inaktiv.
das mache ich so:
if($ID==1)
include("subbutton_off.inc");
Nun möchte ich im Submenu der aufgerufenen Seite durch einen Klick auf den nächsten Button auch aktiv schalten ohne das der erste Button inaktiv wird.
Also habe ich es mit einem weiteren Parameter probiert.
...php?ID=1&submenu=2
if($submenu==2)
include("subbutton_on.inc");
Nun taucht das Problem auf.
php?ID=1 wird nur ausgeführt wenn es so im Link steht
Wenn ich nun
...php?ID=1&submenu=2 eingebe wird zwar
if($submenu==2)
include("subbutton_on.inc");
ausgeführt aber ID=1 nicht -
D.h der subbutton ist aktiv aber der button nicht mehr
Wie kann ich das lösen?
danke!!!
wasi
Zuletzt geändert von wasi; 15.07.2003, 19:46.Stichworte: -
Einen Kommentar schreiben: