одна форма умножить задачи с PHP - PullRequest
0 голосов
/ 24 апреля 2011

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

    <div class="containerholder">
<div class="container">
<div id="contain">
        <form method="post" id="customForm" action="edited.php">
            <div>
                <label for="name">Navigation</label>
                <input id="name" name="navigation" type="text" value="<?php echo $navigation ?>" />
            </div>
            <div>
                <label for="message">Content</label>
                <textarea id="content" name="content" cols="" rows="" ><?php echo $content ?></textarea>
            </div>
            <div>
                <input type="hidden" name="id" id="id" value="<?php echo $id ?>">
                <input id="send" name="send" type="submit" value="Save and update" />
            </div>
        </form>
    </div>
</div></div>

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

Спасибо за ваше время!

Ответы [ 4 ]

0 голосов
/ 24 апреля 2011

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

Для ссылок, указывающих на форму.

/* To create a New Record */
<a href="thisfile.php?action=new">New Record</a>
/* To delete an Existing Record */
<a href="thisfile.php?action=delete&record=123">Delete #123</a>
/* To edit an Existing Record */
<a href="thisfile.php?action=edit&record=123">Delete #123</a>

Дляфайл формы (в моем примере thisfile.php сам).

<?php
if( isset( $_GET['action'] ) ){
  switch( strtolower( $_GET['action'] ) ){
    case 'delete' :
      /* Perform Deletion Action Here */
      break;
    case 'edit' :
      if( isset( $_POST['save'] ) ){
        /* Perform Modification of Existing Values Here */
      }else{
        /* Perform Query for Existing Values Here */
      }
      break;
    case 'new' :
      if( isset( $_POST['save'] ) ){
        /* Perform Creation of New Record Here */
      }else{
        /* Set Default Values */
        $navigation = '';
        $content    = '';
      }
      break;
  }
}
?>
<div class="containerholder">
  <div class="container">
    <div id="contain">
      <form method="post" id="customForm">
        <?php if( isset( $_GET['action'] ) ){ ?>
          <input type="hidden" name="action" value="<?php echo $_GET['action']; ?>" />
        <?php } ?>
        <?php if( isset( $_GET['record'] ) ){ ?>
          <input type="hidden" name="record" value="<?php echo $_GET['record']; ?>" />
        <?php } ?>
        <div>
          <label for="name">Navigation</label>
          <input id="name" name="navigation" type="text" value="<?php echo $navigation ?>" />
        </div>
        <div>
          <label for="message">Content</label>
          <textarea id="content" name="content" cols="" rows="" ><?php echo $content ?></textarea>
        </div>
        <div>
          <input id="send" name="send" type="submit" value="Save and update" />
        </div>
      </form>
    </div>
  </div>
</div>
0 голосов
/ 24 апреля 2011

Вы можете использовать несколько кнопок отправки, как Google делает с поиском / чувством удачного выбора:

  <input id="send" name="send" type="submit" value="edit" />
  <input id="send" name="send" type="submit" value="new page" />
  <input id="send" name="send" type="submit" value="edit subpage" />
  <input id="send" name="send" type="submit" value="new subpage" />

Пара имя = значение для кнопки отправки передается так же, как и для остальной части формыданные, поэтому на сервере они собираются с использованием той же функциональности ($ _GET или $ _POST и т.гибкий, вы можете точно контролировать, какие данные передаются через JavaScript, и это удобно для конечного пользователя, который не ждет перезагрузки страницы).См. http://www.w3schools.com/ajax для простого исходного кода.

0 голосов
/ 24 апреля 2011

добавьте два или более переключателя для выбора вашей функции, например:

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

<input type="radio" name="function" value="Add" />
<input type="radio" name="function" value="Delete" />
<input type="radio" name="function" value="Edit" />

..
</form>

и в php:

<?PHP
...

if( $_POST['function'] == 'Add' )
{
//Add Function
} else
if( $_POST['function'] == 'Delete' )
{
//DeleteFunction
} else
if( $_POST['function'] == 'Edit' )
{
//EditFunction
}

...
?>
0 голосов
/ 24 апреля 2011

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

Профессиональная: это не "профессиональная" в моемглаза использовать одну форму для всех задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...