PHP заполнить список динамически без отправки формы - PullRequest
0 голосов
/ 06 мая 2010

Я постараюсь объяснить это как можно лучше.

У меня есть форма, которая принимает несколько полей, и, наконец, отправляет все поля по электронной почте на определенный адрес электронной почты.

Так, например, у меня есть три текстовых поля, одно поле со списком и две кнопки отправки.

Два текстовых поля: имя и адрес электронной почты

Третье текстовое поле используется для заполнения списка. Поэтому, если я введу NIKE в третье текстовое поле и нажму первую кнопку отправки. Nike теперь будет в списке.

Я хочу, чтобы в поле списка можно было ввести столько записей, сколько необходимо, а затем нажать вторую кнопку отправки, чтобы отправить всю информацию (имя, адрес электронной почты и все элементы в списке).

Проблема в том, что нажатие первой кнопки отправки всегда запускает отправленное электронное письмо, так как я "POST".

У меня сейчас все работает. Третье текстовое поле отправляет новые данные в таблицу в mysql, а затем извлекает все данные и помещает их в список.

Какой лучший способ исправить этот сценарий? Могу ли я остановить проверку переменной Post, пока не будет использована вторая кнопка отправки?

Кроме того, я хотел бы избежать Javascript, спасибо

1 Ответ

1 голос
/ 06 мая 2010

Убедитесь, что две кнопки отправки имеют имена.IE: <input type="submit" name="command" value="Add"> и <input type="submit" name="command" value="Send">.Затем вы можете использовать PHP, чтобы определить, какой из них был нажат:

if($_REQUEST['command'] == 'Add')
{
  // Code to add the item to the list box here
}
elseif($_REQUEST['command'] == 'Send')
{
  // Code to send the email here...
}

БОНУС: Для дополнительного кредита сделайте переменные команд так, чтобы их можно было легко изменять, и сопоставьте их с функциями...

<?php

$commands = array(
  'doSendEmail' => 'Send Email',
  'doAddOption' => 'Add Option',
);

function doSendEmail()
{
  // your email sending code here...
}

function doAddOption()
{
  // your option adding code here...
}

function printForm()
{
  global $commands;
  ?>
  Name: <input type="text" name="name"><br>
  Email: <input type="text" name="name"><br>
  <input type="text" name="add">
  <input type="submit" name="command" value="<?= $commands['doAddOption'] ?>">
  <select>
  <?php /* some code here */ ?>
  </select>
  <input type="submit" name="command" value="<?= $commands['doSendEmail'] ?>">
  <?php
}

if(isset($_REQUEST['command']))
{
  $function = array_search($_REQUEST['command'],$commands);
  if($function !== -1)
    call_user_func($function);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...