Ankündigung

Einklappen
Keine Ankündigung bisher.

Unabhängige Formularfelder

Einklappen

Neue Werbung 2019

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

  • Unabhängige Formularfelder

    Halli hallo
    nachdem ich euch die letzten wochen immer wieder mit einzelheiten genervt habe, soll nun die kür folgen
    ich habe ein formularfeld das die IP des Ofens angibt bzw, den namen dieser soll gefüllt werden durch die URL ($_GET ??) und die anderen felder sollen dann von dem zugehörigen Ofen angezeigt werden.
    in dem Formular sollen aber auch die Targets des ofens geändert werden können und abgeschickt ($_POST!!).
    Nun die schwierigkeit
    wenn die IP geändert wird, soll so gesehen onchange, die daten vom neuen ofen abgerufen werden.
    ich tu mich hier mit der realisierung recht schwer auch mit dem $_GET....
    ein weiteres problem habe ich mit dem reloadbutton, der nur die formularfelder aktualisieren soll, aber nicht die komplette seite

    hier ein bisheriger code

    PHP-Code:
    <?php
    //this script is for the online- Remote contorl of the Oven
    $debug=0;        //
    $maxtemp=(real)85;    //
    $mintemp=(real)-40;    //
    $lowhum=(real)0;    //
    $highhum=(real)100;    //
    $lowfan=(real)0;    //
    //////////////////////////
    $IP="de-oven-02";
    $buff;
    $newtemp;
    $cel="[&deg;C]";
    $per="[%]";
    $newtartempstr="";
    $newtarhumstr="";
    $newtarfanstr="";
    //initiate debug notices
    if($debug===1){
        
    init_set('display_errors'1);
        
    error_reporting(-1);
    }
    //function to get values from target oven
    function readOven($IP$debug){
        
    $con=fsockopen($IP2049$errno$errstr);
        if(
    $con){
            
    fputs($con"\$01I\r";
            
    $stream=stream_get_contents($con1310);
            if(
    $debug===1){
                echo 
    "debug readoven: $stream <br> vardump readOven(): ";
                
    var_dump($stream);
                echo 
    "<br>";
            }
            
        }else{
            echo 
    $errno "( $errstr ) <br>";
            
    $stream="false";
        }
        
    fclose($con);
        return 
    $stream;
    }
    //function to get values in right format after submit
    function getFormat($value$debug){
        
    $newform=sprintf("%1$06.1f"$value);
        if(
    $debug===1){
            echo 
    "debug newform: $newform <br> var_dump()";
            
    var_dump($newform);
            echo 
    "<br>";
        }
        return 
    $newform;
    }
    //send new values to target oven
    function sendOven($newtartempstr$newtarhumstr$newtarfanstr$buff$IP$debug){
        
    $stream=explode (" "$buff);
        
    $sendstring=$newtartempstr " " $newtarhumstr " " .     $newtarfanstr " " $stream[8] . " " $stream[9] . " " $stream[10] . " " $stream[11] . " " $stream[14];
        if(
    $debug===1){
            echo 
    "debug sendOven Sendstring: $sendstring <br>";
            echo 
    "debug sendOven buff: $buff <br>";
        }
        
    $con=fsockopen($IP2049$errno$errstr);
        if(
    $con){
            
    fputs($con"\$01E $sendstring\r");
        }
        else{
            echo 
    "$errno ( $errstr )<br>";
        }
        
    fclose($con);
    }
    $buff=readOven($IP$debug);
    //debuging
    if($debug===1){
        echo 
    "var_dump() after readOven: ";
        
    var_dump($buff);
        echo 
    "<br>";
    }
    //format the string pieces to double
    $tartemp=(real)substr($buff,0,6);
    $curtemp=(real)substr($buff,7,6);
    $tarhum=(real)substr($buff,14,6);
    $curhum=(real)substr($buff,21,6);
    $tarfan=(real)substr($buff,28,6);
    $curfan=(real)substr($buff,35,6);
    //format the string pieces to integer
    $power=(int)substr($buff,99,1);
    $humcon=(int)substr($buff,100,1);
    $condprot=(int)substr($buff,101,1);
    //debuging
    if($debug===1){
        echo 
    "power: $power <br>";
        echo 
    "humcon: $humcon <br>";
        echo 
    "condprot: $condprot <br>";
    }
    //see if checkbox have to be checked or not
    $checked='checked="checked"';
    $powercheck=($power===1) ? $checked"";
    $humcheck=($humcon===1) ? $checked"";
    $condcheck=($condprot===1) ? $checked"";
    echo<<< BODY
    <head>
        <title>online-oven-management</title>
    </head>
    <body>
    <form method="POST" action=ovenmanagement.php align="center">
        <table boarder=0>
            <tr>
                <td>Adresse</td>
                <td><input name="IP" size=3 value=
    $IP></td>
            </tr>
            <tr>
                <td></td>
                <td></td>
                <td>Target</td>
                <td>Current</td>
            </tr>
            <tr>
                <td>Temp</td>
                <td>
    $cel</td>
                <td><input name="tartemp" size=1 value=
    $tartemp></td>
                <td>
    $curtemp</td>
            </tr>
            <tr>
                <td>Humidity</td>
                <td>
    $per</td>
                <td><input name="tarhum" size=1 value=
    $tarhum></td>
                <td>
    $curhum</td>
            </tr>
            <tr>
                <td>Fanspeed</td>
                <td>
    $per</td>
                <td><input name="tarfan" size=1 value=
    $tarfan></td>
                <td>
    $curfan</td>
            </tr>
            <tr>
                <td>Power</td>
                <td><input type="checkbox" name="power" 
    $powercheck></td>
            </tr>
            <tr>
                <td>Power</td>
                <td><input type="checkbox" name="humcon" 
    $humcheck></td>
            </tr>
            <tr>
                <td>Power</td>
                <td><input type="checkbox" name="condprot" 
    $condcheck></td>
            </tr>
            <tr>
                <td><input type="submit" name="submit" value="Submit"></td>
                <td><input type="button" name="reload" value="Reload" onClick=location.reload(true)></td>
                <td><input type="reset" name="reset" value="Reset"></td>
            </tr>
        </table>
        </form>
    </body>
    BODY;
    //on submit
    if($_SERVER["REQUEST_METHOD"]=="POST"){
        if(
    $debug===1){
            echo 
    "var_dump() Request: ";
            
    var_dump($_POST);
            echo 
    "<br>";
        }
    //Target values get formated to compare easier
        
    $newtartemp=(real)($_POST['tartemp']);
        
    $newtarhum=(real)($_POST['tarhum']);
        
    $newtarfan=(real)($_POST['tarfan']);
    //check if tartemp is changed
        
    if($newtartemp!=$tartemp){
    //tartemp check
            
    if($newtartemp<$mintemp){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"temp to low it musst be over -40&deg C;\");
                </script>"
    ;
            }
            else if(
    $newtartemp>$maxtemp){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"temp to high it musst be under 85&deg C;\");
                </script>"
    ;
            }
            else{
                
    $newtartempstr=getFormat($newtartemp$debug);
            }
        }
        else{
            
    $newtartempstr=getFormat($newtartemp$debug);
        }
    //tarhum check
        
    if($newtarhum!=$tarhum){
            if(
    $newtarhum<$minhum){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"hum to low it musst be over 0%;\");
                </script>"
    ;
            }
            else if(
    $newtarhum>$maxhum){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"hum to high it musst be under 100%;\");
                </script>"
    ;
            }
            else{
                
    $newtarhumstr=getFormat($newtarhum$debug);
            }
        }
        else{
            
    $newtarhumstr=getFormat($newtarhum$debug);
        }
    //tarfancheck
        
    if($newtarfan!=$tarfan){
            if(
    $newtarfan<$minfan){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"temp to low it musst be over 0 %;\");
                </script>"
    ;
            }
            else if(
    $newtarfan>$maxfan){
                echo 
    "<script type=\"text/javascript\" language=\"Javascript\">
                alert(\"temp to high it musst be under 100 %\");
                </script>"
    ;
            }
            else{
                
    $newtarfanstr=getFormat($newtarfan$debug);
            }
        }
        else{
            
    $newtarfanstr=getFormat($newtarfan$debug);
        }
    //checkbox power
        
    if(!empty($_POST['power'])){
            
    $buff[99]="1";
            if(
    $debug===1){
                echo 
    "debug power on: " $buff[99] . "<br>";
            }
        }
        else{
            
    $buff[99]="0";
            if(
    $debug===1){
                echo 
    "debug power off: "$buff[99"<br>";
            }
        }
    //checkbox Humcon
        
    if(!empty($_POST['humcon'])){
            
    $buff[100]="1";
            if(
    $debug===1){
                echo 
    "debug humcon on: " $buff[100] . "<br>";
            }
        }
        else{
            
    $buff[100]="0";
            if(
    $debug===1){
                echo 
    "debug humcon off: "$buff[100"<br>";
            }
        }
    //checkbox condprot
        
    if(!empty($_POST['condprot'])){
            
    $buff[101]="1";
            if(
    $debug===1){
                echo 
    "debug condprot on: " $buff[101] . "<br>";
            }
        }
        else{
            
    $buff[101]="0";
            if(
    $debug===1){
                echo 
    "debug power off: "$buff[101"<br>";
            }
        }
        if(
    $debug===1){
            echo 
    "debug gettype newtartemp:" gettype($newtartemp) . "<br>";
            echo 
    "debug gettype tartemp:" gettype($tartemp) . "<br>";
            echo 
    "debug gettype newtarhum:" gettype($newtarhum) . "<br>";
            echo 
    "debug gettype tarhum:" gettype($tarhum) . "<br>";
            echo 
    "debug gettype newtarfan:" gettype($newtarfan) . "<br>";
            echo 
    "debug gettype tarfan:" gettype($tarfan) . "<br>";
            echo 
    "debug gettype newtartempstr:" gettype($newtartempstr) . "<br>";
            echo 
    "debug gettype newtarhumstr:" gettype($newtarhumstr) . "<br>";
        }
        
    sendOven($newtartempstr$newtarhumstr$newtarfanstr$buff$IP$debug);
    }
    ?>


  • #2
    Wenn die "IP" geändert wird, wo wird diese Änderung gespeichert?
    Du hast weder Sessions noch andere Speichermedien, wo du die Änderung ablegst. Beim nächsten Request wird wieder die alte, hardcodierte IP genommen...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      das das im moment noch so ist, weiß ich das hätte ich dir auch sagen können, wie oben bereits erwähnt habe ich probleme mit der umsetzung diese dynamisch zu gestalten, was der grund ist weshalb ich das thema aufgemacht habe ^^

      Kommentar


      • #4
        Ein Form-Feld hast du ja bereits, du musst den übertragenen Wert nur in einer Session speichern und von dort wieder benutzen, um die IP Requestübergreifend zu behalten - wo genau liegt dein Problem?
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          okey okey, ich glaub ich hab das IP-problem von vornherein falsch erklärt habe dies nun gelöst mit

          PHP-Code:
          $IP=gethostname(); 
          nun habe ich aber noch das problem mit dem reload,
          der reload soll NUR!!! die Formularfelder aktualisieren ohne dabei die komplette seite zu aktualisieren, die meldung des browsers das die daten neu gesendet werden usw. soll dabei unterdrückt bzw. am besten ganz umgangen werden

          Kommentar


          • #6
            der reload soll NUR!!! die Formularfelder aktualisieren
            So etwas gibt es nicht. Da wirste wohl Ajax bemühen müssen.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von nikosch Beitrag anzeigen
              So etwas gibt es nicht. Da wirste wohl Ajax bemühen müssen.
              OMG, heißt das jetzt ich muss das komplette script un Ajax umschreiben ?? O_O

              Kommentar


              • #8
                Zumindest den Teil mit dem Form. Alternativ kannst Du Dich von der Idee verabschieden:
                der reload soll NUR!!! die Formularfelder aktualisieren
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  und wie setz ich das um ?? hab von ajax mal überhaupt keinen plan :-/

                  Kommentar


                  • #10
                    Dann guck ins Internet und lern es.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      angularjs
                      Standards - Best Practices - AwesomePHP - Guideline für WebApps

                      Kommentar

                      Lädt...
                      X