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

  • Gabbanerd
    hat ein Thema erstellt Unabhängige Formularfelder.

    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);
    }
    ?>

  • rkr
    antwortet
    angularjs

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Dann guck ins Internet und lern es.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Gabbanerd
    antwortet
    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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Gabbanerd
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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?

    Einen Kommentar schreiben:


  • Gabbanerd
    antwortet
    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 ^^

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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...

    Einen Kommentar schreiben:

Lädt...
X