2013-04-16 4 views
0
echo "<form method=\"post\" action=\"settings.php\" onchange=\"this.form.submit()\">"; 
echo "Announce New Files: <input type=\"radio\" name=\"announcefiles\" value=\"On\" $checkon1> On"; 
echo "<input type=\"radio\" name=\"announcefiles\" value=\"Off\" $checkoff1> Off<br>"; 
echo "</form>"; 

Я пытаюсь отправить эту форму при нажатии одной из переключателей, но я не уверен, как поймать представление.this.form.submit() с PHP isset?

например, обычно с помощью кнопки отправки вы можете использовать что-то вдоль строк if (isset ($ _ POST ['submit'])), но я не уверен, как это сделать, если форма авто отправляется.

+2

Вместо того, чтобы использовать кучу 'echo', почему бы вам просто не напечатать вывод, поставив его между '?>' И ' MaxArt

+0

Вы также можете взглянуть на «heredocs», если по какой-то причине вы не можете следовать советам MaxArt. http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – brezanac

ответ

0

Добавить скрытое поле ввода, как:

<input type="hidden" name="action" value="submit" /> 

Затем в проверке PHP:

if(isset($_POST["action"]) && $_POST["action"] == "submit") { ... } 
+0

-1, Есть гораздо более простые решения, чем добавление значения часового. –

0

Дайте вашу форму имя и проверить isset($_POST['form_name']) или проверить имя радио isset($_POST['announcefiles'])

Кроме того, вам не нужно все котировки, которые у вас есть, вы можете использовать одинарные кавычки, а также использовать многострочную строку - см. Пример ниже.

echo " 
<form method='post' name='form_name' action='settings.php' onchange='this.form.submit()'> 
Announce New Files: <input type='radio' name='announcefiles' value='On' $checkon1> On 
<input type='radio' name='announcefiles' value='Off' $checkoff1> Off<br> 
</form>"; 

<?php 
    // Check if form was submitted 
    if (isset($_POST['form_name']) { 
     // Form submitted 
    } 
?> 

<?php 
    // Check if radio was selected 
    if (isset($_POST['announcefiles']) { 
     // Form submitted 
     echo 'You chose' . $_POST['announcefiles']; 
    } 
?> 
0

Вы должны проверить способ запроса. Если вы установили чистоту, запрос POST по этому URL-адресу будет означать отправку формы. Как вы заметили, вы можете попытаться представить, где значения просто нет.

if ($_SERVER['REQUEST_METHOD'] === 'POST') 

См. $_POST vs. $_SERVER['REQUEST_METHOD'] == 'POST' для более подробного обсуждения.

0

Попробуйте это:

Вы можете иметь более легкое время, если отделить PHP и HTML немного больше.

<form method="post" action="settings.php" onchange="this.form.submit()"> 
    <fieldset> 
     <legend>Announce New Files:</legend> 
     <label for="on"><input type="radio" id="on" name="announcefiles" value="On" <?php echo $checkon1 ?> /> On</label> 
     <label for="off"><input type="radio" id="off" name="announcefiles" value="Off" <?php echo $checkoff1 ?> /> Off</label> 
    </fieldset> 
</form> 

Затем в PHP логики в settings.php (или выше формы, если вы отправляете обратно на ту же страницу) можно проверить для значения announcefiles:

<?php 
    if(isset($_POST['announcefiles'])){ 
     // DO SOMETHING 
    } 
?> 

Позвольте мне знать если это поможет. Или, если мне не хватает вопроса.

+0

Я не думаю, что мой onchange работает, но теоретически это должно работать. – user1831430

+0

вы также можете отделить свой javascript и присоединить прослушиватели событий к входам, удалив атрибут 'onChange' из формы и добавив блок javascript: ' ' , который исправит вашу проблему с событием onchange –