Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Navigation =>Inhalt wird nicht angezeigt!

Einklappen

Neue Werbung 2019

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

  • PHP-Navigation =>Inhalt wird nicht angezeigt!

    Hallo ich habe ein Problem zu meiner Webseite. Undzwar habe ich eine XML Datei in der meine Navigation definiert ist. Desweiteren habe ich eine PHP-Datei Namens databaseHandler in der die einzelnen Funktionen der Website sind z.B readContent für den Inhalt und readNavigation für die Navigation. In einer weiteren PHP-Datei frontendHandler werden die Funktionen aus dem databaseHandler aufgerufen und am Ende in der Index.php eingebunden. Ich wollte nun eine Unternavigationsebene erstellen. Das hat auch geklappt nur das Problem, bei dem ich nicht weiterkomme ist, das der Inhalt der Unternavigation nicht angezeigt wird. Sondern nur der Fehler:

    Code:
    Notice: Trying to get property of non-object in C:\xampp\htdocs\MeineTest\databaseHandler.php on line 48.
    Die Zeile sieht so aus :

    PHP-Code:
    function readContent($main,$submain){

    global 
    $xml;
    return 
    $xml->page[(int) $main][(int) $submain]->content//Zeile 48

    $main ist für die Hauptnavigation und $submain für die Unternavigation. Ich weiß nicht ob die Infos reichen und ob ihr mehr Code braucht. Sagt bescheid. Hoffe ihr könnt mir helfen da ich schon sehr lange am Problem verzweifle. Hoffe dass das der richtige Bereich für das Thema ist.

  • #2
    Bitte Code-Tags nutzen.

    global ist böse. Mach das weg und übergib $xml als Parameter in die Funktion. Mache mal ein var_dump() auf das was du zurückgeben willst. Das ist nicht was du denkst, was ja auch die Fehlermeldung sagt.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Wenn ich $xml als Parameter übergebe ändert sich nix. Wenn ich die Ausgabe in var_dump() mache kommt die selbe Fehlermeldung wie oben genannt nur das hinten dran noch NULL steht. Achso was ich noch vergessen hatte zu erwähnen ist das in der Hauptnavigation zwar der Inhaltstext angezeigt wird aber über dem Text trotzdem noch eine Fehlermeldung ist die besagt: Warning: readContent(): Cannot add element page number 2 when only 0 such elements exist in C:\xampp\htdocs\MeineTest\databaseHandler.php on line 48 und mit var_dump steht da : object(SimpleXMLElement)#4 (1) { [0]=> object(SimpleXMLElement)#5 (0) { } }

      Kommentar


      • #4
        Warning: readContent(): Cannot add element page number 2 when only 0 such elements exist
        Das ist ein relevantes "Detail" ... beheb das mal.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von Azorc Beitrag anzeigen
          Wenn ich $xml als Parameter übergebe ändert sich nix. Wenn ich die Ausgabe in var_dump() mache kommt die selbe Fehlermeldung wie oben genannt nur das hinten dran noch NULL steht.
          Naja, dann solltest du nicht NULL als Parameter übergeben. Der Fehler passiert also nicht an der Stelle, die du uns zeigst.

          Kommentar


          • #6
            vermutlich hast du kein durchgehendes error-reporting an ... woher stammt dein $xml ?

            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

            Kommentar


            • #7
              Im $xml ist meine XML Datei gespeichert mit simplexml_load_file()

              Kommentar


              • #8
                Zitat von Azorc Beitrag anzeigen
                Im $xml ist meine XML Datei gespeichert mit simplexml_load_file()
                Offensichtlich nicht.

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen

                  Offensichtlich nicht.
                  Sonst würde ja die ganze Webseite nicht funktionieren geschweige den die Navigation angezeigt werden.


                  Ich habe die readContent Funktion mal abgeändert zu :

                  PHP-Code:
                  function readContent($main,$submain){

                  global 
                  $xml;
                  if (
                  $xml -> page){
                  return 
                  $xml->page[(int) $main]->content//Line 50
                  }else if ($xml->page2){
                  return 
                  $xml->page2[(int) $submain]->content;
                  }

                  Dadurch ist die Fehlermeldung die in der Hautnavigation über dem Inhalt stand: Cannot add element page number 2 when only 0 such elements exist weg.
                  Nur noch der Fehler von vorher bleibt in der Unternavigation :Notice: Trying to get property of non-object in C:\xampp\htdocs\MeineTest\databaseHandler.php on line 50.

                  Kommentar


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Bitte Code-Tags nutzen.

                    global ist böse. Mach das weg und übergib $xml als Parameter in die Funktion. ...

                    Das ist nicht was du denkst, was ja auch die Fehlermeldung sagt.
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Sorry hats vergessen. Aber wie gesagt $xml als Parameter ändert nix.

                      Kommentar


                      • #12
                        Das ist schon klar, global ist schlechter Stil, das macht man nicht.. pfui.

                        Der Fehler ist das du auf etwas zugreifst von dem du denktst das es etwas ist/enthält was dem nicht so ist. Dh schau genau was den $xml ist/enthält und dann wirst du auch sehen warum es nicht funktioniert auf etwas zuzugreifen was nicht vorhanden ist.

                        Das sagt dir auch die Notice. Du willst ein Property (= eine Objekt-Eigenschaft) von etwas holen, das gar kein Objekt ist (die Meldung auf Deutsch).
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Achso ok.

                          Also mit
                          PHP-Code:
                          $xml simplexml_load_file('Datei.xml'
                          speichere ich ja den gesamten Inhalt der XML-Datei in der Variable. Mit
                          PHP-Code:
                          return $xml->page[(int) $main]->content
                          gibt er dann den Inhalt zurück die in den ganzen Page-Tags gespeichert sind(für jede Navigationspunkt ein Page). Das klappt ja auch. Und mit
                          PHP-Code:
                          return $xml->page2[(int) $submain]->content
                          soll er dann das gleiche machen nur mit den page2-Tags die für die Unternavigationspunkte da sind. Durch das
                          PHP-Code:
                          $xml simplexml_load_file('Datei.xml'
                          ist ja alles in der Variable also müsste er ja auf die Page2-Tags bzw den Content davon zugreifen können, aber warum er das dann doch nicht kann verstehe ich nicht.

                          Kommentar


                          • #14
                            Ehmmm... wieso ist eine XML-Datei mit ".php" benannt?

                            Kommentar


                            • #15
                              Vertippt. Im Code steht da ".xml"

                              Kommentar

                              Lädt...
                              X