2016-07-31 4 views
1
<td id="page"> 
       <h2>Add Subject</h2> 
       <form action="create_subject.php" method="post"> 
        <p>Subject name: <input type="text" name="menu_name" value="" id="menu-name"></p> 

        <p>Position: 
         <select name="position"> 

         <?php 
         $subject_set = get_all_subject(); 
         $subject_count = mysql_num_rows($subject_set); 
         for ($i=1; $i <= $subject_count+1 ; $i++) { 
          echo "<option value=\"$i\">$i</option>"; 
         } 

         ?> 

         </select> 
        </p> 

        <p>Visible: 
        <input type="radio" name="visible" value="0" >No 
        <input type="radio" name="visible" value="1" >Yes 
        </p> 

        <input type="submit" name="submit" value="Add subject" > 
       </form> 



<?php 

$menu_name = mysql_slash_checker($_POST['menu_name']); 
$position = mysql_slash_checker($_POST['position']); 
$visible = is_numeric($_POST['visible']); 


echo $visible; 

?> 

Immer wenn ich den Radiobutton stimme, bekomme ich den Wert. anstatt den Wert von No zu erhalten, wenn ich es in die Post-Variable übergebe, bekomme ich immer den Wert von YES. und meine Informationen werden als sichtbar in meiner Datenbank gesehen. Ich weiß nicht, was ich hier falsch mache. bitte jemand haben eine ahnung, was ich tun sollte?PHP sendet keinen falschen Radio Button Wert von 0 bis 1 zurück

+0

So Ihre Frage ist der Wert von $ _POST [ "sichtbar"] Echo? –

+0

versuche, if (! Isset ($ _ POST ['visible'])) $ sichtbar = intval ($ _ POST ['visible']); –

Antwort

0

Ich denke, Sie haben missverstanden, was is_numeric tut. Es prüft einfach, ob der Wert numerisch ist. 0 und 1 sind beide numerisch.

Sie sollten stattdessen den Wert selbst überprüfen, z.

$visible = ($_POST['visible'] == 1 ? true : false);

oder möglicherweise

$visible = (bool) $_POST['visible'];

Wenn Sie eine Zeichenfolge, versuchen Sie (nach dem oben)

echo $visible ? 'visible' : 'not visible';

+0

Dies würde nicht funktionieren, weil Sie eine Zeichenfolge vergleichen und eine int –

+0

@LucaJung '==' wird automatisch zwischen den beiden konvertieren. Wenn ich '===' verwenden würde, würde es in der Tat nicht funktionieren. Bitte lesen Sie http://php.net/manual/en/language.operators.comparison.php – rjdown

+0

oh sorry, Ihr Recht;) –

0

Hallo Sein, weil Sie drucken Ergebnis is_numeric(); . Welches ist 0/1 nur

Try this

$visible = is_numeric($_POST['visible']) ? $_POST['visible'] : ''; 


echo $visible; 

oder einfach

echo $_POST['visible'];