PHP Получить значения флажка, используя foreach - PullRequest
0 голосов
/ 08 апреля 2020

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

// This code gets all the Sunday's in a month:
 function getSundaysForTheMonth($y, $m)
    {
        return new DatePeriod(
            new DateTime("first sunday of $y-$m"),
            DateInterval::createFromDateString('next sunday'),
            new DateTime("last day of $y-$m 23:59:59")
        );
    }

Вот как я это отображаю:

 // Get current Year and Month
    $currentYear = date('Y');
    $currentMonth = date('m');

    // Get month name
    $beginMonthName = date("F", mktime(0, 0, 0, $currentMonth, 10));


    echo "Select which Sunday(s) of the month of ". $beginMonthName . ". $currentYear . " ": \n<BR>";
    $i=0;

    // Display all Sundays for 3 months
    foreach (getSundaysForTheMonth($currentYear, $currentMonth) as $sunday) {
        $thisSunday = $sunday->format("m - d - Y");
        echo "<input type=\"checkbox\" name=\"date".$i."\" value=\".$thisSunday. \">".$thisSunday."<BR>";
        $i++;
    }

Идея заключалась в том, чтобы сделать это с помощью foreach вместо этого способа. :

<input type="checkbox" name="date0" value="2020-04-12 ">2020-04-12<BR>
<input type="checkbox" name="date1" value="2020-04-12 ">2020-04-19<BR>
<input type="checkbox" name="date2" value="2020-04-12 ">2020-04-26<BR>
<input type="checkbox" name="date3" value="2020-04-12 ">2020-03-03<BR>

Теперь я пытаюсь получить эти значения. Я думаю, что код должен выглядеть примерно так, но немного по-другому, так как имя входа имеет разные имена (date0, date1, date2, ...).

<?php

if (isset($_POST['date'])) {

    foreach ($date as $sunday){
        echo $sunday."<br />";
        // Store $sunday in an array
    }
} else {
    echo "No selections";
}
?>

Любые идеи о том, как я могу сделать эту работу? Моя цель - сохранить его в массиве, который будет помещен в базу данных. Спасибо.

1 Ответ

1 голос
/ 08 апреля 2020

Вы можете использовать входное имя массива для своих флажков, затем оно будет преобразовано в массив в PHP:

foreach (getSundaysForTheMonth($currentYear, $currentMonth) as $sunday) {
    $thisSunday = $sunday->format("m - d - Y");
    echo "<input type=\"checkbox\" name=\"date[]\" value=\"$thisSunday\">$thisSunday<BR>";
}

Это приведет к следующему выводу ( demo ) :

<input type="checkbox" name="date[]" value="04 - 05 - 2020">04 - 05 - 2020<BR>
<input type="checkbox" name="date[]" value="04 - 12 - 2020">04 - 12 - 2020<BR>
<input type="checkbox" name="date[]" value="04 - 19 - 2020">04 - 19 - 2020<BR>
<input type="checkbox" name="date[]" value="04 - 26 - 2020">04 - 26 - 2020<BR>

А в PHP вы получите массив (в $_POST['date']), который выглядит (если, например, были установлены первый и третий флажки):

Array (
    [0] => '04 - 05 - 2020'
    [1] => '04 - 19 - 2020'
)

Обратите внимание, что если вы собираетесь вставить эти значения в базу данных, вы должны поместить их в соответствующий формат ISO-8601 (YYYY-MM-DD), поэтому измените ваш foreach l oop на следующий:

foreach (getSundaysForTheMonth($currentYear, $currentMonth) as $sunday) {
    $thisSunday = $sunday->format("m - d - Y");
    echo "<input type=\"checkbox\" name=\"date[]\" value=\"" . $sunday->format('Y-m-d') . "\">$thisSunday\n<BR>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...