2016-06-01 15 views
5

Entschuldigung, wenn diese Frage dupliziert ist, habe ich jedoch keine offensichtliche Antwort auf meine Frage gefunden. Ich bin ein kompletter Neuling mit , sei nett! Wenn ich den folgenden Code einlege, scheint es if(isset($_POST['test'])) zu laufen, obwohl ich die Taste "test" nicht gedrückt habe. Ich möchte nur, dass der Code ausgeführt wird, wenn ich die Taste "test" drücke. Wie kann ich das beheben?

<?php 
    if(isset($_POST['update'])) { 
     $content=simplexml_load_file("books.xml"); 
     $value=$content->book->price; 
     $sum=$content->book->price; 
    } 

    if(isset($_POST['test'])) { 
     $content=simplexml_load_file("books.xml"); 
     $value=$content->book->price; 
     $content->book->price = $value + 1.0; 
     $content->asXML("books.xml"); 
     $sum=$content->book->price; 
    } 
?> 

<body> 
    <form method="post"> 
     <input type="checkbox" id="i1check1" onchange="toggleDisabled(this.checked)"> Alarm 01 
     <input type="text" id="i1text1" name="i1" size="80" maxlength="128" value="<?php echo @$sum;?>"/> 
     <input type="submit" id="i1btn1" name="update" value="Update"/> 
     <input type="submit" id="i1btn2" name="test" value="Test"/> 
    </form> 

    <script> 
     function toggleDisabled(_checked) { 
      document.getElementById('i1text1').disabled = _checked ? false : true; 
      document.getElementById('i1btn1').disabled = _checked ? false : true; 
     } 
    </script> 
</body> 
+0

sein, weil Sie den Wert Feld Texteingaben – Vickrant

+0

Ihren Code in "if (isset ($ _ POST [ 'update'])) {" eingestellt haben und „if (isset ($ _ POST [ 'test'])) {"läuft nicht, bis Sie nicht" update "oder" test "drücken, Sie müssen $ _POST ['update'] setzen oder nicht als Variable setzen, so dass Sie (isset) –

+0

Is verwenden müssen Deine Antwort ist trotzdem korrekt !! Hast du es getestet? – prava

Antwort

4

Bitte Versuchen Sie diese

if(isset($_POST['update']) && $_POST['update'] == "Update"){ 
    $content=simplexml_load_file("books.xml"); 
    $value=$content->book->price; 
    $sum=$content->book->price; 
} 

if(isset($_POST['test']) && $_POST['test'] == "Test"){ 
    $content=simplexml_load_file("books.xml"); 
    $value=$content->book->price; 
    $content->book->price = $value + 1.0; 
    $content->asXML("books.xml"); 
    $sum=$content->book->price; 
} 
+0

verfügbar ist. Dies sollte funktionieren (Y) – prava

+1

sein Code funktioniert gut, kein Mittelwert if (isset ($ _ POST ['update']) && $ _POST ['update'] == "Aktualisieren") { –

+0

@Manish Jesani Ihr Vorschlag löste mein Problem mit dem Wert, der beim Laden des Formulars aktualisiert wurde. Dies hat jedoch zu einem weiteren Problem geführt, dass der Wert beim Laden des Formulars nicht angezeigt wird (nur nach dem Klicken auf die Schaltfläche). Wie kann ich das beheben, oder gibt es einen besseren Weg als meine derzeitige Methode? –

1

In Ihrem Fall Sie !empty statt isset verwenden sollten.

Jedes Mal, wenn Formular abgeschickt wird, werden alle Namen Attribute des Formulars wird in $ _POST Array empfangen werden. Es spielt keine Rolle, ob es gesetzt ist oder nicht.

Sie können Filtration tun mit ! Leer weil es set + hat Wert überprüfen. Während der isset-Prüfung nur gesetzt.

if(!empty($_POST['update'])){ // !empty instead of isset 

    $content=simplexml_load_file("books.xml"); 
    $value=$content->book->price; 
    $sum=$content->book->price; 

} 
if(!empty($_POST['test'])){ // !empty instead of isset 

    $content=simplexml_load_file("books.xml"); 
    $value=$content->book->price; 
    $content->book->price = $value + 1.0; 
    $content->asXML("books.xml"); 
    $sum=$content->book->price; 
} 

Vorschlag: - Sie haben echo @$sum; in Form geschrieben. Verstecken Sie niemals Ihre Fehler mit @. Anstatt dies zu tun, sollten Sie ON error_reporting im Entwicklungsmodus.

Sie sollten diese Aussage wie folgt schreiben.

echo empty($sum) ? '' : $sum; // ternary operator 
+0

Ihr Vorschlag, "! Empty" zu verwenden, führte immer noch dazu, dass $ sum jedes Mal, wenn das Formular neu geladen wurde, +1 addierte. Wie ich in meinem ursprünglichen Beitrag erwähnt habe, bin ich neu in PHP, daher würde ich wirklich Klarheit über Ihren Vorschlag haben, meine Fehler nicht zu verbergen. Was meinst du damit? –

+0

@ wird verwendet, um Fehler zu verbergen. Entfernen Sie es einfach und ON Ihre Fehlermeldung. Es wird dir auffallen. –

+0

Danke für den Tipp @Ravi Hirani –