php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 20-10-2010, 20:33
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard Menü - Link aktivieren

Hallo,
das Menü:
PHP-Code:
error_reporting(E_ALL);

$s basename($_SERVER['SCRIPT_NAME']);
//basename extrahiert den Namen einer Datei aus einem Pfad
echo OMList($s);
function 
OMList($site) {
  
$site str_replace('''',$site);

$menu 'language/de.csv';
 
  
$cr chr(13).chr(10);
  
$nav '<ul class="listmenu">'.$cr;
  
$li 0
  
$dat file($menu);

 for(
$i=0$i<count($dat); $i++) {
    
$x explode('|',trim($dat[$i]));
    if(
$x[0]) {
      
$link $x[0]; 

      
$s $x[1];
            
      
$level 0;
      while (
strpos($link,'-') === 0) {
        
$level++; 
        
$link substr($link,1);
      }
      if(
$level $li+2) {
        if(
$level <= $li && $i>0) {
          
$nav .= '</li>'.$cr;
        }
        if(
$level $li) {
    
          
$li++; $nav .= '<ul>'.$cr;
        }
        while (
$level $li) {
          
$li--; $nav .= str_repeat('  '$li+1).'</ul></li>'.$cr;
        }
                
        
$nav .= str_repeat('  '$li+1);
            

$seite $site;
 
      if(
$s == $seite) {

               
$ul $li;
            
         while((
$p strripos($nav'<ul>')) && $ul) {
    
            
$ul--;
    
            
$plink strripos(substr($nav,1,$p),'<a href=');

                        
$nav substr($nav0$p+3).' title="'.$link.'" class="active"'.substr($nav$p+3);
                      }
                        
$nav .= '<li class="active"><span>'.$link.'</span>';
                         
                      }
        else 
                        {
                        
$nav .= '<li><a href="';
                        
$nav .= ''$s .'" title="'.$link.'">'.$link.'</a>';
                     }
                }   
            }
  }
 
  
$nav .= '</li>'.$cr;
  while (
$li) {
    
$li--; $nav .= str_repeat('  '$li+1).'</ul></li>'.$cr;
  }
    
$nav .= '</ul>'.$cr;
  return 
$nav;

aktiviert mir momentan nur den Link, dieser angeklickt ist:
HTML-Code:
<ul class="listmenu">

  <li>
    <a href="xxx" title="xxx">xxx</a>
    <ul title="xxx" class="active">
    <li>
    <a href="xxx" title="xxx">xxx</a></li>
    <li class="active"><span>xxx</span></li>
  </ul></li>

</ul>
wünschenswert wäre aber diese Form, dass die Oberkatergorie auch aktiviert ist:
HTML-Code:
<ul class="listmenu">

  <li>    <ul title="xxx" class="active">
    <a href="xxx" title="xxx">xxx</a>
    <li>
    <a href="xxx" title="xxx">xxx</a></li>
    <li class="active"><span>xxx</span></li>
  </ul></li>
 
</ul>
bitte um Hilfe.
vielen Dank im voraus
schischi
Mit Zitat antworten
  #2 (permalink)  
Alt 20-10-2010, 21:14
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Hast du eine Frage? Wo liegt dein Problem?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 20-10-2010, 21:47
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

@tobiaZ Hab ich mich undeutlich ausgedrückt??

bei dem Menü, werden nur einzelne Links aktiviert, ich hätte gerne das auch
die Kategorie darüber aktiviert ist.

z. B.:

<aktiviert>Rockoper
Hamlet
<aktiviert>Faust

ist das verständlicher?

danke
Mit Zitat antworten
  #4 (permalink)  
Alt 20-10-2010, 21:52
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

ich habe es zwar verstanden (TobiaZ sicherlich auch), aber es scheint, als verlangst du von deinen Helfern, sich durch deinen unkommentierten und unformatierten (Einrückungen!) Code zu quälen und dir darin den Fehler zu korrigieren. Das wird nicht passieren.

Wenn du konkretere Fragen stellst und etwas übersichtlicheren, nachvollziehbaren Code präsentierst, könnte das schon anders aussehen.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 20-10-2010, 21:57
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ack
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #6 (permalink)  
Alt 21-10-2010, 00:55
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

@AmicaNoctis u. @tobiaZ entschuldigung für den schlecht formatierten code! ich hoffe, so sieht er leserlicher aus.

PHP-Code:
$s basename($_SERVER['SCRIPT_NAME']);
//basename extrahiert den Namen einer Datei aus einem Pfad
echo OMList($s);


function 
OMList($site) {
// wer oder was ist $site?
  
$site str_replace('.php','',$site);
//csv datei mit den menuelinks
  
$menu 'language/de.csv';
  
$cr chr(13).chr(10);
  
$nav '<ul class="listmenu">'.$cr;
  
$li 0$dat file($menu);

  for(
$i=0$i<count($dat); $i++) {
    
$x explode('|',trim($dat[$i]));
    if(
$x[0]) {
      
$link $x[0]; $s $x[1];
      
$level 0;
      while (
strpos($link,'-') === 0) {
        
$level++; $link substr($link,1);
// var_dump($link); gibt hier die Unterkategorien aus
      
}
      if(
$level $li+2) {
        if(
$level <= $li && $i>0) {
          
$nav .= '</li>'.$cr;
        }
        if(
$level $li) {
          
$li++; $nav .= '<ul>'.$cr;
        }
        while (
$level $li) {
          
$li--; $nav .= str_repeat('  '$li+1).'</ul></li>'.$cr;
        }
        
$nav .= str_repeat('  '$li+1);
        if(
$s == $site) {
          
$ul $li;
            while((
$p strripos($nav'<ul>')) && $ul) {
            
$ul--;
            
$plink strripos(substr($nav,0,$p),'<a href=');
            
$nav substr($nav0$p+3).' title="'.$link.'" class="active"'.substr($nav$p+3);
          }
          
$nav .= '<li class="active"><span>'.$link.'</span>';
        }
        else {
          
$nav .= '<li><a href="';

          
$nav .= ''$s .'.php" title="'.$link.'">'.$link.'</a>';
// var_dump($s); gibt den href namen aus
// var_dump($link); gibt den link namen aus
        
}
      }
    }
  }
  
$nav .= '</li>'.$cr;
  while (
$li) {
    
$li--; $nav .= str_repeat('  '$li+1).'</ul></li>'.$cr;
  }
  
$nav .= '</ul>'.$cr;
  return 
$nav;

mit dem kommentieren hab ich noch Probleme, hoffe es ist entschuldigt!

Wie kann man nun das Script ändern, dass wenn eine Kategorie eine Unterkategorie vorweist beides aktiviert wird?
Mit Zitat antworten
  #7 (permalink)  
Alt 21-10-2010, 01:24
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Wie sieht denn diese CSV-Datei aus? Ich entnehme dem Code, dass da irgendwie mit Bindestrichen gearbeitet wird, um die Tiefe der Levels zu kennzeichnen.

Aber auch das ist schon wieder so ein Punkt. Warum bist du nicht in der Lage, solche essentiellen Informationen von alleine darzulegen, statt uns hier sinnlos ins Blaue raten zu lassen?

Statt den Code zu präsentieren, wäre es sinnvoller, den Algorithmus dahinter zu erklären, dann kann man viel leichter Denkfehler darin ausmachen und eliminieren und natürlich vor allem erstmal das Prinzip erkennen, das sich dahinter verbirgt oder mal verbergen soll.

Es ist halt schwer, aus mittelschlechtem Code rauszulesen, wofür er da ist, vor allem ohne Kenntnis der Daten, auf denen er operiert. Hoffe, das ist jetzt angekommen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 21-10-2010, 05:20
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

@AmicaNoctis, das ist richtig es wird mit Spiegelstrich gearbeitet und sorry wegen den fehlenden Daten um es zu vereinfachen! werde mich bemühen in diesem Forum hilfreicher zu sein.

Jede Menüebene ist mit einem Spiegelstrich gekennzeichnet
Ebene 0 ist die Wurzel und hat keinen Spiegelstrich
- Ebene 1 hat einen (1) Spiegelstrich und ist die 1. Unterebene

Die csv:
Code:
Aktuell|aktuell.php
Home|home.php
Rockoper|javascript:void(0)
-Faust|faust.php
-Hamlet|hamlet.php

Geändert von schischi (21-10-2010 um 05:24 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 21-10-2010, 10:13
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo.

Ich habe mir die Mühe gemacht, mir den Code anzusehen, den CSS-Bereich zu erweitern (sonst sieht man nämlich gar nix) und auch eine CSV mit dem Menü habe ich erstellt.

Zuerst einmal funktioniert das so schon mal gar nicht, denn so wie die CSV aufgebaut ist, ist es nicht mit Deinem Skript "kompatibel". Durch die Zeile

PHP-Code:
          $nav .= ''$s .'.php" title="'.$link.'">'.$link.'</a>'
erhält der jew. Skriptname immer noch ein ".php" ans Ende gepappt, wodurch sich Namen wie faust.php.php und hamlet.php.php ergeben.
Also muss das ".php" weg.

Das reicht aber nicht, denn durch diese Änderung funktioniert

PHP-Code:
        if($s == $site) { 
nicht mehr, denn in $site steht nun der Skriptname ohne ".php". Deshalb hängen wir's an

PHP-Code:
        if($s == $site ".php") { 
und das Skript funktioniert erst einmal so, wie Du es beschrieben hast.

Ich vermute mal, dass Deine CSV anders aufgebaut ist oder Dein Skript schon anders aussieht, als Du's hier beschrieben hast, denn ansonsten hättest Du schon viel früher gemerkt, dass etwas grundsätzlich fehlerhaft ist.

Wie dem auch sei.

*phew*

Nun aber zu Deinem eigentlichen Problem, denn das habe ich erst verstanden, als ich das Skript korrekt ausführen konnte und gesehen habe, was überhaupt passiert.

Das zeigt (uns da muss ich den MODs Recht geben), dass man zwar versuchen muss, den prüfenden Quellcode so klein wie möglich zu halten ("Auf den Punkt bringen!"), aber trotzdem alles mitliefern muss, damit das jew. Skript überhaupt startbar ist und der Tester/Helfer das sieht, was Du siehst.

So. Das Problem ist, dass bspw. beim Klick auf den Menüpunkt "Hamlet" der HTML-Code für die Kategorie (hier: "Rockoper") bereits erstellt wurde.

Die Schwierigkeit liegt also darin, nachträglich den Code zu ändern. Es gibt nun zwei Möglichkeiten, wie man's machen könnte:

1. Möglichkeit
An der Stelle, an der Du erkennst, dass Du eine Kategorie abarbeitest, fügst Du dem Link einen Platzhalter hinzu. (bspw. %CSS%)
Kommst Du nun in den Block, in dem

PHP-Code:
        if($s == $site ".php") { 
gegriffen hat, ersetzt Du %CSS% durch die CSS-Anweisung, also bspw. class="active".

Am Ende des Skripts (idealerweise direkt vor der Ausgabe) ersetzt Du alle übrig gebliebenen Platzhalter durch "":

PHP-Code:
        $nav str_replace("%CSS%"""$nav); 
2. Möglichkeit
Du fängst in der Datei nicht oben an, sondern unten. Sobald Du erkennst, dass das aktuelle Skript das ist, das auch im Menü aktiviert ist, setzt Du Dir eine Markierung (bspw. $active_kat = TRUE) und fügst beim Erstellen der jew. Kategorie den bereits genannten CSS-Code ein, indem Du den Zustand von $active_kat abfragst. (Nicht vergessen, $active_kat wieder auf FALSE zu setzen!)


Ich hoffe, ich konnte Dir helfen. Du kannst ja darüber berichten, ob (und wie) Dein Menü läuft...

cya
Mit Zitat antworten
  #10 (permalink)  
Alt 21-10-2010, 15:04
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

@sallow2001, ein dickes Lob an dich, dass du dir soviel Mühe machst.
ich hab das menü mal soweit gebracht um dies online(die seite selbst ist noch in process) zu stellen, dennoch hab ich das Problem mit dem aktivieren, hab aber auch noch nicht deine 2 Möglichkeiten angewendet!
Ist ja nur zum besseren Verständnis.

danke nochmal
schischi

Geändert von schischi (21-10-2010 um 18:54 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 21-10-2010, 15:11
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
dennoch hab ich das Problem mit dem aktivieren,
Welches könnte das nun schon wieder sein? *rat*
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #12 (permalink)  
Alt 21-10-2010, 15:17
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

@TobiaZ immernoch das gleiche siehe Nachricht #3!
wusste nicht, dass man das immer wieder hinzuschreiben muss, da das Thema schon so heisst.
Mit Zitat antworten
  #13 (permalink)  
Alt 21-10-2010, 15:26
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Nochmals: Wir lösen hier konkrete Probleme! sallow2001 hat sich viel mühe gegeben und dir eine recht anschauliche Lösung konkret auf dein Vorhaben geschneidert. Du kannst sie nicht umsetzen, das habe ich verstanden, woran du nun konkret scheiterst, was du bisher versucht hast, etc. kann ich leider nicht erkennen. Deshalb habe ich abermals konkret nachgefragt, woran du scheiterst.

Ich werd mich erstmal aus dem Aktiven ausklinken, wenn der Thread keine Fortschritte macht, wird er nachträglich nach Projekthilfe verschoben, dort kannst du auch erwarten, dass jemand den Code für dich schreibt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14 (permalink)  
Alt 21-10-2010, 18:49
schischi
 Registrierter Benutzer
Links : Onlinestatus : schischi ist offline
Registriert seit: Oct 2009
Beiträge: 66
schischi befindet sich auf einem aufstrebenden Ast
Standard

Nun hab ich beim Urheber des Scriptes nachgefragt und dieser erlaubt mir leider nicht etwas am Code zu ändern, man tut mir das leid um swallow2001, der sich so viel Mühe gegeben hat. Ich bitte vielmals um Entschuldigung.
Mit Zitat antworten
  #15 (permalink)  
Alt 21-10-2010, 21:19
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.724
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von schischi Beitrag anzeigen
Nun hab ich beim Urheber des Scriptes nachgefragt und dieser erlaubt mir leider nicht etwas am Code zu ändern, man tut mir das leid um swallow2001, der sich so viel Mühe gegeben hat. Ich bitte vielmals um Entschuldigung.
OffTopic:
Darf man erfahren, wer das ist? Falls der mal hier Forum um Hilfe bittet.


Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Menü zum Ausklappen / Dropdown Menü darki777 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 7 23-08-2006 00:22
[JavaScript] JavaScript über einen Link De/Aktivieren?! elecfuture HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 5 25-07-2006 15:48
[CSS] Link Menü nate10 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 01-12-2005 10:20
PHP-Menü - Link in einem andren Frame anzeigen lassen? MasterofPC PHP Developer Forum 7 09-07-2004 20:22
dyn. menü + templatesystem = probleme active link soundstorm PHP Developer Forum 0 10-12-2003 19:34

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:35 Uhr.