Как напечатать несколько вариантов флажков PHP - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь напечатать несколько вариантов флажков.Я хотел бы, чтобы, когда пользователь установил флажок или несколько, форма показала, что выбрал пользователь.Например, если пользователь проверяет shoe1, shoe2, shoe3, он напечатает shoe1, shoe2, shoe3.Если пользователь проверяет shoe1, shoe2, он напечатает shoe1 и shoe2.Если пользователь проверяет shoe1, он будет печатать только shoe1 и т. Д.

Я пытался использовать операторы if, elseif, else, но я думаю, что моя логика испорчена, потому что они не работают каждый раз, когда я пытаюсь запуститьЭто.

Я попытался запустить этот код, и он не печатал:

if(($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['nike'] == 'nike') && ($_POST['adidas'] == 'adidas') && ($_POST['rl'] == 'rl') && ($_POST['vans'] == 'vans') &&
($_POST['ck'] == 'ck') && ($_POST['kc'] == 'kc') && ($_POST['rband1'] == 'rband1') && ($_POST['rband2'] == 'rband2')) {

    echo "<strong>Brands chosen:</strong> " . $_POST['nike'] . ", " . $_POST['adidas'] . ", " . $_POST['rl'] . ", " . $_POST['vans'] . ", " . $_POST['ck'] . ", " . $_POST['kc'] . ", " . $_POST['rband1'] . ", " . $_POST['rband2'] . "<br /> <br />";
}

Вот мой код:

What clothing brands do you like?<br />Nike<input type="checkbox" name="nike" value="nike"
<?php
if ($_POST['nike'] == 'nike') {
    echo "checked";
}
?>
/>
Adidas<input type="checkbox" name="adidas" value="adidas"
<?php
if ($_POST['adidas'] == 'adidas') {
    echo "checked";
}
?>
/>
Polo Ralph Lauren<input type="checkbox" name="rl" value="rl"
<?php
if ($_POST['rl'] == 'rl') {
    echo "checked";
}
?>
/>
Vans<input type="checkbox" name="vans" value="vans"
<?php
if ($_POST['vans'] == 'vans') {
    echo "checked";
}
?>
/>
<br />
Calvin Klein<input type="checkbox" name="ck" value="ck"
<?php
if ($_POST['ck'] == 'ck') {
    echo "checked";
}
?>
/>
Kenneth Cole<input type="checkbox" name="kc" value="kc"
<?php
if ($_POST['kc'] == 'kc') {
    echo "checked";
}
?>
/>
Rock Brand 1<input type="checkbox" name="rband1" value="rband1"
<?php
if ($_POST['rband1'] == 'rband1') {
    echo "checked";
}
?>
/>
Rock Brand 2<input type="checkbox" name="rband2" value="rband2"
<?php
if ($_POST['rband2'] == 'rband2') {
    echo "checked";
}
?>
/> 

Я бы хотел, чтобы пользователь увидел, чтоони проверили, так что это удобно для пользователя.Я также не слишком уверен, если вы поместите все эти переменные в один класс, вам будет проще.

1 Ответ

0 голосов
/ 18 февраля 2019

Действительно простая демонстрация - основанная на другом подходе (подход, упомянутый в комментарии выше), использующий одно имя для группы флажков, но названный с использованием синтаксиса массива (то есть: name[]), чтобы упростить намного более простую проверку предоставленных данных.,Он также использует PHP для генерации всего существенного html с использованием простого массива для определения макета. Это означает, что новые разделы и / или марки могут быть добавлены очень легко.

<code><?php
    $sections=array(
        'premier'   =>  array('nike','adidas','polo ralph lauren','vans'),
        'excellent' =>  array('calvin klein','kenneth cole','rock brand 1','rock brand 2'),
        /* easy to extend */
        'good'  =>  array('levi','wrangler','pierre cardin','north face','superdry'),
        'average'   =>  array('benetton','robe di kappa','leathernun','burton','animal')
    );
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title>form checkboxes</title>
        <style>
            body *{box-sizing:border-box;padding:0;margin:0;font-family:cursive;}
            fieldset{width:80%;margin:0.25rem auto;padding:1rem;border:1px solid rgba(133,133,133,0.1)}
            label{display:block;width:80%;padding:0.25rem;margin:auto;float:none;}
            label:before{content:attr(for);text-transform:capitalize;}
            [type='checkbox']{float:right}
            legend{padding:0.5rem;width:20%;border:1px solid  rgba(133,133,133,0.1); background:whitesmoke;text-transform:capitalize}

        </style>
    </head>
    <body>
        <form method='post'>
            <h1>What clothing brands do you like?</h1>
            <?php
                /* iterate through the config array and generate a section for each array */
                foreach( $sections as $key => $arr ){
                    echo "<fieldset id='$key'><legend>$key</legend>";

                    /* iterate through each child array of makes */
                    foreach( $arr as $name ){

                        /* was the checkbox checked? */
                        $checked = !empty( $_POST['make'] ) && in_array( $name, $_POST['make'] ) ? 'checked' : '';

                        /* print the label/checkbox */
                        printf(
                            '<label for="%s"><input type="checkbox" name="make[]" value="%s" %s/></label>',
                            $name,
                            $name,
                            $checked
                        );
                    }
                    echo "</fieldset>";
                }
            ?>
            <input type='submit' />
            <?php
                if( $_SERVER['REQUEST_METHOD']=='POST' )printf('<pre>%s
', print_r ($ _ POST, true));?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...