2017-05-06 1 views
0

Ich habe ein kleines Problem, meine Submit-Taste zu bekommen, um den Wert zu ändern, wenn die PHP-Variable nicht leer ist. Die Art und Weise, wie ich es eingerichtet habe, ist, dass wenn der Knopf "GO" gedrückt wird, wird der Wert des Textfelds auf "1234567890" gesetzt, was bedeutet, dass es nicht länger leer ist. Jetzt, wenn die Seite das erste Mal geladen wird, ist das Textfeld leer und die Schaltfläche sollte "GO" sagen. Sobald das Textfeld gedrückt wird, ändert sich der Wert und die Schaltfläche sollte nun "REFRESH" sagen. Ich gehe hier falsch?Button-Wert ändert sich nicht, wenn das Textfeld nicht leer ist

Danke.

PHP

<? 
if (!$HostKey){ 
    $HostBtn = 'GO'; 
} 
else{ 
    $HostBtn = 'REFRESH'; 
} 

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

    if (isset($_POST['Go'])) { 

      $HostKey = "123567890"; 

     } 
    } 
} 
?> 

HTML

<form action="Home.php" method="post"> 
    <p><strong>HOST:</strong> 
    <input name="Host" id="Host" type="text" value="<? echo $HostKey; ?>" maxlength="10" disabled> 
    <input name="Go" id="Go" type="submit" value="<? echo $HostBtn; ?>"></p> 
</form> 
+0

Wie schlagen Sie vor, dass ich dieses Problem bekämpfe? –

Antwort

0

Ihr Problem ist eine logische Eins, wie $HostKey definiert sich nicht vor Sie tun Ihr Scheck - so $HostKey ist null. Sie definieren es nach das. Da die Variable effektiv null ist, ist die Bedingung immer wahr, wenn Sie den Nichtoperator ! anwenden.

Sie sollten Ihren Code umgestalten, um zu überprüfen, ob das Formular gesendet wurde, und stattdessen den Wert der Variablen definieren. Alles was Sie brauchen in PHP

$HostBtn = isset($_POST['Go']) ? 'REFRESH' : 'GO'; 
$HostKey = isset($_POST['Go']) ? 123567890 : ''; 

wäre Dies würde auch fix die "Undefined variable ..." Hinweise, die Sie sollten bekommen können, wenn Sie Fehler-Reporting aktiviert,

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

Welche sollte während der Entwicklung aktiviert werden. In einer Live-Umgebung sollten Sie die tatsächlichen Fehler zwar nicht anzeigen, aber es ist in Ordnung, dies in der Entwicklung zu tun.

+0

Danke für Sie Hilfe und Klärung dieses Problem, das könnte ich sein, aber vermissen Sie eine Klammer 'isset ($ _ POST ['Go']' –

+0

Ah, das ist dumm von mir - ich werde es bearbeiten, danke. – Qirel

0

Sie etwas versuchen sollten, wie:

<? 

    if (isset($_POST['Go'])) { 

      $HostKey = "123567890"; 
      $HostBtn= "REFRESH"; 

}else{ 
     $HostKey=""; 
     $HostBtn="GO"; 
} 


?> 
Verwandte Themen