Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler beim Switch Befehl (gelöst)

Einklappen

Neue Werbung 2019

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

  • Fehler beim Switch Befehl (gelöst)


    Hallo.

    Bin Anfänger und versuche mich gerade an meiner ersten Homepage. Dazu habe ich mir eine Testumgebung mit XAMPP (neueste Version) aufgebaut.

    Soweit funktioniert alles super, bis auf einen kleinen Fehler...und da komme ich einfach nicht weiter. Ich möchte auf einer Seite der Hompage per <aside> "News" darstellen. Ich möchte aber jedes Jahr per Klick in's Menü auswählen können. Das funktioniert auch so weit wenn ich die einzelnen Jahre anklicke, aber ich bekomme beim laden der Startseite (index.php) immer folgenden Fehler über den News: Notice: Undefined index: link in D:\xampp\htdocs\homepage\index.php on line 37 (Zeile 37 ist der Switch-Befehl)

    Hier der Code:

    index.php
    PHP-Code:
    <nav id="navigationlinks">
        <?php include 'menue.inc.php';?>
    </nav>

    <aside>
        <?php
        
    switch ($_REQUEST['link'])
        {
        case 
    1:
        include 
    'news2017.inc.php';
        break;

        case 
    2:
        include 
    'news2018.inc.php';
        break;

        default:
        include 
    'news2018.inc.php';
        }  
        
    ?>

    </aside>

    menue.inc.php
    PHP-Code:
            <ul>
            <
    li><a href="?link=2">2018</a></li>
            <
    li><a href="?link=1">2017</a></li>
            </
    ul

    Ich würde mich freuen, wenn ihr einem Anfänger unter die Arme greifen könntet und bedanke mich schon mal für eure Hilfe.


    Gruss Mike

  • #2
    Weil link nicht existiert. z.B. wenn Du auf der Startseite bist.

    PHP-Code:
    switch ($_GET['link'] ?? 0

    Kommentar


    • #3
      strub

      Vielen vielen Dank für die schnelle Antwort!!! Jetzt funktioniert es fehlerlos. Kannst du noch kurz erklären was der Befehl genau macht?


      Gruss Mike

      Kommentar


      • #4
        Hintergrund ist, du greifst auf etwas zu, das nicht da ist. $_REQUEST['link']

        Besser übrigens explizit $_GET verwenden, statt $_REQUEST.

        Du kannst es zu Beginn im Script auch mit isset() oder empty() prüfen, wenn nicht die Var mit leer "" oder so initialisieren. Das passiert im Prinzip in #2 mit 0.

        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 M1971HE Beitrag anzeigen
          strub
          Kannst du noch kurz erklären was der Befehl genau macht?
          http://php.net/manual/de/migration70...ll-coalesce-op

          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


          • #6
            hausl

            Auch dir vielen Dank. Jetzt kann ich weiter an der Homepage basteln. Super Forum!!! Daumen hoch.


            Gruss Mike

            Kommentar


            • #7
              Hallo.

              Ich muss mich leider doch noch einmal kurz melden.

              Habe das Projekt jetzt auf meine DS409+ geladen geladen. Diese arbeitet mit der PHP-Version 5.3.29 und beim Aufruf der Startseite bekomme ich folgenden Fehler: Parse error: syntax error, unexpected '?'

              Irgendwie scheint diese Version die Fragezeichen im Switch-Befehl nicht zu mögen. Könnt ihr mir nochmal behilflich sein?


              Vielen Dank und Gruss...Mike

              Kommentar


              • #8
                Du arbeitest mit einer veralteten PHP-Version, welche den Befehl nicht versteht. Nimm
                PHP-Code:
                switch ( isset($_GET['link']) ? $_GET['link'] : ); 
                oder besser hol dir eine aktuelle PHP Version ( PHP 7.x).

                Kommentar


                • #9
                  Im oben verlinken Post #5 kannst du sehen das das neu ab/in PHP Version 7 ist.
                  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


                  • #10
                    Hallo.

                    Okay und Danke. Da muss ich wohl mal schauen, wie ich die DS409+ updaten kann. Leider ist sie schon etwas älter und wird nicht mehr supportet. Keine Ahnung ob man sie auch manuell mit einer neuen PHP-Version updaten kann? Falls sich hier jemand mit den alten Synology NAS auskennt, kann er sich gerne bei mir melden.


                    Gruss Mike

                    Kommentar

                    Lädt...
                    X