Ankündigung

Einklappen
Keine Ankündigung bisher.

checkboxen ......

Einklappen

Neue Werbung 2019

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

  • checkboxen ......

    Täglich grüßt das murmeltier
    folgendes problem
    ich habe 3 checkboxen die ich darauf kontroliere ob sie gecheckt sind oder nicht der code sieht bei wie folgt aus

    PHP-Code:
    if($_SERVER["REQUEST_METHOD"]=="POST"){
        if(!empty(
    $_POST['power'])){
            
    $buff[99]="1";
           }else{
             
    $buff[99]="0";
           }
        if(!empty(
    $_POST['humcon'])){
            
    $buff[100]="1";
           }else{
             
    $buff[100]="0";
           }
        if(!empty(
    $_POST['condprot'])){
            
    $buff[101]="1";
           }else{
             
    $buff[101]="0";
           }

    der witz an der sache ist, das es bei den parametern "condprot" und "power" funktioniert, die mittlere checkbox "humcon" funktioniert jedoch nicht

  • #2
    Debugging...

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Debugging...
      und zwar so:

      Richtig debuggen

      1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
      2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
      3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
      4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
      6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

      Kommentar


      • #4
        alles schon gemacht, es sieht so aus, als liese sich die eine stelle in dem string nicht "austauschen", was mich sehr verwundert da es bei den anderen beiden ja auch funktioniert

        Kommentar


        • #5
          mein Tipp dazu - guck bitte GANZ genau aufs HTML - also das, was im Browser ankommt ... dann mit der Erweiterung Firebug im Firefox schaust du dir an, welche Daten gesendet werden, wenn du das Formular absendest (je nach Methode als Get / Post ) ... damit sollte sich doch herausfinden lassen, ob:
          - die Checkbox wirklich das name-Attribut "humcon" trägt
          - die Checkbox Bestandteil des richtigen Formulars ist
          - dieses Formular mit allen benötigten Daten abgesendet wird (Get-Request ist auf 2 kbyte inclusive URL begrenzt)

          Dann wäre in deinem verarbeitenden PHP-Script zumindest für die Fehlersuche angebracht, die gesamten Daten des Requests auszugeben#
          PHP-Code:
          echo '<pre>';
          var_dump($_POST); // falls Post-Request sonst -> var_dump($_GET);
          echo '</pre>'

          Kommentar


          • #6
            hm nachdem ich mir nun die "var_dump()" ausgeben lassen hab sieht es wohl so aus, dass der die checkbox "humcon" garnicht erst abschickt, was mich noch mehr verwundert da, es sich hier eigentlich nur um ein copy - paste handelt in dem ich dann die variablen geändert habe

            Kommentar


            • #7
              Wenn sie nicht ausgewählt ist wird sie auch nicht abgeschickt, das haben Checkboxen so an sich.

              Kommentar


              • #8
                Wir können jetzt noch eine Weile weiter raten bis entweder du oder wir keine Lust mehr haben.
                Oder du rückst mit Code raus, wo man vielleicht etwas sehen kann...

                War die Checkbox denn auch angehakt?

                Kommentar


                • #9
                  natürlich war die checkbox angehagt, versteht sich von selbst, habe ja zur kontrolle alle angehagt

                  hier code mit dennen besagte checkboxen zusammenhängen

                  PHP-Code:
                  $buff readOven($IP$debug);
                  $power = (int)substr($buff991);
                  $humcon = (int)substr($buff1001);
                  $condprot= (int)substr($buff1011);
                  if(
                  $debug===1){
                     echo 
                  "power: " $power "<br>";
                     echo 
                  "humcon: " $humcon "<br>";
                     echo 
                  "condprot: " $condprot "<br>";
                  }
                  if(
                  $power===1){
                     
                  $powercheck="checked=\"checked\"";
                  }else{
                  $powercheck="";}
                  if(
                  $humcon===1){
                     
                  $humcheck="checked=\"checked\"";
                  }else{
                  $humcheck="";}
                  if(
                  $condprot===1){
                     
                  $condcheck="checked=\"checked\"";
                  }else{
                  $condcheck="";}
                  echo <<< FORM
                  <form method="POST" action="test.php" align="center">
                  <table boarder=0>
                  <tr>
                  <td>Power</td>
                  <td><input type="checkbox" name ="power" 
                  $powercheck></td>
                  </tr>
                  <tr>
                  <td>Hum. Control</td>
                  <td><input type="checkbox" name ="humcon" 
                  $humcheck></td>
                  </tr>
                  <tr>
                  <td>Cond. Prot.</td>
                  <td><input type="checkbox" name="condprot" 
                  $condcheck></td>
                  </tr>
                  </table></form>
                  FORM;
                  if(
                  $_SERVER["REQUEST_METHOD"]=="POST"]{
                     echo 
                  "var_dump() Request: ";
                     
                  var_dump($_POST);
                     echo 
                  "<br>";
                     if(!empty(
                  $_POST['power'])){
                        
                  $buff[99]="1";
                     }else{
                         
                  $buff[99]="0";
                    }
                    if(!empty(
                  $_POST['humcon'])){
                        
                  $buff[100]="1";
                     }else{
                         
                  $buff[100]="0";
                    }
                    if(!empty(
                  $_POST['condprot'])){
                        
                  $buff[101]="1";
                     }else{
                         
                  $buff[101]="0";
                    }

                  Kommentar


                  • #10
                    Prüfe mal das Formular im (fertig geparsten) HTML Quellcode auf Korrektheit, wenn die angehakte Chekbox nicht im var_dump($_POST) ersichtlich ist.

                    Kommentar


                    • #11
                      die var_dump() gibt mir
                      var_dump() Request: array(7) { ["IP"]=> string(10) "de-oven-02" ["tartemp"]=> string(2) "25" ["tarhum"]=> string(1) "0" ["tarfan"]=> string(3) "100" ["power"]=> string(2) "on" ["condprot"]=> string(2) "on" ["submit"]=> string(6) "Submit" }
                      aus, wenn alle checkboxen angehakt sind

                      Kommentar


                      • #12
                        ja, und ist der HTML-Quelltext des Form auch ok?

                        Übrigens:

                        PHP-Code:
                        if($power===1){
                           
                        $powercheck="checked=\"checked\"";
                        }else{
                        $powercheck="";}
                        if(
                        $humcon===1){
                           
                        $humcheck="checked=\"checked\"";
                        }else{
                        $humcheck="";}
                        if(
                        $condprot===1){
                           
                        $condcheck="checked=\"checked\"";
                        }else{
                        $condcheck="";} 
                        ginge auch etwas kürzer:

                        PHP-Code:
                        $checked ' checked="checked"';
                        $powercheck = ($power === 1) ? $checked "";
                        $humcheck = ($humcon === 1) ? $checked "";
                        $condcheck = ($condprot === 1) ? $checked ""

                        Kommentar


                        • #13
                          [irrt. doppelpost]

                          Kommentar


                          • #14
                            wir helfen gern - aber wir lassen uns ungern veralbern ...

                            dein var_dump der post-Variablen zeigt viel mehr Elemente, als dein html-Code als Formular überhaupt erzeugt - ...

                            Hast du vielleicht mehrere Formulare auf deiner Seite ? oder zeigst du uns nur Beispielcode ?

                            Kommentar


                            • #15
                              das ist ne gute frage, die ich aber leider auch nicht beantworten kann,

                              habe die html-tags usw, alle nochmal überprüft, keine fehler gefunden ... alles geöffnet und geschlossen wie es sein soll

                              edit: es sind mehrere formulare auf der seite, die ich halt einzeln geschrieben hab, zur übersichtlichkeit und zur einfacheren fehlersuche

                              Kommentar

                              Lädt...
                              X