Unerklärlich...

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

  • Unerklärlich...

    Hallo,


    Für einen besseren, schlaueren Threadtitel fehlt mir grade die Idee.., genau so wie bei folgendem Kontrollkonstrukt

    Diese Kontrolle wird nach dem Absenden eines Formulars durchlaufen (bzw. sollte es) doch aus mir unerklärlichen Gründen (liegts am schlafmangel oder meinen Nerven?) bekomme ich weder error's noch sonstige Hinweise eines Fehlers. Auch nach mehrmaligem durchschauen, austesten, etc. finde ich keinen Fehler.

    Ich hoffe, ihr seht da etwas mehr.


    PHP-Code:
    ini_set('display_errors'ON);
    ini_set('error_reporting'E_ALL);

    if (
    $aktion == "check") {
        if (
    $nick == "") {
            
    nmeineform(); # Wenn 'Nick' nicht vorhanden, Fehlerformular anzeigen
        
    }
        else {
            
    $checknick "io"# Wenn 'Nick' vorhanden dann Variable setzen
        
    }
        if (
    $kat != "") {
            
    $sql "SELECT channel FROM co_kat WHERE name = '$kat' LIMIT 1";
            
    $result mysql_query($sql) or die(mysql_error());
            
    $row mysql_fetch_array($result);
            if (
    $row["channel"] == "1") {
                if (
    $c_channel == "") {
                    
    nmeineform(); # Wenn 'Channel' als Pflichtfeld nicht vorhanden ist, Fehlerformular anzeigen
                
    }
                else {
                    
    $checkchannel "io"# Wenn 'Channel' als Pflichtfeld vorhanden ist, Variable setzen
                
    }
            }
            elseif (
    $row["channel"] == "2") {
                
    $checkchannel "io"# Wenn 'Channel' kein Pflichtfeld ist, Variable setzen
            
    }
        else {
            
    $checkkat "io"# Wenn Kategorie vorhanden, Variable setzen
            
    if ($checknick == "io" && $checkchannel == "io" && $checkkat == "io") {
                
    # SQL-Anweisungen zum Speichern - Zwecks Posting alles rausgeschnitten (Überlänge!)


            
    }
            else {
                
    nmeineform();
            }
        }

    Ziel des ganzen ist es, dass nur unter bestimmten Bedingungen der Speichervorgang gestartet wird (nick, kat (channel je nach kat) muss vorhanden sein)

    Ein bisschen mit Kommentaren versehen damit es nichts zu erklären gibt. Am rausgeschnittenen Speichern liegts nicht, denn nur wenn ich das ganze Schnippsel (ohne Speichern) einkommentiere, dann erhalte ich eine anzeigbare Seite (hald nur das diese nicht funkionabel ist - also gespeichert werden kann aber nur ohne überprüfung). Sobald ich das wieder hinzufüge gibts wieder eine weisse Seite ohne alles...


    Gruss..

  • #2
    register_globals? Sollte dann aber eigentlich Fehler hageln.

    Grüße
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      Genereller Tipp: Solche Überprüfungen würde ich nicht verschachteln, sondern generell so behandeln:

      PHP-Code:
      if(is_empty($_GET['feld'])) {
      $bError true;
      }

      if(
      is_empty($_GET['anderes_feld'])) {
      $bError true;
      }

      // usw. 
      Damit kannst du dein Formular auch schnell und einfach erweitern und der Code bleibt übersichtlich. Eventuell willst du deine Prüfung ja dementsprechend umstellen
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        register_globals sind auf On.
        Hab diesbezüglich schon ne Menge versucht, sogar über .htaccess mit php_admin_flag display_errors on. Bisher mit nichts erfolg gehabt.


        @ unset
        Danke für den Tip, werde ich demnächst mal versuchen. Es löst aber die nicht vorhandenen Fehler nicht *g*

        Kommentar


        • #5
          PHP-Code:
          if ($aktion == "check"
          ich nehme an, dass $aktion der Sendebutton ist? Wenn, dann ist klar, denn man kann auch mit Enter senden und somit erhältst du niemals den Wert "check" => alles was innerhalb if ist, wird nicht verarbeitet und somit wirst du nie irgendwas bekommen.

          Kommentar


          • #6
            Hallo,


            Nein.., $aktion == "check" ist das Ziel des Formulars, also ACTION=\"xyz.php?aktion=check\"... Aber selbst wenn diese Variable nicht gesetzt wäre, würde es mir noch keine 'weisse Seite' beschehren, oder irre ich? *g*


            Wie dem auch sei, ich hab nun (nach einem leckeren Kartoffelauflauf mit Borccoli ) an der Variante von unset versucht - siehe da, es funktioniert einwandfrei.

            PHP-Code:
            if(empty($_POST['nick'])) {
                
            $er_nick true;
            }
            if(empty(
            $_POST['comment'])) {
                
            $er_comment true;
            }
            if(empty(
            $_POST['kat'])) {
                
            $er_kat true;
            }
            $sql "SELECT channel FROM co_kat WHERE name = '$kat' LIMIT 1";
            $result mysql_query($sql) or die(mysql_error());
            $row mysql_fetch_array($result);
            if (
            $row["channel"] == "1") {
                if(empty(
            $_POST['c_channel'])) {
                    
            $er_channel true;
                }
            }

            if (
            $er_channel == "true" || $er_kat == "true" || $er_comment == "true" || $er_nick == "true") {
                
            nmeineform();
            } else {
            # SQL-Anweisungen zum Speichern
                
            }

            Warum auch immer, im eigentlichen Sinne ist es doch das selbe (benutze nur andere "Funktionen" (in klammer weil empty nicht wirklich eine Funktion ist)), oder etwa nicht? Muss ich nicht verstehen. *g*

            Wie dem auch sei.., das Problem mit der weissen Seite bei error's ist dadurch nicht gelöst - auch wenns nicht zum eigentlichen Thema gehört. Weiss da vielleicht noch jemand einen Rat?


            Gruss

            Kommentar


            • #7
              Achtung, unsauber und fehlerträchtig:
              Du setzt deine Error-Flags auf bool true, überprüfst sie im Nachhinein aber auf string true (und das auch noch in Doublequotes).
              Mit welcher Motivation?

              Grüße
              Zuletzt geändert von Griecherus; 24.07.2008, 19:44.
              Nieder mit der Camel Case-Konvention

              Kommentar


              • #8
                Sieht atm wirklich danach aus, als ob er dir keine Fehler anzeigt..

                PHP-Code:
                <?php
                ini_set
                ('display_errors'ON);
                ini_set('error_reporting'E_ALL);

                echo 
                "blubb"

                ?>
                Zeigt er dir hier Fehler an? ..

                mfg

                Kommentar


                • #9
                  @ts
                  Dein Fehler lag an diesem Block
                  PHP-Code:
                  if ($kat != "") {
                          
                  $sql "SELECT channel FROM co_kat WHERE name = '$kat' LIMIT 1";
                          
                  $result mysql_query($sql) or die(mysql_error());
                          
                  $row mysql_fetch_array($result);
                          if (
                  $row["channel"] == "1") {
                              if (
                  $c_channel == "") {
                                  
                  nmeineform(); # Wenn 'Channel' als Pflichtfeld nicht vorhanden ist, Fehlerformular anzeigen
                              
                  }
                              else {
                                  
                  $checkchannel "io"# Wenn 'Channel' als Pflichtfeld vorhanden ist, Variable setzen
                              
                  }
                          }
                          elseif (
                  $row["channel"] == "2") {
                              
                  $checkchannel "io"# Wenn 'Channel' kein Pflichtfeld ist, Variable setzen
                          
                  }
                      else {
                          
                  $checkkat "io"# Wenn Kategorie vorhanden, Variable setzen
                          
                  if ($checknick == "io" && $checkchannel == "io" && $checkkat == "io") {
                              
                  # SQL-Anweisungen zum Speichern - Zwecks Posting alles rausgeschnitten (Überlänge!)


                          

                  2 deiner 3 Kontrollvariabeln setzt du im if-Zweig und eine im else. Die können niemals alle gleichzeitig "io" sein.
                  von Griecherus
                  Achtung, unsauber und fehlerträchtig:
                  Und bei register_globals ON kann das böse ins Auge gehen.
                  @ts
                  Kontrollvariabeln IMMER als Boolean setzen UND mit === vergleichen v.a. wenn du globals ON hast (und so scheint es zu sein)

                  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

                  Lädt...
                  X