我目前有2个表单,它们将数据添加到我的数据库中。它们都有效,但每个都有自己的提交按钮 - 我只需要一个提交按钮来收集所有表单中的数据。
我发现了一些应该设置交易的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 :(得分: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" />
答案 1 :(得分:0)
考虑到您的补充评论,那么您建议的javascript序列将起作用,假设您有:
<input type="submit"... />
等按钮
<button name="submitbutton">...</button>
$_POST['submitbutton']
而不是sumit
和Submit
您没有报告当前不起作用的 ,因此上述步骤仅针对与您使用唯一的外形替换两个表单按钮的事实精确相关的更改
但其他地方可能会出现问题。我特别注意到你得到并处理图像的非常规方式(至少对我而言)。此外,您必须确保您的javascript部分确实已被执行。
如果它不起作用,请告诉我,而不是添加对错误的准确描述。
根据您提供的评论和实时预览进行修改。
完全测试是不可能的,因为服务器PHP部分是遥不可及的,因为我们可以使用Firebug来调试JS部件。
因此,添加一个断点,我们可以观察到,只要$("#form1").submit();
被执行,服务器就会返回一个新页面,其中包含“已添加地点!”消息。
另一方面,在没有设置任何断点的情况下,服务器返回一个带有“Categorie inserted!”的新页面。消息。
虽然OP未显示当前实时预览的addingplace.php
部分,并且与checkbox.php
部分进行比较,但我们可以猜测:
addingplace.php
按预期工作。换句话说,当您评论“它似乎只提交最后一个表单”时,这是基于您只能看到的内容的错误印象。
为了确保这是真的或不是,您应该控制数据库中真正更新的内容。
让我知道。
也就是说,必须要注意的是,这说明了这对情侣服务器浏览器在这些情况下是如何工作的:正如@David在OP下的评论中指出的那样,提交表单会导致浏览器立即收到新页面它会覆盖当前的那个。
在当前示例中,它的工作原理是因为只有很少的表单,并且所有三个表单都在非常短的时间内提交,几乎立即提交:因此第3个submit()
可以在第1个返回的页面到来之前执行。
因此,在您的示例中实现整个工作的推荐方法仅仅是使用一个表单,并使用其唯一的提交按钮。顺便说一句,我想知道为什么你想要这个更复杂的结构有三种形式:预期的好处是什么?
最后一点,除了您报告的确切问题之外:您应该注意编码方式。 HTML部分存在许多不一致之处,例如:已存在的<html><body>
内的<body>
部分;充满异国情调的<br></br>
;你也保留了第一种形式的补充按钮。