Variablenübergabe für Anfänger

Hallo zusammen,

ich schaffs mal wieder nicht allein.

Ja PHP: 5.6 HTTP_GET_VARS und HTTP_POST_VARS hab ich gelesen (aber vermutlich nicht verstanden).

Habe unter webfront\user\folder\ folgendes php-Script erstellt:

<!-- dies ist auskommentierter text -->

<!--doctype html-->
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

<title>jQuery UI Datepicker - Default functionality angepasst</title>
<!--link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /-->
<link rel="stylesheet" href="/user/jquery/jquery-ui.css" />
<link rel="stylesheet" href="/user/jquery-timepicker-master/jquery.timepicker.css" />

<!--script src="http://code.jquery.com/jquery-1.9.1.js"></script-->
<script type="text/javascript" src="/user/jquery/jquery.js"></script>

<!--script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script-->
<script type="text/javascript" src="/user/jquery/jquery-ui.js"></script>

<!--link rel="stylesheet" href="/resources/demos/style.css" /-->

<!--script src="https://raw.github.com/jonthornton/jquery-timepicker/master/jquery.timepicker.js"></script-->
<script type="text/javascript" src="/user/jquery-timepicker-master/jquery.timepicker.js"></script>

<!-- Verweise für Combobox aus http://www.jeasyui.com/ -->
<!--link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css"-->
<!--link rel="stylesheet" type="text/css" href="../../themes/icon.css"-->
<!--link rel="stylesheet" type="text/css" href="../demo.css"-->
<!--script type="text/javascript" src="/user/jquery-easyui/jquery-easyui/jquery.min.js"></script-->
<!--script type="text/javascript" src="/user/jquery-easyui/jquery-easyui/jquery.easyui.min.js"></script-->

<script>

<!-- die Function macht den Datepicker deutsch. von: http://www.blogrammierer.de/jquery-ui-datepicker-in-deutscher-sprache/ -->
jQuery(function($){
        $.datepicker.regional['de'] = {clearText: 'löschen', clearStatus: 'aktuelles Datum löschen',
                closeText: 'schließen', closeStatus: 'ohne Änderungen schließen',
                prevText: '<zurück', prevStatus: 'letzten Monat zeigen',
                nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen',
                currentText: 'heute', currentStatus: '',
                monthNames: ['Januar','Februar','März','April','Mai','Juni',
                'Juli','August','September','Oktober','November','Dezember'],
                monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
                'Jul','Aug','Sep','Okt','Nov','Dez'],
                monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen',
                weekHeader: 'Wo', weekStatus: 'Woche des Monats',
                dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
                dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
                dateFormat: 'dd.mm.yy', firstDay: 1, 
                initStatus: 'Wähle ein Datum', isRTL: false};
        $.datepicker.setDefaults($.datepicker.regional['de']);
});


<!-- wenn das dokument geladen wird aktuelles Datum gleich eintragen -->
$(document).ready( function() {
    var now = new Date();
    if (now.getDate() < 10) var day = "0" + now.getDate(); else var day = now.getDate();
    if (now.getMonth()+1 < 10) var month = "0" + now.getMonth()+1; else var month = now.getMonth()+1;
    var today = day + '.' + month + '. ' + now.getFullYear();
    $('#datepicker').val(today);
});

<!-- wenn das dokument geladen wird aktuelle Uhrzeit gleich eintragen -->
$(document).ready( function() {
    var now = new Date();
            if (now.getHours() < 10) var hour = "0" + now.getHours(); else var hour = now.getHours();
            if (now.getMinutes() < 10) var minute = "0" + now.getMinutes(); else var minute = now.getMinutes();
            var now = hour + ':' + minute;
            $('#timepicker').val(now);  
});

<!-- wenn das dokument geladen wird Holzart gleich eintragen -->
$(document).ready( function() {
    var holzart = "Briketts Rund o. Loch Mischholz";
            $('#holzart').val(holzart);  
});

<!-- beim click auf heute aktuelles Datum gleich eintragen -->
$(
    function(){
     
        $('#setDate').click(function(){
            var now = new Date();
            if (now.getDate() < 10) var day = "0" + now.getDate(); else var day = now.getDate();
            if (now.getMonth()+1 < 10) var month = "0" + now.getMonth()+1; else var month = now.getMonth()+1;
            var today = day + '.' + month + '. ' + now.getFullYear();
            $('#datepicker').val(today);  
        });
        
    }
);

<!-- beim click auf jetzt aktuelle Uhrzeit gleich eintragen -->
$(
    function(){
     
        $('#setTime').click(function(){
            var now = new Date();
            if (now.getHours() < 10) var hour = "0" + now.getHours(); else var hour = now.getHours();
            if (now.getMinutes() < 10) var minute = '0' + now.getMinutes(); else var minute = now.getMinutes();
            var now = hour + ':' + minute;
            $('#timepicker').val(now);  
        });
        
    }
);

