+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 24

Thema: <ul> beim ersten Durchlauf der Schlaufe mit Attributen versehen

  1. #1
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287

    Thumbs up [PROBLEM GELÖST] <ul> beim ersten Durchlauf der Schlaufe mit Attributen versehen

    Hallo Leute,

    meine wunderbar funktionierende Funktion sieht wie folgt aus:
    PHP-Code:
    function build_dhtmlmenu($start=0) {

        
    $s '';
        foreach(
    $GLOBALS['content']['struct'] as $key => $value) {

            if (
    $start == $GLOBALS['content']['struct'][$key]['acat_struct'] && 
                !
    $GLOBALS['content']['struct'][$key]['acat_hidden'] && $key)
            {
                
    $s .= '<li>';
                            
                if(!
    $GLOBALS['content']['struct'][$key]["acat_redirect"]) {
                    
    $s .= '<a href="index.php?';
                    if(
    $GLOBALS['content']['struct'][$key]['acat_alias']) {
                        
    $s .= $GLOBALS['content']['struct'][$key]['acat_alias'];
                    } else {
                        
    $s .= 'id='.$key.',0,0,1,0,0';
                    }
                } else {
                    
    $redirect get_redirect_link($GLOBALS['content']['struct'][$key]["acat_redirect"], ' ''');
                    
    $s .= '<a href="'.$redirect['link'].'"'.$redirect['target'];
                }
                
                
    $s .= '">';
                
    $s .= html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']);
                
    $s .= '</a>';
                
                
    $s .= build_dhtmlmenu($key);
                
                
    $s .= "</li>\n";
            }
        }

        if(
    $s$s "\n<ul>\n".$s.'</ul>';
        
        return 
    $s;

    Mein Problem liegt nun darin, dass mir diese Funktion eine "nested-list" erzeugt. Ich möchte nun aber bei dem eröffnenden <ul> Tag noch attribute einfügen (hardcoded). also ein Beispiel:

    Meine bisher generierte Liste sieht so aus:
    HTML-Code:
    <ul>
    <li>Inhalt</li>
    <li>Inhalt
    <ul><li>Inhalt</li>
    <li>Inhalt</li></ul>
    </li></ul>
    Ich möchte aber gerne, dass sie wie folgt aussieht:
    HTML-Code:
    <ul id="meineid" class="meineklasse">
    <li>Inhalt</li>
    <li>Inhalt
    <ul><li>Inhalt</li>
    <li>Inhalt</li></ul>
    </li></ul>
    Wäre sehr froh, wenn mir jemand dabei helfen könnte.

    Vielen Dank im vorraus.
    Geändert von brans (30.08.2004 um 00:41 Uhr)

  2. #2
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    PHP-Code:
    function build_dhtmlmenu($start=0) {

        
    $s '';
        
    $i=1
        foreach(
    $GLOBALS['content']['struct'] as $key => $value) {
    $i++;
            if (
    $start == $GLOBALS['content']['struct'][$key]['acat_struct'] &&
                !
    $GLOBALS['content']['struct'][$key]['acat_hidden'] && $key)
            {
                
    $s .= '<li>';
                            
                if(!
    $GLOBALS['content']['struct'][$key]["acat_redirect"]) {
                    
    $s .= '<a href="index.php?';
                    if(
    $GLOBALS['content']['struct'][$key]['acat_alias']) {
                        
    $s .= $GLOBALS['content']['struct'][$key]['acat_alias'];
                    } else {
                        
    $s .= 'id='.$key.',0,0,1,0,0';
                    }
                } else {
                    
    $redirect get_redirect_link($GLOBALS['content']['struct'][$key]["acat_redirect"], ' ''');
                    
    $s .= '<a href="'.$redirect['link'].'"'.$redirect['target'];
                }
                
                
    $s .= '">';
                
    $s .= html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']);
                
    $s .= '</a>';
                
                
    $s .= build_dhtmlmenu($key);
                
                
    $s .= "</li>\n";
            }
        }
    if  (
    $i%2==0$attribute="id=\"meineid\" class=\"meineklasse\"";
        if(
    $s$s "\n<ul $attribute>\n".$s.'</ul>';
        
        return 
    $s;


  3. #3
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    ne, kommt genau das gleiche raus, wie bei mir:
    meine Liste sieht jetzt so aus:
    HTML-Code:
    <ul id="meineid" class="meineklasse">
    <li></li>
    <li><ul id="meineid" class="meineklasse"></ul></li>
    </ul>
    ich möchte die Klasse aber nur beim ersten <ul> einfügen, nicht bei allen. ?!?

    kann es sein, dass das Problem auftritt, weil ich das script von extern include ?
    Geändert von brans (26.08.2004 um 22:17 Uhr)

  4. #4
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    MMmh. *Überleg* Da fällt mir gerade ein, daß die eingefügte Abfrage eindeutig sein muss.
    besser wäre
    am anfang zu setzen:

    $i=-1;

    ind dann:

    if($i==0)


    damit das ganze wirklich nur beim ersten Durchlauf passiert..

    und dann zur sicherheit ganz ans Ende noch ein

    unset($attribute);

    -Adromir, nach 1L Weizen nicht genug nachgedacht habend..

  5. #5
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    hmm... so wird gar kein $attribut mehr gesetzt, in keinem Fall, obwohls mir auch sehr logisch erscheint

    PHP-Code:
    function build_dhtmlmenu($start=0) {

        
    $s '';
        
    $i=-1;
        foreach(
    $GLOBALS['content']['struct'] as $key => $value) {
        
    $i++;
            if (
    $start == $GLOBALS['content']['struct'][$key]['acat_struct'] &&
                !
    $GLOBALS['content']['struct'][$key]['acat_hidden'] && $key)
            {
                
    $s .= '<li>';
                            
                if(!
    $GLOBALS['content']['struct'][$key]["acat_redirect"]) {
                    
    $s .= '<a href="index.php?';
                    if(
    $GLOBALS['content']['struct'][$key]['acat_alias']) {
                        
    $s .= $GLOBALS['content']['struct'][$key]['acat_alias'];
                    } else {
                        
    $s .= 'id='.$key.',0,0,1,0,0';
                    }
                } else {
                    
    $redirect get_redirect_link($GLOBALS['content']['struct'][$key]["acat_redirect"], ' ''');
                    
    $s .= '<a href="'.$redirect['link'].'"'.$redirect['target'];
                }
                
                
    $s .= '">';
                
    $s .= html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']);
                
    $s .= '</a>';
                
                
    $s .= build_dhtmlmenu($key);
                
                
    $s .= "</li>\n";
            }
        }
        if(
    $i==0$attribute="id=\"udm\" class=\"udm\"";
        if(
    $s$s "\n<ul $attribute>\n".$s.'</ul>';
        return 
    $s;
        unset(
    $attribute);


  6. #6
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Dann lass mal das Unset weg und erweitere die if-Abfrage um

    else $attribute="";

    bzw. wenn es nicht funzt, lass esauch weg..

  7. #7
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    gleicher effekt wie oben, es passiert in beiden Fällen gar nichts, also es wird nie ein $attribute gesetzt

    PHP-Code:
    function build_dhtmlmenu($start=0) {

        
    $s '';
        
    $i=-1;
        foreach(
    $GLOBALS['content']['struct'] as $key => $value) {
        
    $i++;
            if (
    $start == $GLOBALS['content']['struct'][$key]['acat_struct'] &&
                !
    $GLOBALS['content']['struct'][$key]['acat_hidden'] && $key)
            {
                
    $s .= '<li>';
                            
                if(!
    $GLOBALS['content']['struct'][$key]["acat_redirect"]) {
                    
    $s .= '<a href="index.php?';
                    if(
    $GLOBALS['content']['struct'][$key]['acat_alias']) {
                        
    $s .= $GLOBALS['content']['struct'][$key]['acat_alias'];
                    } else {
                        
    $s .= 'id='.$key.',0,0,1,0,0';
                    }
                } else {
                    
    $redirect get_redirect_link($GLOBALS['content']['struct'][$key]["acat_redirect"], ' ''');
                    
    $s .= '<a href="'.$redirect['link'].'"'.$redirect['target'];
                }
                
                
    $s .= '">';
                
    $s .= html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']);
                
    $s .= '</a>';
                
                
    $s .= build_dhtmlmenu($key);
                
                
    $s .= "</li>\n";
            }
        }
        if(
    $i==0) {
            
    $attribute="id=\"udm\" class=\"udm\"";
        } 
    /* else {
            $attribute=""; 
        } */
        
    if($s$s "\n<ul ".$attribute.">\n".$s.'</ul>';
        return 
    $s;

    wenn ich die If-Schlaufe unten anpasse:
    PHP-Code:
        if($i==0) {
            
    $s "\n<ul id=\"udm\" class=\"udm\">\n".$s.'</ul>';
        } else {
        
    $s "\n<ul>\n".$s.'</ul>';
        } 
    passiert auch nix irgendwie scheint der das i nicht richtig zu zählen... muss das mal überprüfen..
    Geändert von brans (26.08.2004 um 22:32 Uhr)

  8. #8
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Dann echo das $i mal bei jedem Schleifenaufruf..

  9. #9
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    also da mit dem $i++ kommen ganz komische Werte für $i bei raus:

    0
    1
    2
    -6
    -5
    0

    er springt immer wieder zurück. Habe nun von ausserhalb eine $GLOBALS['dhtmlcount'] Variable eingeführt und diese zählt er anscheinend richtig hoch, nur funktioniert die if-abfrage irgendwie nicht:

    ich habe entweder alle <ul> tags mit einerm Attribut versehen oder ich habe den zweiten mit einem Attribut versehen, aber keinesfalls kann ich den ersten mit einem attribut versehen komische sache mann

  10. #10
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Mach mal aus dem $i++; ein $i=$i+1;

  11. #11
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    hatte ich bereits probiert... immer der gleiche Effekt, ich habe entweder alle ul's, gar keins oder das jeweils 2te, dass generiert wird..., aber niemals das erste...
    PHP-Code:
    function build_dhtmlmenu($start=0) {
        
    $s '';
        foreach(
    $GLOBALS['content']['struct'] as $key => $value) {
            if (
    $start == $GLOBALS['content']['struct'][$key]['acat_struct'] &&
                !
    $GLOBALS['content']['struct'][$key]['acat_hidden'] && $key)
            {
                
    $s .= '<li>';
                            
                if(!
    $GLOBALS['content']['struct'][$key]["acat_redirect"]) {
                    
    $s .= '<a href="index.php?';
                    if(
    $GLOBALS['content']['struct'][$key]['acat_alias']) {
                        
    $s .= $GLOBALS['content']['struct'][$key]['acat_alias'];
                    } else {
                        
    $s .= 'id='.$key.',0,0,1,0,0';
                    }
                } else {
                    
    $redirect get_redirect_link($GLOBALS['content']['struct'][$key]["acat_redirect"], ' ''');
                    
    $s .= '<a href="'.$redirect['link'].'"'.$redirect['target'];
                }
                
                
    $s .= '">';
                
    $s .= html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']);
                
    $s .= '</a>';
                
                
    $s .= build_dhtmlmenu($key);
                
                
    $s .= "</li>\n";
            }
        }
        if(
    $s$s "\n<ul id=\"udm\" class=\"udm\">\n".$s.'</ul>';
        
        return 
    $s;
    }
    echo 
    build_dhtmlmenu(0); 
    so werden natürlich alle ul's mit einem Attribut versehen.
    ich habe hier mal meinen code gepostet, um genau zu zeigen, wie ich das script anwende...

    P.S.: Habe dir mal einen Punkt gegeben, dafür, dass du dir anscheinend Mühe gibst ;-)
    Geändert von brans (26.08.2004 um 23:36 Uhr)

  12. #12
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Danke für den Punkt.
    Ich weiß nicht, woran es liegen könnte.
    Man könnte mal versuchen, die Foreach-Schleife mit einer einfachen FOR-Schleife zu machen. Da müsste jedenfalls richtig zählen..

    Irgendwie bin ich am Ende mit meinem Latein..

  13. #13
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Oder mal so Versuchen:
    In meinem Beispiel $i=0 setzen

    und dann if($i==1)

  14. #14
    TP-Member renkert.net macht alles soweit korrekt
    Registriert seit
    Aug 2004
    Ort
    Stuttgart
    Beiträge
    67
    Mach es mal so, wie es Adromir vorgeschlagen hat, nimm die foreach raus und setz ne for Schleife mit einer counter id ein. Setz den counter vor dem schleifendurchlauf auf 0 ($counter = 0 und lass ihn dann beim durchlaufen jeweils beim ul Tag erhöhen ($counter++). Jetzt greifst Du die 0 ab, setzt die Attribute. Wenn der counter >0 ist, setzt Du keine Attribute.....

    Sieht so aus als spielst Du mit phpwcms rum.....machts Spaß ?

  15. #15
    TP-Senior brans macht sich hier sehr viel Mühe Avatar von brans
    Registriert seit
    Dec 2003
    Ort
    Zürich
    Beiträge
    287
    hehe also ich werde das mal versuchen. Ja ich spiele mit PHPWCMS rum und es macht höllisch spass, habe noch nie in meinem Leben ein so komplettes System gesehn, was meinen Ansprüchen so genügt :-) Das einzige was mir eben fehlt ist: 100% barrierefreies Design (kommt im nächsten release) und natürlich ein dhtml-menu, für gewisse Kunden. Das versuche ich grad zu basteln aber es wiederspricht all meiner Logik, dass es nicht funktioniert ;-)

    werde nochmal hier schreiben, falls es funktioniert hat.

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Ähnliche Themen

  1. 100 Bilder in einem Schritt verkleinern??
    Von question im Forum Photoshop
    Antworten: 13
    Letzter Beitrag: 13.02.2005, 14:51
  2. Probleme mit der Navigation
    Von Canada im Forum Flash & Multimedia
    Antworten: 1
    Letzter Beitrag: 19.08.2004, 13:26
  3. Steuerlich absetzen - richtiger Zeitpunkt? Wann?
    Von screamfine im Forum Steuer & Buchführung
    Antworten: 27
    Letzter Beitrag: 01.07.2004, 19:09
  4. Macromedia Cebit 2004
    Von Madokan im Forum Flash & Multimedia
    Antworten: 0
    Letzter Beitrag: 18.02.2004, 20:14
  5. Antworten: 4
    Letzter Beitrag: 07.06.2003, 09:28

Aktive Benutzer

Aktive Benutzer

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

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51