Сделать массив из формы флажка

Мы с моим другом создаем веб-сайт, который собирает новости, основанные на ваших интересах. Есть ли и простой способ взять данные флажка и сделать массив из выбранных флажков? Вот наша форма

<form action="signup.php" method="POST">
    Name: <input type="text" name="name" /> <br />
    Username: <input type="text" name="username"> <br />
    Password: <input type="password" name="pwd" /> <br />
    Email: <input type="text" name="email" /> <br />

    <p>By filling out this we will be able to find news articles that will interest you</p>        <br />
    Politics<input type="checkbox" name="interest[]" value="Politics" /> <br />
    Entertainment<input type="checkbox" name="interest[]" value="Entertainment" /> <br />
    Tech <input type="checkbox" name="interest[]" value="Tech" /> <br />
    Health<input type="checkbox" name="interest[]" value="Health" /> <br />
    Living<input type="checkbox" name="interest[]" value="Living" /> <br />
    Travel <input type="checkbox" name="interest[]" value="Travel" /> <br />
    World<input type="checkbox" name="interest[]" value="World" /> <br />
    Leisure<input type="checkbox" name="interest[]" value="Leisure" /> <br />
    Finance<input type="checkbox" name="interest[]" value="Finance" /> <br />
    Celebrity Gossip<input type="checkbox" name="interest[]" value="Gossip" /> <br />
    Movies<input type="checkbox" name="interest[]" value="Movies" /> <br />
    Sports<input type="checkbox" name="interest[]" value="Sports" /> <br />

    <input type="submit" value="Submit">
</form>

как мы будем использовать php-массив, используя эти данные?

Ответ 1

разметка HTML:

<form method="get">
    <input type="checkbox" name="options[]" value="Politics"/> Politics<br/>
    <input type="checkbox" name="options[]" value="Movies"/> Movies<br/>
    <input type="checkbox" name="options[]" value="World "/> World<br/>
    <input type="submit" value="Go!" />
</form>

и в php-коде:

$checked = $_GET['options'];
for($i=0; $i < count($checked); $i++){
    echo "Selected " . $checked[$i] . "<br/>";
}

Ответ 2

используйте это:

<input type="checkbox" name="mydata[checkbox1]"> Option 1 (politics etc)
<input type="checkbox" name="mydata[checkbox2]"> Option 2
<input type="checkbox" name="mydata[checkbox3]"> Option 3

то получите $_POST [ "mydata" ] как массив

Ответ 3

Извините, отправлено до того, как я закончил писать: (

Несколько улучшений в уже опубликованных предложениях:

Используйте метки для формы:

<label for="check_politics">Politics</label>
<input type="checkbox" name="intrests[]" id="check_politics" value="Politics"/>

Использование ярлыков для улучшения формы блестяще на мой взгляд:) Устанавливайте их отображение, чтобы блокировать, если вы хотите, чтобы они получили разрывы строк.

И используйте foreach для его прокрутки по серверу:

$intrests = $_POST['intrests'];
foreach($intrests as $intrest) {
    echo $intrest . " is my intrest";
}

Ответ 4

Лучший способ, которым я нашел это (по крайней мере для меня), состоял в том, чтобы преобразовать значения флажка в массив, чтобы манипулировать им так, как я хотел, с помощью implode и explode:

<form action="thispage.php" method="post">

    (the previous fields here)

    <input type="checkbox" name="interests[]" value="Politics
    <input type="checkbox" name="interests[]" value="Entertainment
    <input type="checkbox" name="interests[]" value="Tech
    <input type="checkbox" name="interests[]" value="Health
    <input type="checkbox" name="interests[]" value="Living
    <input type="checkbox" name="interests[]" value="Travel
    <input type="checkbox" name="interests[]" value="World
    etc...

    <input type="submit" value="Submit">
</form>

И php (должен идти до формы):

<?php
if (isset($_POST['interests'])) {
    $interests_str = implode(" ", $_POST['interests']);// converts $_POST interests into a string
    $interests_array = explode(" ", $interests_str);// converts the string to an array which you can easily manipulate
}

for ($i = 0; $i > count($interests_array); $i++) {
    echo $interests_array[$i];// display the result as a string
}
?>

Преимущество этого script заключается в том, что вы можете получить доступ к $interest_array, когда захотите в своем документе, как общий массив.

Ответ 5

Эй, я упростил создание флажков, а также переключателей в любой php-форме. Единственное, что я использую Framework Codeigniter MVC.

Вот определение функции, которое вы можете вставить в свою общую модель или любой вспомогательный файл.

