невозможно получить значение текстового поля с помощью соответствующих флажков.пожалуйста помоги - PullRequest
0 голосов
/ 22 января 2012

У меня есть сомнения.У меня есть 3 текстовых поля, и у каждого есть флажки рядом с ним.Я хочу отображать значения только тех текстовых полей, чьи соответствующие флажки нажаты.Ниже приведены прикрепленные коды HTML и PHP:

<html>
    <head>
    </head>
        <body>
            <form name="f" method="post" action="4.php">
                <table>
                  <tr>
                    <th> Facility </th> 
                  </tr>
                  <tr>
                    <td><input type="text" name="a1" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Hostel"></td>
                  </tr> 
                  <tr>  
                    <td><input type="text" name="b1" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Transport"></td>
                  </tr> 
                  <tr>
                    <td><input type="text" name="c1" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Food"></td>
                  </tr> 
                  <tr>
                    <td colspan="3"><input type="submit" value="submit" /></td>
                  </tr>
                 </table>   
               </form>
          </body>
</html>

и ниже часть PHP.

<?php
    $a=$_POST['a1'];
    $b=$_POST['b1'];
    $c=$_POST['c1'];

    $facilityArray = $_POST['facility'];
    $facility = "";
    if(count($facilityArray) > 0)
    {
        foreach($facilityArray as $fac)
        {
            $facility .= " " . $fac;
        }
    }

    echo $facility; echo "<br>"; 
    echo $a; echo "<br>";
    echo $b; echo "<br>";
    echo $c;
?>

С помощью следующих кодов я могу отобразить все значения отмеченныхфлажки.Я также могу отображать значения всех текстовых полей.Но на самом деле я хочу отображать значения только тех текстовых полей, чьи соответствующие флажки нажаты.Я знаю, что это может быть очень простой вопрос, но, пожалуйста, помогите мне расти на PHP.Заранее спасибо ...: (

1 Ответ

1 голос
/ 22 января 2012

Ваши текстовые поля также должны быть в массиве для достижения этой цели.

Для этого измените строки ввода следующим образом:

<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>

С php вы будете получать размещенные текстовые поля в виде:

$textbox=$_POST['textboxes'];

Затем вы должны пройти через массив флажков и, если соответствующий флажок «включен» (щелкнул), отобразить значение текстовых полей. Для этого вам также понадобится счетчик, чтобы убедиться, что вы используете один и тот же индекс массива для флажков и текстовых полей:

 if(count($facilityArray) > 0)
{
    $i = 0;
    foreach($facilityArray as $fac)
    {
        if($fac == "on")
        {
            echo $textbox[$i] . "</br>";
        }
        $i ++;
    }
}

Я также добавил имя к кнопке отправки, чтобы вы проверяли форму только после ее отправки. Ваша страница должна выглядеть примерно так:

        <?php
    if(isset($_POST['submit']))
    {
        $textbox=$_POST['textboxes'];

        $facilityArray = $_POST['facility'];

        if(count($facilityArray) > 0)
        {
            $i = 0;
            foreach($facilityArray as $fac)
            {
                if($fac == "on")
                {
                    echo $textbox[$i] . "</br>";
                }
                $i ++;
            }
        }

    }
    ?>
    <form name="f" method="post" action="4.php">


        <table>
                      <tr>
                        <th> Facility </th> 
                      </tr>
                      <tr>
                        <td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
                      </tr> 
                      <tr>  
                        <td><input type="text" name="textboxes[]" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
                      </tr> 
                      <tr>
                        <td><input type="text" name="textboxes[]" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
                      </tr> 
                      <tr>
                        <td colspan="3"><input name="submit" type="submit" value="submit" /></td>
                      </tr>
        </table>
    </form>

UPDATE:

Чтобы убедиться, что переменная $ _POST существует, прежде чем присваивать ее переменной, мы используем isset (). В вашем случае просто обновите сегмент php:

<?php
    if(isset($_POST['submit']))
    {
        if(isset($_POST['textboxes']))
        {
            $textbox=$_POST['textboxes'];

            if(isset($_POST['facility']))
            {
                $facilityArray = $_POST['facility'];

                if(count($facilityArray) > 0)
                {
                    $i = 0;
                    foreach($facilityArray as $fac)
                    {
                        if($fac == "on")
                        {
                            echo $textbox[$i] . "</br>";
                        }
                        $i ++;
                    }
                }
            }
        }

    }
?>

Где единственными изменениями являются добавление еще двух операторов if, которые принимают логический флаг из функции isset () в зависимости от того, была ли переменная $ _POST опубликована успешно

if(isset($_POST['textboxes']))

И

if(isset($_POST['facility']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...