cisco: Problem mit Zusammenbau eines Strings

Hallo,
meine Navigation steht in einem Array, das dyn, zusammengebaut wird. Ich habe 2 style definiert, eins für Hauptpunkte, eins fürs Untermenü.

So sieht das Ganze in PHP aus

$naviString = '<div id="main_navi">';

foreach($navi){

$naviString.="<a href=".$navi[2]."index.php>".$navi[1]."</a><br>";

if($pageName==$navi[0]){
   // $naviString.="<div id="sub_navi">";
   foreach($subNavigation[$pageName] AS $subnavi){
      $naviString.="<a href="".$subnavi[0].".php">".$subnavi[1]."</a><br>";
    }
   //$naviString.="</div>";
   }

}

$naviString .= '</div>';

echo $naviString;

Es funktioniert techn. einwandfrei, also das Menü wird entspr. der HAupt- und Untermenüpunkte zusammengebaut. Alle Hauptpunkte stehen untereinander, sollte es einen oder mehrer Untermenüpunkte geben, werden die entspr. eingefügt.

ABER: Ich krieg es nicht hin, den Text der Untermenüpunkte anderes zu formatieren (kleiner Schrift, eingerückt). Die beiden entspr. div-Zeilen hab ich oben auskommentiert. so wird es zwar richtig zusammengebaut, allerdings alles gleih formatiert (logisch). Nehm ich die Zeilen wieder rein, wird das Untermenü GAR NICHT angezeigt.

Jemand nen Tipp, woran das liegen könnte?

