2016-06-01 11 views
5

Mi scuso se questa domanda è stata duplicata, tuttavia non ho trovato una risposta ovvia alla mia domanda. Sono un novizio completo con , sii gentile! Quando carico il seguente codice, sembra che venga eseguito if(isset($_POST['test'])) anche se non ho premuto il pulsante "test". Voglio solo che il codice venga eseguito quando premo il pulsante "test". Come posso risolvere questo?

<?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

è perché si è impostato il campo del valore di input di testo – Vickrant

+0

il codice all'interno "if (isset ($ _ POST [ 'update'])) {" e "if (isset ($ _ POST [ 'test'])) {"non verrà eseguito fino a quando non si preme il pulsante" aggiorna "o" test ", è necessario definire $ _POST ['aggiornamento'] è impostato o meno come variabile, quindi è necessario utilizzare (isset) –

+0

È la tua risposta è comunque corretta !! L'hai provato? – prava

risposta

4

Si prega di provare questo

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

Questo dovrebbe funzionare (Y) – prava

+1

il suo codice funziona correttamente, nessuna media di se (isset ($ _ POST ['update']) && $ _POST ['update'] == "Update") { –

+0

@Manish Jesani Il tuo suggerimento ha risolto il problema con il valore aggiornato al caricamento del modulo. Tuttavia questo ha creato un altro problema che il valore non viene visualizzato al caricamento del modulo (solo dopo il clic del pulsante). Come posso risolvere questo problema o esiste un modo migliore del mio attuale metodo? –

1

Nel tuo caso, si dovrebbe usare !empty invece di isset.

Ogni volta che viene presentata sotto forma, nome tutti gli attributi del modulo saranno ricevuti in $ _POST array. Non importa che sia impostato o meno.

Si può fare di filtrazione utilizzando ! Vuoto perché controllerà set + ha valore. Mentre il controllo isset è il solo impostato.

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

Suggerimento: - Lei ha scritto echo @$sum; in forma. Non nascondere mai i tuoi errori usando @. Invece di fare questo, si dovrebbe ON error_reporting in modalità di sviluppo.

Si dovrebbe scrivere tale dichiarazione come di seguito.

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

il tuo suggerimento di usare piuttosto "! Empty" ha comunque portato a $ somma aggiungendo +1 ogni volta che il modulo è stato ricaricato. Come ho menzionato nel mio post originale, sono nuovo di PHP, quindi apprezzerei davvero la chiarezza sul tuo suggerimento di non nascondere i miei errori. Cosa intendi con questo? –

+0

@ è usato per nascondere gli errori. Basta rimuoverlo e ON il tuo errore di segnalazione. Ti mostrerà avviso. –

+0

Grazie per il suggerimento @Ravi Hirani –