<!-- Datepicker Function -->
$(function() {
$( "#datepicker" ).datepicker(
    {
    dateFormat:'dd.mm. yy',
    disableTouchKeyboard: true,
    showOtherMonths: true,
    selectOtherMonths: true
    }
    );
});
<!-- Timepicker Function -->
$(function() {
$( "#timepicker" ).timepicker({
    show24Hours: true,
    scrollDefaultNow: true,
    timeFormat: 'H:i',
    step: 5,
    });
});


</script>
</head>
<body>

<form action="./user/Brennholz/brennholz-eingabe-datum.php" method="post"> 
<!--p>Neuerfassung  Brennholzverbrauch </-->

<table border="1">

  <colgroup>
    <col width="55">
    <col width="120">
    <col width="80">
  </colgroup>
   <!--td style="height:15px"></td-->
  <tr>
    <td></td>
    <td><p>Neuerfassung  Brennholzverbrauch </p></td>
    <td>*</td>
        
  </tr>
  <tr>
    <td height="20" >Datum:</td>
    <td><input type="text" name="datum" id="datepicker" /></td>
    <td><input type="button" name="setDate" value="heute" id="setDate" /></td>
  </tr>
  <tr>
    <td height="20" >Uhrzeit:</td>
    <td><input type="text" name="uhrzeit" id="timepicker" /></td>
    <td><input type="button" name="setTime" value="jetzt" id="setTime" /></td>
  </tr>
  <tr>
    <td height="20" >Holzart:</td>
    <td>
     <select class="easyui-combobox" name="holzart" style="width:200px;">
        <option value="B-RoL-2-M">Briketts 2 Kg Mischholz rund o. Loch</option>
        <option value="B-RoL-2-H">Briketts 2 Kg Hartholz rund o. Loch</option>
        <option value="B-RUF-0.8-M">Briketts 0,8 Kg Mischholz RUF</option>
        <option value="B-RUF-0.8-H">Briketts 0,8 Kg Hartholz RUF</option>
        <option value="S-33-Nadelholz">Scheit 33cm Nadelholz</option>
        <option value="S-33-Hartholz">Scheit 33cm Hartholz</option>
    </select>
    </td>
    <td>*</td>
  </tr>

  <tr>
    <td height="20" >Stück:</td>
    <td>
     <select class="easyui-combobox" name="stk" style="width:200px;">
        <option value="5">5 Stk</option>
        <option value="6">6 Stk</option>
        <option value="7">7 Stk</option>
        <option value="8">8 Stk</option>
        <option value="9">9 Stk</option>
    </select>
    </td>
    <td>*</td>
  </tr>
  <tr>
    <td></td>
    <td>
        <input type="Submit" name="save" value="speichern" />
        <input type="Submit" name="clear" value="löschen" />
    </td>
    <td>*</td>
  </tr>
  <!-- usw. andere Zeilen der Tabelle -->
</table>

</form>    
<?
#input type="Submit" name="date" value="speichern"
//if($_IPS['SENDER'] == "WebFront")
//{
//    $_REQUEST['stk']= stk;
//    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
//    SetValueString(36888  /*[Verbrauche\BrennHolz\Verbr_Bennholz_Datum]*/,$_REQUEST['setDate']);
//    SetValueString(21389  /*[Verbrauche\BrennHolz\Verbr_Brennholz_Stk]*/,$_REQUEST['stk']);
//    echo $_REQUEST['stk'];
//}
?>

<?php

  if(!empty($HTTP_GET_VARS)) {
    $array = $HTTP_GET_VARS;
  } elseif(!empty($HTTP_POST_VARS)) {
    $array = $HTTP_POST_VARS;
  } else {
    echo "Weder POST- noch GET- Variablen vorhanden!<br>";
  }

  if (isset($array)) {
    echo "Bitte prüfen Sie, ob alle Angaben korrekt sind:<br><br>";
    echo "Datum: " . $array["datepicker"] . "<br>";
    echo "Uhrzeit: " . $array["timepicker"] . "<br>";
    echo "Holzart: " . $array["holzart"] . "<br>";
    echo "Stück: " . $array["stk"] . "<br>";
  }

?> 
</body>
</html>

Leider bekomm ich in der php-Ausgabe immer Weder POST- noch GET- Variablen vorhanden!
Wenn ich auf speichern oder löschen clicke kommt immer not Found.
Hat mir bitte jemand einen Tipp wie ich die Daten nach IPS bekomme?

die Zeit den Quelltext wirklich zu lesen habe ich leider nicht :frowning:

Aber als Tipp:

Schreib mal in den unteren Teil des PHP Codes vor

if(!empty($HTTP_GET_VARS)) {

ein

phpinfo();

Was steht da dann im Bereich der Variablen?

GetVariablen kannst Du ja über ?variable1=a&var2=b an die URL ranhängen …

Die sollte man dann auch direkt sehen …

Dann stimmt unter <form action die URL wohl nicht.

getapatalkt -> Schreibfehler und Zeilenumbrüche sind optional.

Ju, da gabs mal einen Rüffel eines Moderators - Das seine keine zulässige Begründung… :slight_smile:

Hallo zusammen,
erst mal DANKE für die Hilfe. Hat mich auf den richtigen Weg geführt. Hab das Formular mittlerweile so weit, dass ich die eingegebenen Daten in IPS-Variablen speichern kann.
Nun würde ich gerne noch die im Formular eingegebenen Daten nach dem senden gerne erhalten. Bei einfachen Textfeldern funktioniert das auch. Nun habe ich aber auch Comboboxen. Bei denen funktoniert das nicht. Anbei ein auf das wesentliches Script.

 <!DOCTYPE HTML>
<html>
<head>
</head>

<body>

<?php
// define variables and set to empty values
$holzart = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$holzart = $_POST["holzart"];
}
?>