1000dank schonmal & gruß
cisco

  1. Grüße,

    $naviString.="<a href="".$subnavi[0].".php">".$subnavi[1]."</a><br>";

    um class="unternavi" ergänzen?

    $naviString.="<a href="".$subnavi[0].".php" class="unternavi">".$subnavi[1]."</a><br>";

    dazu iwo im css
    .unernavi {
    blab-ala
    }
    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
    Boccaccio
    1. Grüße,

      $naviString.="<a href="".$subnavi[0].".php">".$subnavi[1]."</a><br>";

      um class="unternavi" ergänzen?

      $naviString.="<a href="".$subnavi[0].".php" class="unternavi">".$subnavi[1]."</a><br>";

      dazu iwo im css
      .unernavi {
      blab-ala
      }
      MFG
      bleicher

      Hi
      guter Tipp, danke. Aber es geht leider trotzdem nicht :-/ Eine .sub_navi hab ich natürlich angelegt. Bzw. ich hab e eine #sub_navi!!

      Ist das ein Unterschied ob . oder #?

      danke&ciao

      1. geht foreach() auch ohne 'as'?
        Was hätte das für einen Zweck?
        Hab ich da 'was übersehen?

        Also das wäre mir neu und es funktioniert auch nicht.

        PHP Handbuch:

        foreach (array_expression as $value) Anweisung
        foreach (array_expression as $key => $value) Anweisung

        Testcode

        foreach ($a)
          echo 'Hallo;

        Fehlermeldung

        ( ! ) Parse error: syntax error, unexpected ')'

        PHP Version 5.2.5

        1. Hello,

          geht foreach() auch ohne 'as'?
          Was hätte das für einen Zweck?
          Hab ich da 'was übersehen?

          Also das wäre mir neu und es funktioniert auch nicht.

          PHP Handbuch:

          foreach (array_expression as $value) Anweisung
          foreach (array_expression as $key => $value) Anweisung

          Testcode

          foreach ($a)
            echo 'Hallo;

          Fehlermeldung

          ( ! ) Parse error: syntax error, unexpected ')'

          PHP Version 5.2.5

          Das gäbe ja auch ein Scope-Problem. So zumindest in meiner Vorstellung.
          Aber PHP hat mich da schon manches Mal (negativ) mit seiner zu großen Toleranz überrascht...

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Das geht auch nicht mit PHP 4.3.1, 4.4.7 und PHP 6 svn. mit anderen Worten es ging nie.

            1. Hello,

              Das geht auch nicht mit PHP 4.3.1, 4.4.7 und PHP 6 svn. mit anderen Worten es ging nie.

              Es wirft doch aber einen Parse Error. Den kann cisco doch wohl kaum ausgeschaltet haben.

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Es wirft doch aber einen Parse Error. Den kann cisco doch wohl kaum ausgeschaltet haben.

                Ich verwende

                error_reporting  =  E_ALL & ~E_NOTICE

                Wenn man

                error_reporting  =  E_NOTICE

                einstellt ergibt es einen weißen Schirm ohne Ausgabe.

                Nun gut - wie dem auch sei - die erste Schleife kann so nicht funktionieren. Der Syntax ist seit 4.3.1 (da habe ich noch die Handbücher) bis heute unverändert.

                1. Hello,

                  Es wirft doch aber einen Parse Error. Den kann cisco doch wohl kaum ausgeschaltet haben.

                  Ich verwende

                  error_reporting  =  E_ALL & ~E_NOTICE

                  Wenn man

                  error_reporting  =  E_NOTICE

                  einstellt ergibt es einen weißen Schirm ohne Ausgabe.

                  Klar, wenn man so entwickelt "Mein Programm ist OK, wenn es keine Fehlermeldungen mehr produziert", diesen Zustand aber durch das Ausschalten derselbigen erzwingt, ist es natürlich logisch.

                  Aber das will ich nicht glauben, dass ein Entwickler sowas machen könnte ;-))

                  Harzliche Grüße vom Berg
                  http://bergpost.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  1. 00> Aber das will ich nicht glauben, dass ein Entwickler sowas machen könnte ;-))

                    Das würde ganz sicher keiner machen.

      2. Grüße,

        guter Tipp, danke. Aber es geht leider trotzdem nicht :-/

        überprüfe noch mal - das MUSS gehen - wie sieht HTML-ausgabe aus?

        Ist das ein Unterschied ob . oder #?

        natürlich -

        ist ID - einmaliges element (sonst wirds invalid)

        . ist class - die kann mehrmals auftreten

        MFG
        bleicher

        --
        __________________________-
        Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
        Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
        Boccaccio
        1. Grüße,

          guter Tipp, danke. Aber es geht leider trotzdem nicht :-/

          überprüfe noch mal - das MUSS gehen - wie sieht HTML-ausgabe aus?

          Hallo
          ja, es geht doch :) Sorry. Irgendwie hats meien CSS zerfetzt, d.h. das Submenü wurde zwar angezeigt, aber in weiß (und somit "unsichtbar") und an völlig falscher position.
          Aber jetzt hab ichs wieder gefunden :)

          Vielen dank,
          cisco

  2. Hello,

    foreach($navi)  ## as ???
      {

    $naviString.="<a href=".$navi[2]."index.php>".$navi[1]."</a><br>";

    if($pageName==$navi[0])

    {

    // $naviString.="<div id="sub_navi">";
        foreach($subNavigation[$pageName] AS $subnavi)

    {

    $naviString.="<a href="".$subnavi[0].".php">".$subnavi[1]."</a><br>";
        }
       //$naviString.="</div>";
       }
    }

    geht foreach() auch ohne 'as'?
    Was hätte das für einen Zweck?
    Hab ich da 'was übersehen?

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. hi

      geht foreach() auch ohne 'as'?
      Was hätte das für einen Zweck?
      Hab ich da 'was übersehen?

      ja, das geht auch. Es erleichter nur das Schreiben, weil man statt "$subNavigation[$pageName]" einfach nur noch "$subnavi" schreiben kann :)

      gruß

  3. echo $begrüßung;

    meine Navigation steht in einem Array, das dyn, zusammengebaut wird. Ich habe 2 style definiert, eins für Hauptpunkte, eins fürs Untermenü.
    So sieht das Ganze in PHP aus

    Das ist schon der zweite Schritt. Bau bitte zunächst das Menü (oder ein beispielhaftes) mit HTML-Code auf. Dann kannst du damit testen, wie sich das CSS darauf auswirkt. Im Allgemeinen muss man keine DIV-Suppe bauen, wenn man eine Liste erzeugen will. Dafür gibt es bereits Elemente, wie <ul> nebst <li>. Solche Listen lassen sich auch schachteln.

    foreach($navi){

    [...]

    // $naviString.="<div id="sub_navi">";

    Das (abgesehen vom foreach-Fehler) erzeugt in deinem Dokument am Ende mehrmals die gleiche ID. IDs müssen dokumentweit eindeutig und einmalig sein. Wenn du mehrere Elemente gleich klassifizieren willst, nimm eine Klasse.

    ABER: Ich krieg es nicht hin, den Text der Untermenüpunkte anderes zu formatieren (kleiner Schrift, eingerückt).

    Ein Untermenüpunkt zeichnet sich dadurch aus, dass er entweder einer bestimmten Klasse angehört oder in einer bestimmten Struktur steckt. "ul li" ist ein beliebiger Menüpunkt. "#main_navi li" ist ein Menüpunkt des Hauptmenüs (Das gibt es nur einmal, deswegen kann es auch eine ID bekommen.) "#main_navi li ul" ist ein Untermenü und "#main_navi li li" oder "#main_navi ul li" ist ein Untermenüpunkt. "ul ul li" bzw. "ul li li" geht auch, wenn die ganze Struktur nicht in weiteren ULs  steckt und solch ein Gebilde nicht weiter auf der Seite vorkommt. Da man aber nicht weiß, ob nicht in Zukunft weitere Listengebilde im Projekt hinzukommen, wäre eine der Varianten mit der #main_navi meines Erachtens die sinnvollere.

    Wenn du nun dein CSS-Problem erfolgreich geklärt hast, kannst du weitermachen und den PHP-Code schreiben, der dir das HTML-Gebilde zusammenbaut. Da du dir zunächst ein Beispiel gebaut hast, kannst du nun das Ergebnis des PHP-Codes mit dem funktionierenden Beispiel vergleichen, wenn der mit PHP zusammengebaute HTML-Code nicht so will wie er soll.

    echo "$verabschiedung $name";