function createOptions($fieldName, $labelsArray=array(), $selectedOption, $fieldType,$valuesArray = array()) {
        $returnString = '';
        if(count($valuesArray)!=count($labelsArray))
            $valuesArray=$lebelsArray;
        if ($fieldType === 'checkbox') {
            for ($i=0;$i<count($labelsArray);$i++) {
                $returnString.='&nbsp&nbsp&nbsp<input type="checkbox" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
                if(in_array($valuesArray[$i], $selectedOption)){
                        $returnString.=' checked="checked" ';
                }
                $returnString.=' />&nbsp&nbsp<label>'.$labelsArray[$i].'</label>';
            }
        }
        if ($fieldType === 'radio') {
            for ($i=0;$i<count($labelsArray);$i++) {
                $returnString.='&nbsp&nbsp<input type="radio" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
                if($valuesArray[$i]== $selectedOption)
                        $returnString.=' checked="checked" ';
                $returnString.=' /><label>'.$labelsArray[$i].'</label>';
            }
        }
        return $returnString;
    }

И вы должны вызвать эту функцию в файле вида, как,

<?php
echo $this->common_model->createOptions('userHobbies[]', $hobbyOptions, $userHobbies, 'checkbox'); ?> 

Первый параметр - это имя поля поля или поля радиосвязи, которое всегда будет одинаковым для всех параметров для обоих случаев. Во-вторых, это массив меток, третий - это параметры, которые будут показывать эти параметры, указанные при загрузке формы. Четвертое - это тип поля, который будет строкой как "флажок" или "радио". Пятый будет массивом значений, который, если присутствует, будет содержать значения для меток в том же порядке, что и метки. Если его отсутствует, массив меток будет разрисован как массив значений.

Ответ 6

//options[] makes it an array
<form method="get">
    <input type="checkbox" name="options[]" value="Politics"/> Politics<br/>
    <input type="checkbox" name="options[]" value="Movies"/> Movies<br/>
    <input type="checkbox" name="options[]" value="World "/> World<br/>
    <input type="submit" value="Go!" />
</form>

Вы можете получить доступ к этому массиву с помощью $_GET['options']

Попробуйте Print_r( $_GET['options']); для просмотра значений в нем.

Ответ 7

Ниже приведена общая процедура обработки переменных массива, отправленных на страницу, которые расположены среди обычных переменных имени/значения.

Пример php:

<?php
/*
Summary: Output variables pushed to the page. Handle arrays that have been sent.
Remarks:  $_REQUEST handles posts or gets.
*/
echo '<pre>';
foreach($_REQUEST as $name => $value){
  if (is_array($value)) {
    echo "$name:<br />";

    // Assign array to something more mnemonic
    $items = $value; 
    foreach ($items as $item) {
      echo "  $item<br />";
    }
  } else {
    echo "$name: $value<br />";
  }
}
echo '</pre>';
?>

Пример разметки:

<form method="post"
      enctype="application/x-www-form-urlencoded"
      action="forms-process.php">
  <label>Customer name: <input name="customerName" /></label>
  <fieldset>
    <legend> Pizza Toppings </legend>
    <label> <input type="checkbox" name="toppings[]" value="bacon" /> Bacon </label>
    <label> <input type="checkbox" name="toppings[]" value="cheese" /> Extra Cheese </label>
    <label> <input type="checkbox" name="toppings[]" value="onion" /> Onion </label>
  </fieldset>
  <label><button>Submit order</button></label>
</form>  

Результат:

customerName: John
toppings:
  bacon
  cheese

Ответ 8

<form action="hitungmakan.php" method="post"><center>
<table border="1" width="400" cellpadding="3">
<tr><td colspan="5" align="center">Menu Makan dan Minum</td></tr>
<tr><td align="center">Makanan</td>  <tdalign="center">Minuman</td></tr>        
<tr>
<td><input name="makanan[]" type="checkbox" value="nasgor">nasi goreng $.7000<br>
<input name="makanan[]" type="checkbox" value="wuduk">wuduk $.6000<br>
<input name="makanan[]" type="checkbox" value="pecel">pecel $.9000</td>
<td><input name="minuman[]" type="checkbox" value="tehbotol">teh botol $.3000<br>
<input name="minuman[]" type="checkbox" value="campur">es campur $.7000<br>
<input name="minuman[]" type="checkbox" value="jeruk">es jeruk $.6000</td>
</tr>
<input type="submit" value="Total" name="total">
<input type="reset" value="Batal">