Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt ein- und ausblenden (Wiki)

Einklappen

Neue Werbung 2019

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

  • Inhalt ein- und ausblenden (Wiki)

    Hallo,
    es gibt hier ein ausführliches Wiki zum Thema "Inhalt ein- und ausblenden". Ich habe daraus folgendes gemacht
    PHP-Code:
    <?php
     
    // Dieses Array dient gleichzeitig zur Validierung gültiger Zustände
    // wie auch zum Zuordnen des Gegenzustands
    $states = array(
                   
    'visible' => 'hidden' ,
                   
    'hidden' => 'visible' ,
                   );
    $display 'visible'// dies ist der Initialzustand
     
    if (! empty ($_GET['display'])) {
      
    // wir nehmen nur 'visible' oder 'hidden an
      
    if(in_array ($_GET['display'] , $states)) {
          
    $display $_GET['display'];
      }
    }
    $link '?display=' $states[$display]; // Gegenteil in den Link
    ?>
    <article>
    <style>
      .hidden {display:none;}
      .visible {display:block;}
    </style>
    <p>Der erste Satz.</p>
    <a href="?display=<?php echo $link?>">Click me!</a>
    <div class="<?php echo $display?>">
    Here is some content for you!  
    </div>
    </article>
    Leider klappt's so nicht. Ein Klick auf den Link "Click me!" bewirkt nichts. Wo liegt der Fehler?

  • #2
    Betreibe Debugging: http://php-de.github.io/#debugging

    Schau den erzeugten HTML-Quelltext an, ob der korrekt ist, wenn nicht finde heraus warum.

    Schau ob die Variablen das enthalten was du erwartets und wenn nicht finde heraus warum.
    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
      liegt es evt daran, dass mit $link 2x ?display ausgegeben wird?

      ?display=?display=

      also einmal in $link einmal bei a href

      Kommentar


      • #4
        @hausl:
        Der erzeugte html-Code sieht so aus:
        Code:
        <article>
        <style>
          .hidden {display:none;}
          .visible {display:block;}
        </style>
        <p>Der erste Satz.</p>
        <a href="?display=?display=hidden">Click me!</a>
        <div class="visible">
        Here is some content for you!  
        </div>
        </article>
        So gut kenne ich mich nicht aus, dass ich wüsste, was daran falsch ist.

        Kommentar


        • #5
          @kado:
          Man soll ja niemandem blind vertrauen, aber ich hoffe, dass der PHP-Code aus dem Wiki (im Beispiel 1:1 beibehalten) fehlerfrei ist. Ich will nicht verhehlen, dass mir die Zeile
          Code:
          $link = '?display=' . $states[$display];
          und die Zeile
          Code:
          <a href="?display=<?php echo $link; ?>">Click me!</a>
          sehr merkwürdig vorkommen. Beide stehen exakt so im Wiki.
          Bisher dachte ich, dass das Fragezeichen nur als ternärer Operator vorkommt. Den kenne ich aus C# und Pascal.

          Kommentar


          • #6
            So gut kenne ich mich nicht aus, dass ich wüsste, was daran falsch ist.
            Sorry, aber dann lern Grundlagen. Du solltest schon verstehen, wie der Code funktioniert, nicht nur, was er tut.

            Man soll ja niemandem blind vertrauen, aber ich hoffe, dass der PHP-Code aus dem Wiki (im Beispiel 1:1 beibehalten) fehlerfrei ist. Oder?
            Ist er nicht.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Zitat von GerhardS Beitrag anzeigen
              @kado:
              aber ich hoffe, dass der PHP-Code aus dem Wiki (im Beispiel 1:1 beibehalten) fehlerfrei ist.
              Hoffen ist zu wenig, wie oben schon erwähnt wurde, dir fehlen Grundlagen.

              Zitat von Kado Beitrag anzeigen
              ?display=?display=
              ... sehr merkwürdig vorkommen.
              mit Recht! http://de.wikipedia.org/wiki/Uniform...ntifier#Aufbau

              Bisher dachte ich, dass das Fragezeichen nur als ternärer Operator vorkommt. Den kenne ich aus C# und Pascal.
              Das stimmt schon, in PHP gibt es den ternären Operator, ( http://php-de.github.io/jumpto/if/#t...rnrer-operator ) aber oben geht es um HTML, und da hat das Fragezeichen in der URI eine andere Bedeutung.
              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


              • #8
                Inhalt ein- und ausblenden (Wiki)

                Vielleicht sollte der Artikel dann angepasst werden:

                http://www.php.de/wiki-php/index.php...und_ausblenden

                PHP-Code:
                <?php
                // Dieses Array dient gleichzeitig zur Validierung gültiger Zustände
                // wie auch zum Zuordnen des Gegenzustands
                $states = array(
                    
                'visible'     => 'hidden',
                    
                'hidden'      => 'visible',
                );
                 
                // Initialzustand
                $display 'hidden';
                 
                if( !empty( 
                $_GET['display']) ){
                    
                // wir nehmen nur 'visible' oder 'hidden' an
                    
                if( in_array$_GET['display'] , $states) ){
                        
                $display $_GET['display'];
                    }
                }
                 
                // Gegenteil in den Link
                $link '?display=' $states[$display];
                ?>
                <style>
                    .hidden{ display:none; }
                    .visible{ display:block; }
                </style>

                <a href="<?php echo $link?>">Click me!</a>
                <div class="<?php echo $display?>">
                    Here ist some content for you!  
                </div>
                Delirius

                PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                Kommentar


                • #9
                  Zitat von Delirius Beitrag anzeigen
                  Vielleicht sollte der Artikel dann angepasst werden:

                  http://www.php.de/wiki-php/index.php...und_ausblenden
                  Die Wiki hier im Forum ist veraltet und wird nichtmehr gepflegt, die neue Wiki findet man unter http://php-de.github.io/
                  [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                  Kommentar


                  • #10
                    Inhalt ein- und ausblenden (Wiki)

                    Oh, ok.

                    Wäre es dann nicht besser das Wiki entsprechend zu entfernen oder den Link auf http://php-de.github.io/ zu setzen?

                    €dit: @ nikosch und mermshaus: Vielleicht sollte man dort den Code anpassen ( wenn Zeit ). Steht das Gleiche, wie im Wiki.
                    Delirius

                    PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                    Kommentar


                    • #11
                      €dit: @ nikosch und mermshaus: Vielleicht sollte man dort den Code anpassen ( wenn Zeit ). Steht das Gleiche, wie im Wiki.
                      Feel free to change https://github.com/php-de/
                      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


                      • #12
                        Zitat von Delirius Beitrag anzeigen
                        Vielleicht sollte man dort den Code anpassen ( wenn Zeit ). Steht das Gleiche, wie im Wiki.
                        https://github.com/php-de/php-de.github.io/pull/112
                        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                        Kommentar


                        • #13
                          Vorschlag zur Änderung des Wiki:
                          Code:
                          <?php
                           // Dieses Array dient gleichzeitig zur Validierung gültiger Zustände
                          // wie auch zum Zuordnen des Gegenzustands
                          $states = array(
                                         'visible' => 'hidden' ,
                                         'hidden' => 'visible' ,
                                         );
                          $display = 'visible'; // dies ist der Initialzustand
                           if (! empty ($_GET['display'])) {
                            // wir nehmen nur 'visible' oder 'hidden an
                            if(in_array ($_GET['display'] , $states)) {
                                $display = $_GET['display'];
                            }
                          }
                          //$link = '?display=' . $states[$display]; // Gegenteil in den Link. Bestandteil '?display= ist hier FALSCH!
                          $link = $states[$display];
                          //nur zum Testen
                          // echo $link;
                          ?>
                          <!-- in die Stilvorlage zwei Klassen einbauen:
                           .hidden {display:none;}
                           .visible {display:block;}
                          -->
                          <!-- Anwendungsbeispiel -->
                          <article>
                          <a href="<?php echo $PHP_SELF ?>?display=<?php echo $link; ?>">Click me!</a>
                          <div class="<?php echo $display; ?>">
                          <p>Here is some content for you!</p>  
                          </div>
                          </article>

                          Kommentar


                          • #14
                            $PHP_SELF birgt Sicherheitsrisiken. Vielleicht schreibt man besser
                            Code:
                            ...samePage.htm?display=<?php echo $states[$display]; ?>
                            [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                            Kommentar


                            • #15
                              Nett gemeint, aber das ist nur ein Lehrbeispiel. Es ist in den wenigsten Anwendungen sinnvoll, solche GET-Parameter in dieser Weise zu reservieren, schon, weil es ja praktisch mehrere klappbare Bereiche geben kann (und meistens auch gibt). Es geht im Artikel also um das grundsätzliche Zusammenspiel zwischen den Komponenten, zwischen Konfiguration, Request, Validierung und dynamischen Markup. Genauso könnte man nälich argumentieren, dass bei der Lösung andere GET-Parameter verloren gehen, bspw. ein spezischer Page-Aufruf.
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X