2016-07-12 9 views
1

Ich versuche herauszufinden, warum meine elseif-Anweisung das else zurückgibt, wenn $ name < 5 true, auch wenn ich Felder größer als 5 eintrage, sollte es "Großartig" sein, wenn alle falsch sind! Ich habe die $ name und $ Punktzahl var ‚‘, weil im dies in den HTML-Werten, die ich nicht wollen, ist hierelse wenn true wenn false zurückgegeben

<!DOCTYPE html> 
<?php 



$name = '' ; 
$score = '' ; 
$message = ''; 

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

$name = $_POST["name"]; 
$score = $_POST["score"]; 

if (!$name || !$score) { 

    $message = "Please fill in both name and score!"; 

} elseif ($name < 5) { 

    $message = "name must be at least 5 characters"; 


} elseif ($score < 5) { 

    $message = "score must be at least 5 characters"; 

} else { 

    echo 'Great'; 

} 

} 



?> 



<h1>Enter Your info </h1> 
<hr> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
    Name: <input type="text" name="name" placeholder="Enter Name" value="<? php echo $name; ?>"> <br> 
    Score: <input type="text" name="score" placeholder="Enter Score" value=" <?php echo $score; ?>"> 
    <hr> 
    <input type="submit" name="submit" value="add"> 

</form> 
<p class="error"> 
    <?php echo $message ; ?> 
</p> 




</body> 
</html> 
+0

zu einem gemacht werden Wo sonst ist, wenn? –

+3

Du meinst 'strlen ($ name) <5'? –

+0

@u_mulder x-file closed;) – JustOnUnderMillions

Antwort

1

Das Problem php dank undefiniert, neu Fehler:

$name < 5 
$score < 5 

Sie sind beide Strings und die Ausgabe wäre unerwünscht. Um die Längen zu überprüfen, ändern sie:

strlen($name) < 5 
intval($score) < 5 

Und wie in den Kommentaren erwähnt, das ist ein Irrtum:

value="<? php 

Es sollte keine Räume.

+2

Und beachten Sie auch ihn 'value =“ diesen Teil JustOnUnderMillions

+1

gelöst dank –

+0

Trolling Whitespaces –

0

Visit (How to get int instead string from form?) im Grunde Sie einen String mit einer Zahl zu vergleichen, es sollte int

$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0); 
+0

Das ist auch falsch.Es sollte Länge sein. –

Verwandte Themen