2015-10-28 3 views
0

У меня есть форма, которая позволяет пользователю отправлять значения, она работает нормально, но теперь я представил другую кнопку в ч/б форме «Сохранить как черновик».используя 2 кнопки отправки в одной форме

<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 
    <input name="title"> 
    <input name="tag1">  
    <textarea name="details"></textarea> 

    <button name="draft" type="submit1" class="btn btn-default">Save as Draft</button> 
    <input name="location" required> 
    /* 
    * 
    few more i/p values 
    * 
    */ 

<button name="save" type="submit" value="submit" >Save</button> 
</form> 

Что я хочу сделать, это сохранить значение заголовка, tag1 и деталь в базе данных без сохранения значений, которые находятся под сохранить как проект кнопки. Для этого я использовал следующий код

if ($_POST['draft']) 
    { 
     //exectue the required code 
    } 
elseif($_POST['save']) 
    { 
     //exectue the required code 
    } 

теперь вопрос в том, что если я нажмите на кнопку Сохранить как черновик он все еще проверяет codition, что находится ниже этой кнопки (в этом, например, я сделал место необходимо), в то время как требование заключается в том, что если пользователь нажимает «Сохранить как черновик», тогда значения должны быть сохранены, и нет необходимости заполнять другие значения под ним, но если нажать кнопку отправки, необходимо заполнить все значения. может кто-нибудь сказать, как это сделать

+0

Вы можете сделать форма проверки/требований на стороне сервера. В противном случае вы можете использовать JavaScript, чтобы пропустить проверку, когда эта кнопка нажата. –

+0

Можете добавить javascript, который вы используете для проверки – Mitul

+1

«он по-прежнему проверяет, что код ниже этой кнопки» - это неправильное представление о том, как (сервер) php <-> http <-> браузер <-> html (клиент) работает. Когда пользователь нажимает кнопку в окне браузера, серверный php-экземпляр, который выдает код формы html как вывод, скорее всего длинный, длинный и уже собранный мусор. Поскольку пользователь нажал кнопку, браузер собирает данные формы (имя = значения пар _all_ действительных элементов управления) и отправляет HTTP-запрос на сервер, который, в свою очередь, запускает новый экземпляр php для запуска вашего скрипта сверху вниз, снова отправляя вывод обратно клиента – VolkerK

ответ

0

Вы можете сделать это только с помощью javascript. Вам нужно будет поместить обработчик onclick в кнопку «Сохранить черновик», которая удаляет требуемый атрибут из любых полей, которые не должны быть необходимы для этой отправки. Кроме того, вы можете удалить требуемый атрибут из всех полей и обработать проверку формы с помощью настраиваемого javascript.

0

Вы можете сделать это, используя javascript.
Пожалуйста, попробуйте этот код:

<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 
    <input name="title" id="title"> 
    <input name="tag1" id-"tag1">  
    <textarea name="details" id="details"></textarea> 

    <button name="draft" id="draft" class="btn btn-default" onclick="update_draft()">Save as Draft</button> 
    <input name="location" required> 
    /* 
    * 
    few more i/p values 
    * 
    */ 

<button name="save" type="submit" value="submit" >Save</button> 
</form> 

JS:

<script> 
function update_draft(){ 

      if($("#title").val() === "") 
      { 
       alert("empty title"); 
      } 
      else if($("#tag1").val()==="") 
      { 
       alert("empty tag"); 
      } 
      else if($("#details").val()==="") 
      { 
       alert("empty details"); 
      } 
      else 
      { 
        $.post('<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>', {draft:true,title: $("#title").val(), tag1: $("#tag1").val(),details: $("#details").val() }, function(data, status){ 

       }); 
      } 
} 
</script> 

стороне сервера ::

if($_POST["draft"]){ 

} 
elseif($_POST["save"]){ 

} 
0
<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 
    <input name="title"> 
    <input name="tag1">  
    <textarea name="details"></textarea> 

    <button name="draft" id="draft" type="submit1" class="btn btn-default">Save as Draft</button> 
    <input name="location" required> 
    /* 
    * 
    few more i/p values 
    * 
    */ 

<button name="save" id="save" type="submit" value="submit" >Save</button> 
</form> 
<script> 
    $("#save").submit(function(event) { 
     alert("I'm Save"); 

    }); 

    $("#draft").submit(function(event) { 
     alert("I'm Draft"); 
     event.preventDefault(); 
    }); 
</script> 
0

Для меня, echo var_dump($_POST['draft']); выдает вывод string(0) "", что указывает на то, что $_POST['draft'] - пустая строка. Другими словами, значение ложно, а остальная часть кода не выполняется.

Чтобы проверить, существует ли ключ, вам необходимо использовать isset. Я был в состоянии прочитать, какая кнопка была нажата, используя следующий упрощенный код:

<html> 
<body> 
<?php 

if (isset($_POST['draft'])) { 
    echo 'Draft was saved'; 
} else if (isset($_POST['submit'])) { 
    echo 'Form was submitted'; 
} 

echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 

?> 
<form method='post'> 
<input name='draft' type='submit' value='Save Draft'> 
<input name='submit' type='submit' value='Submit'> 
</form> 
</body> 
</html> 

Следующий код, который состоит из кода, который вы в курсе, работал для меня, а также:

<html> 
<body> 
<?php 
if (isset($_POST['draft'])) { 
    echo "Draft was made"; 
} else if(isset($_POST['save'])) { 
    echo "Form was saved"; 
} 
?> 
<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 
    <input name="title"> 
    <input name="tag1"> 
    <textarea name="details"></textarea> 

    <button name="draft" type="submit1" class="btn btn-default">Save as Draft</button> 
    <input name="location" required> 
    /* 
    * 
    few more i/p values 
    * 
    */ 

<button name="save" type="submit" value="submit" >Save</button> 
</form> 
</body> 
</html> 
Смежные вопросы