Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Elemente ein und ausblenden

Einklappen

Neue Werbung 2019

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

  • PHP Elemente ein und ausblenden

    Hallo

    Folgendes: Ich möchte Inhalte per JS anzeigen und ausblenden können, wenn ich auf einen Button klicke.

    Der unten angezeigte Code funktioniert prima mit HTML Elemten, aber wie bekomme ich es hin einen php include einzubauen? wenn ich es so mache wie unten blendet er es zwar aus, aber blendet es nicht wieder ein wenn ich auf den button klicke.

    PHP-Code:
    <?php

    echo '<style type="text/css">
    #ersterContainer { display:none; }
    </style>

    <script type="text/javascript">
    function showhide(divid) {
    obj = document.getElementById(divid);
    obj.style.display = obj.style.display == \'block\' ? \'none\' : \'block\';
    }
    </script>'
    ;

    echo 
    '<a href="#" onclick="showhide(\'ersterContainer\');return false;" onclick="showhide(\'zweiterContainer\');return false;">Anzeigen/Verstecken</a>
            <div id="ersterContainer">'
    .include("/http/htdocs/Webseite/php/menue.php").'</div>'?>
    In der includierten PHP-Datei steht natürlich z.B echo '<br>'; ich denk daran liegt es, aber wie kriege ich sowas nun gelöst?

    Kurz gesagt: Ich möchte mein Menü ein und ausblenden können

    Bitte um Rat und Hilfe,

    Danke im Voraus


  • #2
    Warum packst du den ganzen reinen HTML/JS Code (der im Client läuft) in PHP-Code? Das ist überflüssig und fehleranfällig (escaping etc..) und "belastet" den Parser unnötig.

    PHP-Code:
    <style type="text/css">
      #ersterContainer { display:none; }
    </style>

    <script type="text/javascript">
      function showhide(divid) {
        obj = document.getElementById(divid);
        obj.style.display = obj.style.display == 'block' ? 'none' : 'block';
      }
    </script>';

    <a href="#" onclick="showhide('ersterContainer');return false;" onclick="showhide('zweiterContainer');return false;">Anzeigen/Verstecken</a>
    <div id="ersterContainer">'
      <?php include("/http/htdocs/Webseite/php/menue.php"); ?>
    </div>
    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
      Danke für den Hinweis

      Aber mein Problem ist dadurch trotzdem nicht gelöst

      Kommentar


      • #4
        Aha, und was genau funktioniert nicht? Fehlermeldung? error_reporting aktiviert? Schon mal den HTML-QUelltext anzeigen lassen den der Browser bekommt, ob der korrekt ist etc.. etc..
        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 hausl Beitrag anzeigen
          Aha, und was genau funktioniert nicht? Fehlermeldung? error_reporting aktiviert? Schon mal den HTML-QUelltext anzeigen lassen den der Browser bekommt, ob der korrekt ist etc.. etc..
          Keine Fehlermeldung in den logs

          Im Quelltext werden die Menü-Punkte angezeigt! Aber wieso lässt es sich nicht ausblenden bzw. einblenden wenn ich drauf klicke?


          Quellcode:
          PHP-Code:
          <style type="text/css">
            
          #ersterContainer { display:none; }
          </style>

          <
          script type="text/javascript">
            function 
          showhide(divid) {
              
          obj document.getElementById(divid);
              
          obj.style.display obj.style.display == 'block' 'none' 'block';
            }
          </script>

          <a href="#" onclick="showhide('ersterContainer');return false;" onclick="showhide('zweiterContainer');return false;">Anzeigen/Verstecken</a>
            <div id="ersterContainer"><tr><td class="left"><div class="main"><div id="nav"><ul id="navwidth"><li>
          <a class="nav" href="/Webseite/index.html">Homepage
          </a>
          </li>
          <li>
          <a class="nav" href="/Webseite/php/admin.php">CMS
          </a>
          </li></li></ul></div></td>  </div> 

          Kommentar


          • #6
            Vermutlich falsches JS, oder irgend ein Elementname falsch etc..
            -> Meldungen in Fehlerkonsole im Browser
            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


            • #7
              Zitat von hausl Beitrag anzeigen
              Vermutlich falsches JS, oder irgend ein Elementname falsch etc..
              -> Meldungen in Fehlerkonsole im Browser
              wenn ich statt dem include ein echo $test sage funktioniert es! es liegt also an dem include irgendwie

              in der include datei sind auch if anweisungen drin und kommentare! hat das auswirkungen?

              Kommentar


              • #8
                Ja und ist das HTML (inkl. JS) das der Include erzeugt auch valide/korrekt? Lass den gesamten HTML Quelltext der erzeugt wird (mit der Variante mit dem Include) mal prüfen.

                Hier: http://validator.w3.org/ oder eines der gängigen Browser Plugins.

                in der include datei sind auch if anweisungen drin und kommentare! hat das auswirkungen?
                Nochmal: HTML und Javascript laufen im Browser, da ist PHP (Server) schon fertig. Dh der Browser bekommt nie PHP Code zu Gesicht, der Browser bekommt nur das vom Webserver (PHP) feritg erzeugtes HTML und Javascript und das führt er dann aus.

                http://php-de.github.io/jumpto/was-ist-php/

                LG
                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


                • #9
                  Zitat von hausl Beitrag anzeigen
                  Ja und ist das HTML (inkl. JS) das der Include erzeugt auch valide/korrekt? Lass den gesamten HTML Quelltext der erzeugt wird (mit der Variante mit dem Include) mal prüfen.

                  Hier: http://validator.w3.org/ oder eines der gängigen Browser Plugins.



                  Nochmal: HTML und Javascript laufen im Browser, da ist PHP schon fertig. Dh der Browser bekommt nie PHP Code zu Gesicht, der Browser bekommt nur das vom Webserver (PHP) feritg erzeugtes HTML und Javascript und das führt er dann aus.

                  http://php-de.github.io/jumpto/was-ist-php/

                  LG
                  Der einzige Fehler: No DOCTYPE found

                  und der ist in dieser Datei nicht nötig

                  - Ich weiß das php serverseitig und js/html client seitig funktioniert!!

                  nur hatte ich jetzt keine lust jedesmal php zu öffnen und zu schließen bei jedem kleinen hml code

                  Kommentar


                  • #10
                    Also wenn ich mir deinen Schnipsel oben #5 rauskopiere es um html, head und body ergänze dann funktioniert es. Da muss nochwas im Zusammenhang mit dem restlichen Dokument sein.

                    Ich glaube nicht das dein HTML insgesamt korrekt ist, das zB kann fast nicht korrekt sein ein öffnendes div und danach ein tr td. etc... wo ist table? Vor dem div? etc...

                    HTML-Code:
                    <div id="ersterContainer"><tr><td class="left">
                    Egal, wie gesagt, der Schnipsel hier funktioniert im IE und FF:

                    HTML-Code:
                    <html>
                    
                    <head>
                    <style type="text/css">
                      #ersterContainer { display:none; }
                    </style>
                    
                    <script type="text/javascript">
                      function showhide(divid) {
                        obj = document.getElementById(divid);
                        obj.style.display = obj.style.display == 'block' ? 'none' : 'block';
                      }
                    </script>
                    </head>
                    
                    <body>
                    <a href="#" onclick="showhide('ersterContainer');return false;" onclick="showhide('zweiterContainer');return false;">Anzeigen/Verstecken</a>
                      <div id="ersterContainer"><tr><td class="left"><div class="main"><div id="nav"><ul id="navwidth"><li>
                    <a class="nav" href="/Webseite/index.html">Homepage
                    </a>
                    </li>
                    <li>
                    <a class="nav" href="/Webseite/php/admin.php">CMS
                    </a>
                    </li></li></ul></div></td>  </div>  
                    
                    </body>
                    </html>
                    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
                      tatsächlich! ich werde das ganze mal stück für stück abbauen um zu sehen wo genau der fehler liegt!

                      Kommentar


                      • #12
                        fehler gefunden:

                        table fängt vor dem div an.

                        ums verständlicher zu erklären: table fängt in header.php und hört in der footer.php auf. das hat den vorteil, das man dazwischen beliebig viele spalten erstellen kann (module als include rein hängen).


                        wie krieg ich es gelöst bzw. warum hat es was mit table zutun, nur weil es vorher anfängt? :/

                        Kommentar


                        • #13
                          Das war es auch was ich hier schon angedeutet habe...

                          Ich glaube nicht das dein HTML insgesamt korrekt ist, das zB kann fast nicht korrekt sein ein öffnendes div und danach ein tr td. etc... wo ist table? Vor dem div? etc...
                          HTML-Code:
                          <div id="ersterContainer"><tr><td class="left">
                          ums verständlicher zu erklären: table fängt in header.php und hört in der footer.php auf. das hat den vorteil, das man dazwischen beliebig viele spalten erstellen kann (module als include rein hängen).
                          Das wird nichts.. du weißt das du in allen anderen Zeilen dann einen colspan machen musst mit der korrekten Anzahl an Spalten, damit das funktioniert?

                          Lass die Tabelle weg, verwende divs stattdessen, die kann man auch "nebeneinander" stellen.
                          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


                          • #14
                            Wenn du ein Layout mit Tabellen umsetzt, dann brauchst du keinen DIV Container, wenn du ein Layout mit DIVs umsetzt dann brauchst du kein Spalte mehr.

                            Die Kombination
                            Code:
                            <div id="Irgendwas"><tr></tr></div>
                            ist eigentlich immer unnötig, dann kannst du auch
                            Code:
                            <tr id="irgendwas"></tr>
                            Schreiben

                            Oder du nutzt die schönere Variante und verwendest nur das DIV

                            Kommentar


                            • #15
                              hmm wenn ich

                              <?php include("/http/htdocs/Webseite/php/header.php"); ?>
                              <?php include("/http/htdocs/Webseite/php/menue.php"); ?>
                              <?php include("/http/htdocs/Webseite/php/footer.php"); ?>


                              den include von menue.php wegnehme, verschwindet das menue, keine fehlanzeige oder sonst was ..

                              meine webseite ist schon zu groß ausgebaut, es könnte wochen dauern um alles in div boxen rein zu klatschen

                              Kommentar

                              Lädt...
                              X