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; 

?> 

Всякий раз, когда я эхо переключаю переключатель, я продолжаю получать значение. вместо того, чтобы получать значение No, когда я передаю его в переменную post, я все равно получаю значение YES. и моя информация видна как видимая в моей базе данных. Я не знаю, что я делаю неправильно здесь. пожалуйста, кто-нибудь знает, что я должен делать?PHP не возвращает неправильное значение переключателя от 0 до 1

+0

Так ваш вопрос повторить значение $ _POST [ "видимый"]? –

+0

попробуйте использовать if (! Isset ($ _ POST ['visible'])) $ visible = intval ($ _ POST ['visible']); –

ответ

0

Я думаю, что вы неправильно поняли, что is_numeric. Он просто проверяет, является ли значение числовым. 0 и 1 оба являются числовыми.

Вы должны вместо этого проверить само значение, например.

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

или, возможно,

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

Если вы хотите строку, попробуйте (после того, как выше)

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

+0

Это не сработает, потому что вы сравниваете строку и int –

+0

@LucaJung '==' будет автоматически конвертировать между двумя. Если бы я использовал '===', тогда это действительно не сработало. Пожалуйста, прочитайте http://php.net/manual/en/language.operators.comparison.php – rjdown

+0

о, извините, ваше право;) –

0

Привет Его, потому что вы печатаете результат is_numeric(); , Который 0/1 только

Попробуйте

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


echo $visible; 

или просто

echo $_POST['visible']; 
Смежные вопросы