PHP Werte in HTML input Anzeigen

  • Hallo zusammen,

    Ich wollte mich mal erkundigen ob es eine Möglichkeit gibt bei einem HTML Input Tag einen Wert anzuzeigen der vorher von PHP vergeben wurde.

    Ich habe ein Formular erstellt, wo ich Werte, für einen Wecker eingeben kann. Diese werden via PHP gespeichert. Jetzt will ich aber beim nächsten Aufruf der Seite meine gespeicherten Werte wieder in dem Formular angezeigt bekommen. Gibt es dafür eine Möglichkeit?

    Bein HTML Formular:
    [code=php]<form action="alarm_clock.php" >
    <div class="layoutBox">
    <label class="alarmClockLabel" id="alarmClockPosition1" > Wecker 1:
    <input type="submit" class="saveButton" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv1" >
    </label>
    <label class="labelRepead" > Widerholen:
    <input type="checkbox" class="checkBox" name="repeadAktiv1" >
    </label>
    <label class="labelDay" > Tag:
    <select name="day1" class="choiceBox" size="7" multiple>
    <option>Montag</option>
    <option>Dienstag</option>
    <option>Mittwoch</option>
    <option>Donerstag</option>
    <option>Freitag</option>
    <option>Samstag</option>
    <option>Sonntag</option>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time1" placeholder="00:00:00" >
    </label>
    </label>
    </div>
    </form>[/php]

  • Huhey,

    Türlich geht das. Dazu einfach PHP aktivieren und danach widder deaktivieren.
    Nur quick&dirty:

    [code=php]HTML Button Code...
    value="<?php
    Datenbankabfrage (oder woher auch immer der Wert kommt, echo nicht vergessen)
    echo "ein wert :)";
    ?>"[/php]

    Quasi aktiviert du kurz den PHP Interpreter, holst den Wert, setzt diesen ein, schaltest den PHP Interpreter ab und beendest den Tag (" am Ende).
    -Sollte es ganz unklar sein melde dich, bin eben nur am Handy, daher der kurze Post.

    Einmal editiert, zuletzt von YellowDream14845 (28. April 2015 um 05:53)

  • Danke für deine Antwort.

    Es geht bei mir immer noch nicht... Und zwar will ich die werte aus einer XML-Datei lesen. Das beschreiben der XML-Datei mit neuen Werten geht bereits.

    Ich habe bisher sowas noch nicht gemacht deshalb weis ich nicht ob es überhaubt von der Grundidee richtig ist... Ich freu mich über jede Hilfe.

    Die werte zuweisung mache ich hier:
    [code=php]foreach ( $xml->alarm[0] as $alarm1 ) {
    $alarmAktiv1 = $alarm1->aktiv;
    $repeadAktiv1 = $alarm1->repeat;
    $day1 = array();
    if ($alarm1->monday == "true")
    $day1[] = "Montag";
    if ($alarm1->tuesday == "true")
    $day1[] = "Dienstag";
    if ($alarm1->wednesday == "true")
    $day1[] = "Mittwoch";
    if ($alarm1->thursday == "true")
    $day1[] = "Donerstag";
    if ($alarm1->friday == "true")
    $day1[] = "Freitag";
    if ($alarm1->saturday == "true")
    $day1[] = "Samstag";
    if ($alarm1->sunday == "true")
    $day1[] = "Sonntag";
    $time1 = $alarm1->time;


    }[/php]

    Und das Formula habe ich wie Folgt geändert:
    [code=php]<form action="alarm_clock.php" >
    <div class="layoutBox">
    <label class="alarmClockLabel" id="alarmClockPosition1" > Weker 1:
    <input type="submit" class="saveButton" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv1" value="<?php echo "$alarmAktiv1" ?>" >
    </label>
    <label class="labelRepead" > Widerholen:
    <input type="checkbox" class="checkBox" name="repeadAktiv1" value="<?php echo "$repeadAktiv1" ?>" >
    </label>
    <label class="labelDay" > Tag:
    <select name="day1" class="choiceBox" size="7" multiple value="<?php echo "$day1" ?>" >
    <option>Montag</option>
    <option>Dienstag</option>
    <option>Mittwoch</option>
    <option>Donerstag</option>
    <option>Freitag</option>
    <option>Samstag</option>
    <option>Sonntag</option>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time1" value="<?php echo "$time1" ?>" >
    </label>
    </label>
    </div>
    </form>[/php]

    Und die XML-Datei sit wie folgt aus:
    [code=php]
    <root>
    <alarm>
    <aktiv>true</aktiv>
    <repeat>false</repeat>
    <mode>standard</mode>
    <monday>true</monday>
    <tuesday>false</tuesday>
    <wednesday>false</wednesday>
    <thursday>false</thursday>
    <friday>false</friday>
    <saturday>false</saturday>
    <sunday>false</sunday>
    <time>01:52:00</time>
    </alarm>
    </root>[/php]

  • Huhey,

    day1 ist ein Array?
    Schaue mal was die Ausgabe von:

    [code=php]<?PHP
    die(var_dump($day1));

    ?>
    [/php]

    erzeugt.

    MfG;

    Einmal editiert, zuletzt von YellowDream14845 (28. April 2015 um 18:35)

  • Ok dan bekomme ich

    Code
    array(0) { }


    raus...

    Zum testen habe ich die Abfrage für Montag so geänder:

    PHP
    if ($alarm1->monday == "true")
    		echo "monday ist true";
    		$day1[] = "Montag";[/php]
    
    
    Dann bekomme ich dieses Ergebnis:
    [code]array(1) { [0]=> string(6) "Montag" }

    Um ehrlich zusein das verstehe ich nicht???:s

    Den fehler hab ich... die {} nach dem If habe ich vergessen... Neu:
    [code=php]if ($alarm1->monday == "true"){
    $day1[] = "Montag";
    }[/php]

    Ich glaube der List die XML nicht richtig aus....

    Aber beim Einlesen gibt es keine Probleme. Das mache ich so
    [code=php]$CONFIG_FILENAME = '/var/www/data/alarmClock.xml';
    //config.xml dateisystem rechte überprüfen
    if(!file_exists($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht finden!\n";
    exit(1);
    }
    if(!is_readable($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht lesen!\n";
    exit(2);
    }
    if(!is_writable($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht schreiben!\n";
    exit(3);
    }

    libxml_use_internal_errors(true);
    $xml = simplexml_load_file($CONFIG_FILENAME);
    if (!$xml) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht laden!\n";
    foreach(libxml_get_errors() as $error) {
    echo "\t", $error->message;
    }
    exit(4);
    }[/php]

    Einmal editiert, zuletzt von BlueDogi (28. April 2015 um 19:28)

  • 1.
    [code=php]
    <input type="checkbox" class="checkBox" name="alarmAktiv1" value="<?php echo $alarmAktiv1; ?>" >
    [/php]
    Die " um die PHP Variable raus.

    2.
    $alarm1->monday == "true"
    $alarm1->monday ist ein xml Objekt und kein String, int,, long oder bool. Ein Objekt !

    $xmlval = (string)$alarm1->monday; macht einen String aus dem Objekt.
    Alle xml Nodes sind Objekte !!!! Keine Werte

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (28. April 2015 um 19:35)


  • Zum testen habe ich die Abfrage für Montag so geänder:

    PHP
    if ($alarm1->monday == "true")
    		echo "monday ist true";
    		$day1[] = "Montag";[/php]
    
    
    Dann bekomme ich dieses Ergebnis:
    [code]array(1) { [0]=> string(6) "Montag" }


    Dein $day1 wird durchs [] zum Array.
    Sprich:
    [code=php]
    $day1[] = "Montag";
    Echo $day1; //Falsch, da als variable, nicht als Array angesprochen
    Echo $day1[0]; //Richtig, Ausgabe: "Montag"
    [/php]

    Wenn du nur $Day1 definieren willst, ohne Array, dann wärs so:
    [code=php]$day1 = "Montag";
    Echo $day1; //Ausgabe: "Montag"
    [/php]


    Viele grüße


    Die Formular Felder einfach mit $Name ansprechen ist übrigens höchst unschön und dürfte in neueren PHP versionen gar nicht mehr funktionieren..
    Schöner ist es dem Formular eine Methode zuzuweisen (POST oder GET).
    [code=php]<form action="" method='POST'>[/php]
    dein pfad zum Formularfile kannst du übrigens einfach weg lassen :)

    Die Formularfelder kannst du dann (bei Method='POST') mit
    [code=php]echo $_POST['Feldname'];[/php]
    ausgeben. (Bei Method='GET' wäre es $_GET['Feldname'])

    Außerdem kannst du nicht einfach davon ausgehen, dass die Variablen Existieren (das tun sie nämlich erst, wenn man das Formular mal abgeschickt hat!)
    Besser mit der 'isset' Funktion prüfen ob die Variable existiert und wenn ja, dann mit echo ausgeben.
    [code=php]if(isset($_POST['alarmAktiv1'])) {
    echo $_POST['alarmAktiv1'];
    }[/php]

    'Inline' im Formular sieht das dann so aus:
    [code=php]<input type="text" name="test1" value="<?php if(isset($_POST[test1'])) { echo $_POST['test1']; } ?>">[/php]

    um das ganze mit der isset abfrage noch etwas zu verschönen und optimieren kannst du dem 'Senden'-Button einfach einen namen geben und bei jedem Isset einfach abfragen, ob das Formular bereits gesendet wurde:
    [code=php]<input type="submit" class="saveButton" name="submit" value="Speichern" >
    <input type="text" name="test1" value="<?php if(isset($_POST['submit'])) { echo $_POST['test1']; } ?>">
    <input type="text" name="test2" value="<?php if(isset($_POST['submit'])) { echo $_POST['test2']; } ?>">
    [/php]

    Bei Checkboxen nicht 'value' benutzen, sondern checked="checked" definieren:
    [code=php]<input type="checkbox" class="checkBox" name="test1" <?php if(isset($_POST['test1'])) { echo 'checked="checked"'; } ?> >[/php]
    denn test1 gibt es nicht, wenn die checkbox nicht aktiviert ist.

    Dein Script würde mal quick & dirty optimiert mal so aus (Incl ein paar korrigierter Rechtschreibfehler :lol:)

    &quot;Erst anschauen wenn du verstanden hast was ich oben geschrieben hab ;)&quot;

    [code=php]<form action="" method='POST'>
    <div class="layoutBox">
    <label class="alarmClockLabel" id="alarmClockPosition1" > Wecker 1:
    <input type="submit" class="saveButton" name="submit" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv1" <?php if(isset($_POST['alarmAktiv1'])) { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelRepeat" > Wiederholen:
    <input type="checkbox" class="checkBox" name="repeatAktiv1" <?php if(isset($_POST['repeatAktiv1'])) { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelDay" > Tag:
    <select name="day1[]" class="choiceBox" size="7" multiple>
    <option <?php if(isset($_POST['submit']) && (in_array("Montag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Montag</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Dienstag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Dienstag</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Mittwoch", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Mittwoch</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Donnerstag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Donerstag</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Freitag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Freitag</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Samstag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Samstag</option>
    <option <?php if(isset($_POST['submit']) && (in_array("Sonntag", $_POST['day1']))) { echo 'selected="selected"'; } ?>>Sonntag</option>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time1" value="<?php if(isset($_POST['submit'])) { echo $_POST['time1']; } ?>">
    </label>
    </label>
    </div>
    </form> [/php]

    EDIT: Habe gerade erst gesehen, dass du gar nicht auf die POST geschichte raus willst sondert mit XML füllen.. ^^ dennoch mal als kleine Lehrstunde.. ;)

    Viele Grüße

  • Danke für eure Antworten aber ich habe es immernoch nicht Hinbekommen die XML vernünftig auszulesen...

    Hier ein Kurzes Bsp.
    [code=php]foreach ( $xml->alarm[0] as $alarm1 ) {
    $alarmAktiv1 =(string)$alarm1->aktiv;
    //...
    echo 'Alarm Aktiv '. $alarmAktiv1;[/php]

    Meine erwartung wäre an dieser Stelle ein "true"... Der Platz für die Variable ist aber leer.
    "Alarm Aktiv "
    ist alles was ich bekomme.

  • Deine Foreach ist falsch. Es müsste
    [code=php]foreach ( $xml->alarm as $alarm1 ) {[/php]
    heißen. (alarm ist keine array!)
    Somit ist die Foreach aber auch sinnlos.. ^^

    dein Formular sieht in meinem Probeaufbau so aus:
    [code=php]<form action="" method='POST'>
    <div class="layoutBox">
    <label class="alarmClockLabel" id="alarmClockPosition1" > Wecker 1:
    <input type="submit" class="saveButton" name="submit" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv1" <?php if((string)$xml->alarm->aktiv == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelRepeat" > Wiederholen:
    <input type="checkbox" class="checkBox" name="repeatAktiv1" <?php if((string)$xml->alarm->repeat == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelDay" > Tag:
    <select name="day1[]" class="choiceBox" size="7" multiple>
    <option <?php if((string)$xml->alarm->monday == "true") { echo 'selected="selected"'; } ?>>Montag</option>
    <option <?php if((string)$xml->alarm->tuesday == "true") { echo 'selected="selected"'; } ?>>Dienstag</option>
    <option <?php if((string)$xml->alarm->wednesday == "true") { echo 'selected="selected"'; } ?>>Mittwoch</option>
    <option <?php if((string)$xml->alarm->thursday == "true") { echo 'selected="selected"'; } ?>>Donerstag</option>
    <option <?php if((string)$xml->alarm->friday == "true") { echo 'selected="selected"'; } ?>>Freitag</option>
    <option <?php if((string)$xml->alarm->saturday == "true") { echo 'selected="selected"'; } ?>>Samstag</option>
    <option <?php if((string)$xml->alarm->sunday == "true") { echo 'selected="selected"'; } ?>>Sonntag</option>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time1" value="<?php echo (string)$xml->alarm->time; ?>">
    </label>
    </label>
    </div>
    </form> [/php]
    (Davor eben noch die XML füllen mit deinem code oben)
    Also OHNE Foreach!

  • Wobei ich jetzt die xml spec nicht genau kenne aber es könnte auch :

    Code
    $xml->root->alarm->monday


    sein. Root ist wohl der erste Node, alarm das erste Child .

    :s
    Da müsste ein xml-Spezi was zu sagen :helpnew: :D

    [code=php]
    <root>
    <alarm>
    <aktiv>true</aktiv>
    <repeat>false</repeat>
    <mode>standard</mode>
    <monday>true</monday>
    <tuesday>false</tuesday>
    <wednesday>false</wednesday>
    <thursday>false</thursday>
    <friday>false</friday>
    <saturday>false</saturday>
    <sunday>false</sunday>
    <time>01:52:00</time>
    </alarm>
    </root>[/php]

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Noch mal großes Danke an alle!

    Ich hab es jetzt am laufen. Eine Kleine unschönheit ist noch, dass nach dem ich gespeichert habe noch mal die Seite aktuallisirt werden muss. wär schön wenn das am ende des php skripts von alleine ginge.

  • Ich beschreib mal den Ablauf:
    1. Sete Aufrufen Werte aus der XML werden angezeigt.
    2. Werte ändern und in der XML Speichern.
    3. Es werden wieder die Werte von 1. angezeigt.
    4. Seite aktuallisieren.
    5. Die Werte werden nun Richtig angezeigt.

  • [code=php]<?php // ID 0 einstellen
    $id = 0;
    ?>
    <form action="alarm_clock.php" method='POST'>
    <div class="layoutBox1">
    <label class="alarmClockLabel" > Wecker 1:
    <input type="submit" class="saveButton" name="submit1" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv1" value="aktiv" <?php if((string)$xml->alarm[$id]->aktiv == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelRepeat" > Wiederholen:
    <input type="checkbox" class="checkBox" name="repeatAktiv1" value="aktiv" <?php if((string)$xml->alarm[$id]->repeat == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelDay" > Tag:
    <select name="day1[ ]" class="choiceBox" size="1" multiple>
    <option value="monday" <?php if((string)$xml->alarm[$id]->monday == "true") { echo 'selected="selected"'; } ?>>Montag</option>
    <option value="tuesday" <?php if((string)$xml->alarm[$id]->tuesday == "true") { echo 'selected="selected"'; } ?>>Dienstag</option>
    <option value="wednesday" <?php if((string)$xml->alarm[$id]->wednesday == "true") { echo 'selected="selected"'; } ?>>Mittwoch</option>
    <option value="thursday" <?php if((string)$xml->alarm[$id]->thursday == "true") { echo 'selected="selected"'; } ?>>Donerstag</option>
    <option value="friday" <?php if((string)$xml->alarm[$id]->friday == "true") { echo 'selected="selected"'; } ?>>Freitag</option>
    <option value="saturday" <?php if((string)$xml->alarm[$id]->saturday == "true") { echo 'selected="selected"'; } ?>>Samstag</option>
    <option value="sunday" <?php if((string)$xml->alarm[$id]->sunday == "true") { echo 'selected="selected"'; } ?>>Sonntag</option>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time1" value="<?php echo (string)$xml->alarm[$id]->time; ?>">
    </label>
    <label class="labelMode" > Modus:
    <select name="mode1" class="choiceBox" size="1" >
    <option value="standad" <?php if((string)$xml->alarm[$id]->mode == "standard") { echo 'selected="selected"'; } ?>>Standard</option>
    </select>
    </label>
    </label>
    </div>
    </form>

    //...

    <?php // XML-Datei beschreiben.

    if ($_POST['submit1'] == "Speichern"){$id = 0;}
    if ($_POST['submit2'] == "Speichern"){$id = 1;}
    if ($_POST['submit3'] == "Speichern"){$id = 2;}
    if ($_POST['submit4'] == "Speichern"){$id = 3;}
    if ($_POST['submit5'] == "Speichern"){$id = 4;}
    if ($_POST['submit6'] == "Speichern"){$id = 5;}
    if ($_POST['submit7'] == "Speichern"){$id = 6;}

    if ($_POST['submit1'] == "Speichern" OR $_POST['submit2'] == "Speichern" OR $_POST['submit3'] == "Speichern" OR $_POST['submit4'] == "Speichern" OR $_POST['submit5'] == "Speichern" OR $_POST['submit6'] == "Speichern" OR $_POST['submit7'] == "Speichern") {
    if ($_POST['alarmAktiv1'] == "aktiv" ){
    $xml->alarm[$id]->aktiv = "true";
    }
    else {
    $xml->alarm[$id]->aktiv = "false";
    }
    if ($_POST['repeatAktiv1'] == "aktiv" ){
    $xml->alarm[$id]->repeat = "true";
    }
    else {
    $xml->alarm[$id]->repeat = "false";
    }

    for ($zi = 0;$zi < count($_POST['day1']); $zi++){
    $wert = $wert.$_POST['day1'][$zi].",";

    if ($_POST['day1'][$zi] == "monday"){$monday = true;}
    if ($_POST['day1'][$zi] == "tuesday"){$tuesday = true;}
    if ($_POST['day1'][$zi] == "wednesday"){$wednesday = true;}
    if ($_POST['day1'][$zi] == "thursday"){$thursday = true;}
    if ($_POST['day1'][$zi] == "friday"){$friday = true;}
    if ($_POST['day1'][$zi] == "saturday"){$saturday = true;}
    if ($_POST['day1'][$zi] == "sunday"){$sunday = true;}
    }
    if ($monday == true){
    $xml->alarm[$id]->monday = "true";
    }
    else {
    $xml->alarm[$id]->monday = "false";
    }
    if ($tuesday == true){
    $xml->alarm[$id]->tuesday = "true";
    }
    else {
    $xml->alarm[$id]->tuesday = "false";
    }
    if ($wednesday == true){
    $xml->alarm[$id]->wednesday = "true";
    }
    else {
    $xml->alarm[$id]->wednesday = "false";
    }
    if ($thursday == true){
    $xml->alarm[$id]->thursday = "true";
    }
    else {
    $xml->alarm[$id]->thursday = "false";
    }
    if ($friday == true){
    $xml->alarm[$id]->friday = "true";
    }
    else {
    $xml->alarm[$id]->friday = "false";
    }
    if ($saturday == true){
    $xml->alarm[$id]->saturday = "true";
    }
    else {
    $xml->alarm[$id]->saturday = "false";
    }
    if ($sunday == true){
    $xml->alarm[$id]->sunday = "true";
    }
    else {
    $xml->alarm[$id]->sunday = "false";
    }
    $xml->alarm[$id]->time = $_POST['time1'];

    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;
    $dom->loadXML($xml->asXML());
    $dom->save($CONFIG_FILENAME);

    // Ich glaube hier müsste dan die Seite neu geladen werden.

    }
    ?>[/php]

    Danke für deine Hilfe!

  • So,

    habe dein komplettes Script nochmal überarbeitet.
    Wenn du die gespeicherten Werte gleich ausgeben willst und nicht erst nach dem neuladen der seite, musst du einfach die Werte VOR dem Formular speichern, nicht erst danach!

    Tu dir selbst aber den Gefallen und optimiere dein Script gemäß meinem nochmal..
    Wie gesagt, da sind einige fehler die defintiv nicht laufen sollten..
    Warum es trotzdem geht, steht auf einem anderen Blatt und kann ich mir nicht erklären.. gut ist das aber auf keinen fall!!

    Du kannst obkekte Dynamisch ansprechen indem du
    [code=php]$xml->{$variable}[/php]
    benutzt.
    In deinem Beispiel mit Alarm wäre das:
    [code=php]$xml->{"alarm".$id}[/php]
    Alles andere ist wie gesagt falsch und dürfte gar nicht funktionieren! Unbedingt ändern!


    Das mit deiner ID habe ich durch ein unsichtbares Textfeld gelöst
    [code=php]<input type="hidden" name="id" value="<?php echo $id;?>" >[/php]
    (Ich schätze mal du willst mehrere Formulare auf einer Seite anzeigen lassen!?)

    Das optimierte Script:
    [code=php]<?php
    $id = 1;
    $days = array(
    "monday" => "Montag",
    "tuesday" => "Dienstag",
    "wednesday" => "Mittwoch",
    "thursday" => "Donnerstag",
    "friday" => "Freitag",
    "saturday" => "Samstag",
    "sunday" => "Sonntag");

    $CONFIG_FILENAME = 'test1.xml';
    //config.xml dateisystem rechte überprüfen
    if(!file_exists($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht finden!\n";
    exit(1);
    }
    if(!is_readable($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht lesen!\n";
    exit(2);
    }
    if(!is_writable($CONFIG_FILENAME)) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht schreiben!\n";
    exit(3);
    }

    libxml_use_internal_errors(true);
    $xml = simplexml_load_file($CONFIG_FILENAME);
    if (!$xml) {
    echo "Kann die Konfiguration (".$CONFIG_FILENAME.") nicht laden!\n";
    foreach(libxml_get_errors() as $error) {
    echo "\t", $error->message;
    }
    exit(4);
    }

    //xml schreiben
    if(isset($_POST['submit']))
    {
    if(isset($_POST['alarmAktiv'])) {
    $xml->{"alarm".$_POST['id']}->aktiv = "true";
    }
    else {
    $xml->{"alarm".$_POST['id']}->aktiv = "false";
    }

    if (isset($_POST['repeatAktiv'])) {
    $xml->{"alarm".$_POST['id']}->repeat = "true";
    }
    else {
    $xml->{"alarm".$_POST['id']}->repeat = "false";
    }

    foreach($days as $key => $value) {
    if(in_array($key, $_POST['day']))
    {
    $xml->{"alarm".$_POST['id']}->{$value} = "true";
    }
    else {
    $xml->{"alarm".$_POST['id']}->{$value} = "false";
    }
    }

    $xml->{"alarm".$_POST['id']}->time = $_POST['time'];

    $xml->{"alarm".$_POST['id']}->mode = $_POST['mode'];

    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;
    $dom->loadXML($xml->asXML());
    $dom->save($CONFIG_FILENAME);
    }
    ?>
    <form action="" method='POST'>
    <div class="layoutBox">
    <label class="alarmClockLabel" > Wecker 1:
    <input type="hidden" name="id" value="<?php echo $id;?>" >
    <input type="submit" class="saveButton" name="submit" value="Speichern" >
    <label class="labelAktiv" > Aktiv:
    <input type="checkbox" class="checkBox" name="alarmAktiv" <?php if((string)$xml->{"alarm".$id}->aktiv == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelRepeat" > Wiederholen:
    <input type="checkbox" class="checkBox" name="repeatAktiv" <?php if((string)$xml->{"alarm".$id}->repeat == "true") { echo 'checked="checked"'; } ?> >
    </label>
    <label class="labelDay" > Tag:
    <select name="day[]" class="choiceBox" multiple>
    <?php
    foreach($days as $key => $value)
    {
    echo '<option value="'.$key.'" ';
    if((string)$xml->{"alarm".$id}->{$value} == "true") {
    echo 'selected="selected"';
    }
    echo '>'.$value.'</option>\r\n';
    }
    ?>
    </select>
    </label>
    <label class="labelTime" > Zeit:
    <input type="time" class="timeBox" name="time" value="<?php echo (string)$xml->{"alarm".$id}->time; ?>">
    </label>
    <label class="labelMode" > Modus:
    <select name="mode" class="choiceBox" size="1" >
    <option value="standad" <?php if((string)$xml->{"alarm".$id}->mode == "standard") { echo 'selected="selected"'; } ?>>Standard</option>
    </select>
    </label>
    </label>
    </div>
    </form>[/php]

    Habe außerdem noch die Dropdowns mit foreach schleifen optimiert (die anzeige, sowie das schreiben der XML)

    Viele Grüße

    EDIT:
    Wenn du fertig bist poste dein neues Script nochmal

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!