Undefined Variable, why???

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

  • Undefined Variable, why???

    Hey, habe ein großes Problem.

    Ich habe zwei Variablen per If abfrage am Anfang der index Datei definiert:


    PHP-Code:
    <?php
    if(empty($_GET['cats'])){$cats="";}else{$cats=$_GET['cats'];}
    if(empty(
    $_GET['link'])){$ordner="main/blog.dat";$weiter="blog";}else{blabla();}
    Funktioniert auch auf meiner Seite... jedoch nicht bei einer Funktion, einer Umblätterfunktion:

    Folgender Fehler:

    Notice: Undefined variable: weiter in /web/www/nevon0/html/index.php on line 217

    Notice: Undefined variable: cats in /web/www/nevon0/html/index.php on line 217



    Die dazugehörige Zeile im script:


    function browse(){
    Ausschnitt...
    PHP-Code:
    <?
    for($x=$p-3; $x<$p+4; $x++)
        {
         if ($x > 0 && $x < $site_count) { if ($x==$p) { ?>
    <span class="caution"><?php echo $x+1?></span>&nbsp;
    <?php } else {?><a href="index.php?link=<? echo $weiter;?>
    &amp;p=<?php echo $x?>&amp;cats=<? echo $cats; ?>">
    <?php echo $x+1?></a>&nbsp;<?php } }
        }
    ?>

    Ich frage mich, warum auf der Hp nur die Links für die Blätterfunktion nicht generiert werden, alle anderen Links funktionieren mit den angehängten VAriablen $cats und $weiter ....

    Vielleicht kennt jemand die Antwort..ich wäre sehr dankbar.
    Zuletzt geändert von asp2php; 23.01.2007, 18:43.

  • #2
    Anstatt
    PHP-Code:
    empty();
    isset(); 
    verwenden.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      isset() verwenden
      mfg

      Kommentar


      • #4
        PHP-Code:

        if(isset($_GET['cats'])){$cats=$_GET['cats'];}else{$cats="";}
        if(isset(
        $_GET['link'])){ 
        *
        es kommt wieder die Fehlermeldung, die aber ncxiht angezeigt wird, sondern im Link enthalten ist...
        *

        ...

        isset() bringt anscheinend nix, echt ncith einfach...
        Zuletzt geändert von asp2php; 23.01.2007, 18:45.

        Kommentar


        • #5
          Woher kommt die Var $weiter ????
          Um zu zeigen wie einfach es ist schreibst du noch als erste Zeile
          PHP-Code:
          $weiter ''
          und die Warnung ist mit oder ohne isset() weg.
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            DIe Variable ist beim ersten seitenaufruf von meiner Seite noch nciht definiert, da sie im Link nciht enthalten ist und wird deshalb per script generiert...

            PHP-Code:
            <? if(isset($_GET['link'])){blabla}else

            {$ordner="main/blog.dat";$weiter="blog";}?>
            so...leider komtm die fehlermeldung $weiter ist undefiniert...

            Aber eben nur bei dieser Umblätterfunktion, bei allen anderen weiterleitenden Link wird sie generiert!



            IDEEN???
            Zuletzt geändert von sinusweb; 23.01.2007, 15:10.

            Kommentar


            • #7
              Du hast 2 Möglichkeiten:

              1. Vor dem Zugriff auf $weiter erst mit isset() prüfen ob die Var gesetzt ist
              2. einen Default Wert festzulegen à la $weiter = '';

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Original geschrieben von jahlives
                Anstatt
                PHP-Code:
                empty();
                isset(); 
                verwenden.

                Gruss

                tobi
                Unfug. Manual lesen.

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  unfug .. hab ich mir doch gedacht...


                  ich habe das Problem gelöst.


                  Innerhalbd er Funktion musst eich die Variablen nochmals definieren.

                  Weiß jemand, wie man das vermeiden kann?

                  Kommentar


                  • #10
                    Unfug. Manual lesen.
                    Wieso denn Unfug ? Wenn der topicstarter vor dem Zugriff auf weiter erst mittels isset() die Existenz der Var prüft verschwindet doch auch die notice. Oder er initiert die Var mit einem Leerstring. Oder er setzt das error_reporting runter (ob das gut ist ist eine andere Sache)

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Also dann in der Fkt mit
                      PHP-Code:
                      $GLOBALS['weiter']; 
                      auf die Var zugreifen.
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        http://de2.php.net/empty
                        empty() ist das Gegenteil von (boolean) var, außer dass keine Warnung erzeugt wird, wenn die Variable nicht gesetzt ist.

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar

                        Lädt...
                        X