Я размещаю массив флажков. и я не могу заставить его работать. Я не включил правильный синтаксис в цикл foreach, чтобы он был простым. но он работает. я тестировал, пытаясь сделать то же самое с текстовым полем вместо флажка, и он работал с текстовым полем.
<form method="post"> <?php foreach{ echo' <input id="'.$userid.'" value="'.$userid.'" name="invite[]" type="checkbox"> <input type="submit">'; } ?> </form>
вот часть, которая не работает. он повторяет «приглашение» вместо массива.
<?php if(isset($_POST['invite'])){ $invite = $_POST['invite']; echo $invite; }
Ваш массив $ _POST содержит массив приглашений, поэтому он считывает его как
<?php if(isset($_POST['invite'])){ $invite = $_POST['invite']; echo $invite; } ?>
не будет работать, поскольку это массив. Вам нужно пройти через массив, чтобы получить все значения.
<?php if(isset($_POST['invite'])){ if (is_array($_POST['invite'])) { foreach($_POST['invite'] as $value){ echo $value; } } else { $value = $_POST['invite']; echo $value; } } ?>
Я просто использовал следующий код:
<form method="post"> <input id="user1" value="user1" name="invite[]" type="checkbox"> <input id="user2" value="user2" name="invite[]" type="checkbox"> <input type="submit"> </form> <?php if(isset($_POST['invite'])){ $invite = $_POST['invite']; print_r($invite); } ?>
Когда я проверил обе коробки, выход был:
Array ( [0] => user1 [1] => user2 )
Я знаю, что это напрямую не отвечает на ваш вопрос, но дает вам рабочий пример для ссылки и, надеюсь, поможет вам решить проблему.
Проверьте функцию implode () как альтернативу. Это преобразует массив в список. Первый параметр – это то, как вы хотите, чтобы элементы были разделены. Здесь я использовал запятую с пробелом после нее.
$invite = implode(', ', $_POST['invite']); echo $invite;
// if you do the input like this <input id="'.$userid.'" value="'.$userid.'" name="invite['.$userid.']" type="checkbox"> // you can access the value directly like this: $invite = $_POST['invite'][$userid];
Поскольку ваш элемент <form>
находится внутри цикла foreach, вы генерируете несколько форм. Я предполагаю, что вы хотите несколько флажков в одной форме.
Попробуй это…
<form method="post"> foreach{ <?php echo' <input id="'.$userid.'" value="'.$userid.'" name="invite[]" type="checkbox"> <input type="submit">'; ?> } </form>