2015-12-05 4 views
1

В настоящее время у меня есть 2 формы, которые добавляют данные в мою базу данных. Они оба работают, но каждый из них имеет свою собственную кнопку отправки - и мне нужна только одна кнопка отправки для сбора данных из всех форм.Целевая кнопка за пределами формы в action.php?

Я нашел javascript, который должен установить сделку;

$("#submitbutton").click(function(){ 
$("#form1").submit(); 
$("#form2").submit(); 
}); 

Кнопка Я ориентируюсь находится за пределами обоего форм и выглядит следующим образом:

<input id="submitbutton" type="button" value="add"> 

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

Одна из форм позволяет загрузить изображение;

<form id="form1" action="addimage.php" method="post" enctype="multipart/form-data"> 
      <input type="file" name="image" /> 
      <br/><br/> 
      <input type="submit" name="sumit" value="Upload" /> 
     </form> 

Файл действия содержит этот php;

<?php 
     if(isset($_POST['sumit'])) 
    { 
     if(getimagesize($_FILES['image']['tmp_name'])== FALSE) 
     { 
     echo "Please select an image."; 
     } 
     else 
     { 
     $image= addslashes($_FILES['image']['tmp_name']); 
     $name= addslashes($_FILES['image']['name']); 
     $image= file_get_contents($image); 
     $image= base64_encode($image); 
     saveimage($name,$image); 
     } 
    } 
     displayimage(); 
     function saveimage($name,$image) 
     { 
     $con=mysql_connect("localhost","root",""); 
     mysql_select_db("ssdb",$con); 
     $qry="insert into pictures (name,image) values ('$name','$image')"; 
     $result=mysql_query($qry,$con); 
     if($result) 
     { 
       //echo "<br/>Image uploaded."; 
      } 
      else 
      { 
       //echo "<br/>Image not uploaded."; 
      } 
    } 
      function displayimage() 
      { 
     $con=mysql_connect("localhost","root",""); 
     mysql_select_db("ssdb",$con); 
     $qry="select * from pictures"; 
     $result=mysql_query($qry,$con); 
     while($row = mysql_fetch_array($result)) 
     { 
     echo '<img height="300" width="300" src="data:image;base64,'.$row[2].' "> '; 
     } 
     mysql_close($con); 
    } 
    ?> 

Другая форма позволяет выбирать между несколькими категориями, собранными из моей базы данных;

<form id="form2" action="checkbox.php" method="post"> 
      <label for="Category">Category</label> 
      <br /> 
      <!-- iterate through the WHILE LOOP --> 
      <?php while($row = mysqli_fetch_array($result_category)): ?> 
       <!-- Echo out values {id} and {name} --> 
       <input type="checkbox" name="category[]" value=" <?php echo $row['id']; ?> "><?php echo $row['name'] . '<br />'; ?> 
      <?php endwhile; ?> 
      <input type="submit" name="Submit" value="Submit" class="btn btn-default"/> 
     </form> 

И имеет следующий php;

<?php 
include("config.php"); 
$checkbox = $_POST['category']; 
if($_POST["Submit"]=="Submit") 
{ 
    for ($i=0; $i<sizeof($checkbox);$i++) { 
    $query = "INSERT INTO placecategory (category_id) VALUES ('".$checkbox[$i]."')"; 
    mysql_query($query) or die(mysql_error()); 
    } 
    echo "Category is inserted"; 
} 
?> 

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

Есть ли способ настроить таргетинг на кнопку вне формы, чтобы php выходил, когда нажимается? Или как я могу это переписать?

Любая помощь приветствуется!

+0

Как @Placeholder Я не понимаю, что вы пытаетесь получить. Вы хотите: 1) иметь 3 кнопки (1 для каждой формы и еще 1 снаружи)? Кажется совершенно непоследовательным. 2) 2 кнопки формы, каждая командная подача обеих форм? 3) Только одна внешняя кнопка для того же самого? Пожалуйста, добавьте уточнения. – cFreed

+0

Мне нужна только одна внешняя кнопка, которая находится за пределами всех форм. Когда это нажатие, все формы отправляются. Извините за неясность. –

+0

Нажимает ли внешняя кнопка на новую страницу? Или он вызывает JavaScript? – David

ответ

0

Не уверен, что я полностью понимаю, что вы пытаетесь сделать, но попробуйте с помощью HTML5 добавьте form="form1" и form="form2" для вашего второго и сообщите мне, если это сработает.

<form id="form1" action="addimage.php" method="post" enctype="multipart/form-data"> 
     <input type="file" name="image" /> 
     <br/><br/> 
     <input type="submit" name="sumit" value="Upload" /> 
</form> 
<input type="submit" name="sumit" value="Upload" form="form1" /> 
+0

Спасибо за ответ. Это не работает, если я помещаю кнопку отправки вне формы. –

0

Принимая во внимание Ваш комплементарную комментарий, то предлагаемый вами последовательность Javascript будет работать, предполагается, у вас есть:

  • подавленные кнопки, такие как <input type="submit"... /> от обеих форм
  • добавлена ​​новая кнопка <button name="submitbutton">...</button> вне формы
  • соответственно модифицировали части PHP, ссылаясь на $_POST['submitbutton'] вместо sumit и Submit соответственно

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

Но что-то может оказаться неправильным в другом месте. Я особенно заметил необычный способ (по крайней мере, для меня), который вы получаете и обрабатываете изображение. Также вы должны убедиться, что ваша часть javascript действительно выполнена.

Сообщите мне, если он еще не работает, чем добавление точного описания того, что не так.


Edit, на основе ваших предоставленных комментариев и жить предварительный просмотр.

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

Итак, добавив точку останова, мы можем заметить, что, как только $("#form1").submit(); был выполнен, сервер возвращает новую страницу с «Местом было добавлено!». сообщение.
С другой стороны, без какой-либо точки останова сервер возвращает новую страницу с включенной «категорией»! сообщение.

Хотя ОП не показывать addingplace.php части текущего предварительного просмотра и сравнения с checkbox.php стороны, мы можем предположить, что:

  1. В восстановленном выполнении части, то первый шаг addingplace.php сделал работу как и ожидалось.
  2. То, что мы наблюдаем при выполнении всего исполнения, просто означает, что все три части работали должным образом, но каждый из них имеет свое возвращенное сообщение, перезаписанное следующим, но для последнего.

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

При этом следует отметить, что это иллюстрирует, как пара-браузер работает в этих обстоятельствах: как уже указывал @David в комментарии под OP, для отправки формы заставляет браузер немедленно получать новую которая перезаписывает текущий.

В текущем примере это работает, потому что существует только несколько форм, и все три представлены в очень сжатое время почти мгновенно: так что 3-й submit() может быть выполнен до того, как наступит возвращенная страница 1-го.

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

Последнее, за пределами точной проблемы, о которой вы сообщали: вы должны обратить внимание на то, как вы кодируете. В HTML-части много деталей, например: a <html><body> часть внутри уже существующего <body>; экзотический <br></br>; также вы сохранили дополнительную кнопку в 1-й форме.

+0

Спасибо за ваш отзыв cFreed, так как сейчас проблема возникает, когда я нажимаю кнопку «Отправить», которая помещается вне всех форм, она только кажется, представляет последнюю форму в моем javascript. Я получил предварительный просмотр формы здесь; http://stephanolsen.dk/formtest –

+0

Итак, если $ ("# form1"). submit(); последний в скрипте, то есть тот, который отправляется. –

+0

@StephanOlsen. Посмотрите мое редактирование выше. – cFreed

Смежные вопросы