<h2>PHP Form Combobox Example</h2>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

     <select class="easyui-combobox" name="holzart" id="holzart" value="<?php echo $holzart;?>" />
        <option value="">*</option>
        <option value="Brik1">Briketts 2 Kg Mischholz</option>
        <option value="Brik2">Briketts 2 Kg Hartholz</option>
    </select>

    <input type="Submit" value="speichern" />

</form>

<?php
echo "<h2>Your Input:</h2>";
echo $holzart;

?>

</body>
</html>


Kann da bitte jemand drüber schauen und mit einen Tipp geben?
Danke im voraus,

bei Combo und Radioboxen musst Du pro Element vergleichen, ob es aktuell ausgewählt (weil es ja auch mehrfach Auswahlen gibt) ist und dieses in ein „selectet“ setzen.

http://de.selfhtml.org/html/formulare/auswahl.htm „Einträge vorselektieren“

Gruß,

ernie

Hallo ernie,
Danke für den Tipp. Kannte ich aber schon. Das aktuell gewählte Element bekomm ich ja in der Ausgabe. Mein aktuelles Problem ist, die dynamische Vorselektierung. Die bekomm ich nicht hin. Wenn ich eine zusätzliche Option-Zeile einfüge bekomm ich den zuletzt ausgewählten Wert und Text in die Combobox. Ich hätte das aber gerne wie in Deinem verlinkten Beispiel, dass ein vorhandener Option-Eintrag gehighlighted wird.
Kannst Du mir dabei bitte auch noch helfen?

 <!DOCTYPE HTML>
<html>
<head>
</head>

<body>

<?php
// define variables and set to empty values
$name = $holzart_v = $holzart_t = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$name = $_POST["name"];
$holzart_v = $_POST["holzart"];
$holzart_t = $_POST['selected_text'];
}
?>

<h2>PHP Form Combobox Example</h2>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

    <input type="text" name="name" value="<?php echo $name;?>"><br>

    <select id="1_holzart" name="holzart" onchange="document.getElementById('selected_text').value=this.options[this.selectedIndex].text"> <!--http://stackoverflow.com/questions/18268068/php-code-to-get-selected-text-of-a-combo-box -->
        <OPTION SELECTED VALUE ="<?php echo $holzart_v;?>"><?php echo $holzart_t;?></option>
        <option value="">*</option>
        <option value="Brik1">Briketts 2 Kg Mischholz</option>
        <option value="Brik2">Briketts 2 Kg Hartholz</option>
    </select>
    <input type="hidden" name="selected_text" id="selected_text" value="<?php echo $holzart_t;?>" />
    <input type="Submit" value="speichern" />

</form>

<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $holzart_v;
echo "<br>";
echo $holzart_t;
?>

</body>
</html>


Danke im Voraus,

entweder habe ich die Frage noch nicht verstanden, oder es ist in dem HTML Artikel erklärt.

Da müsste meines Erachtens analog (in pseudo-code …) stehen


        <option value="" <?php if $holzart_v == "" echo "selected" ?>>*</option>
        <option value="Brik1" <?php if $holzart_v == "Brik1" echo "selected" ?>>Briketts 2 Kg Mischholz</option>
        <option value="Brik2" <?php if $holzart_v == "Brik2" echo "selected" ?>>Briketts 2 Kg Hartholz</option>

Hallo ernie,

genau das wars was ich gesucht hatte. Leider hab ich das Beispiel aus SelfHtml in Kombination mit mit der php if nicht hinbekommen. Vermtl. Syntaxfehler die ich nicht selber gefunden habe.

Noch mal ein grooooßes Danke für deine Mühe und Gedult.

Hallo zusammen,

u.g. Script liegt im Verzeichnis …IPS\webfront\user\Brennholz\

nun möchte ich die Variablen an ein Script in …IPS\scripts\

übergeben.

Habe es versucht mit

<form method="post" action="../../../scripts/10022.ips.php">

Leider ist das Ergebnis immer „Not Found“

Bitte um einen Tipp.

was steht im browser für ein Verzeichnis? Das ist ja keine PHP-System-Variable sondern eine Webserver-Verzeichnis Variable.

Ich glaube, dass Du per HTML bzw. WebServerVariable nicht aus dem webfront Verzeichnis raus kommst, weil dort das webServer Root liegt.

Noch eins drunter und dann ins script Verzeichnis wird nicht klappen.

Legt mal das IPS 10022.php ins WebFront Verzeichnis.

Aber das ist in gewisser Weise ein Sicherheits-Risiko. Deshalb kann man ja auch nicht auf den kompletten Script Ordner aus dem Webfront aus zugreifen …