Probleme mit include

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mister_x1
    antwortet
    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.

    Einen Kommentar schreiben:


  • wasi
    antwortet
    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:


  • wasi
    antwortet
    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">&nbsp;</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();
    ?>
    Code:
        </td>
        <td width="88%" height="223">&nbsp;</td>
      </tr>
      <tr>
        <td width="12%" height="18"></td>
        <td width="88%" height="18"></td>
      </tr>
    </table>
    
    </body>
    
    </html>
    hier ist der inhalt von Menu.php
    PHP-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'] ,,    $currentrow_idlenght 1)) {
                        continue;
                    }
                }
                elseif (
    $currentrow_idlenght <=    $activerow_idlenght) {
                    if (
    substr($menudata[$row]['ID'], 0$currentrow_idlenght -    1) != substr($this->current_menu_id0,    $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,    ,$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');
                }
            }
        }
    }
    ?>
    hier der inhalt der config.php
    PHP-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.tpl
    Code:
    <!-- 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 -->
    die menu_withsubs.inc
    PHP-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" 
    sorry
    Zuletzt geändert von wasi; 16.07.2003, 15:29.

    Einen Kommentar schreiben:


  • mister_x1
    antwortet
    deswegen ist hier noch immer kein code! wenn du das nicht packst, kannst du keine hilfe erwarten!

    Einen Kommentar schreiben:


  • wasi
    antwortet
    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:


  • mister_x1
    antwortet
    wenn dein code so aussehen würde, ginge gar nichts!
    gib den ganzen code rüber, mit tags!

    Einen Kommentar schreiben:


  • wasi
    antwortet
    das ist alles

    Einen Kommentar schreiben:


  • mister_x1
    antwortet
    uh, was das denn für'n durcheinander? zeige code!

    Einen Kommentar schreiben:


  • wasi
    hat ein Thema erstellt Probleme mit include.

    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.
Lädt...
X