我正在尝试从链接而不是输入提交按钮提交表单。
<form id="formadd" name="formadd" method="post" action="<?php $_PHP_SELF ?>">
...form data
<a name="ADD" onclick="document.getElementById("formadd").submit();" href="" class="button primary">Add Camera to Database</a>
<!-- <input type="submit" name="ADD" value="Add Camera"> -->
被调用的PHP看起来像这样:
<?php
if(isset($_POST['ADD'])) {
$SIGID = $_POST['SIGID'];
$LOC = $_POST['LOC'];
$URL = $_POST['URL'];
$IMG = $_POST['IMG'];
$LAT = $_POST['LAT'];
$LON = $_POST['LON'];
$CAMTYPE = $_POST['CAMTYPE'];
$sql = "INSERT INTO cam_markers (SIGID, LOC, URL, LAT, LON, CAMTYPE, IMG)
VALUES ('$SIGID', '$LOC', '$URL', '$IMG', '$LAT', '$LON', '$CAMTYPE')";
$retval = mysql_query($sql);
if(! $retval ) {
die('Could not add data: ' . mysql_error());
}
echo 'Added data successfully' . PHP_EOL;
mysql_close($connection);
}
?>
链接当前不起作用,但它使用正常的提交输入,所以我知道脚本没问题。
我最好的猜测是,问题与$ _POST只从表单元素创建数组的事实有关,并且由于超链接不是表单元素,因此其名称标识符不会被传递。
但是,我在没有isset()条件的情况下尝试了它,并且只是试图回显正在传递的数据,但这些数据不起作用。所以,这似乎表明还有其他事情正在发生。
感谢任何帮助/解决方法。谢谢。
编辑:我通过这样做得到了它:<a href="javascript:document.formadd.submit();">
答案 0 :(得分:0)
使用提交按钮。
如果您不喜欢它的外观(最可能的原因是您尝试避免使用正确的工具),请应用CSS。
答案 1 :(得分:0)
您应该使用提交按钮。
button {
background: none!important;
border: none;
padding: 0!important;
font-family: arial, sans-serif;
color: #069;
text-decoration: underline;
cursor: pointer;
}
<button type="submit">your button that looks like a link</button>
答案 2 :(得分:0)
action="<?php $_PHP_SELF ?>">
错了。如果表单是在同一页面上提交的,但是如果你想使用$ _SERVER ['PHP_SELF'],则不需要指定操作;所以现在
action="<?php echo $_SERVER['PHP_SELF'];?>">
答案 3 :(得分:-1)
有几件事...... 如果操作为空,则浏览器将提交到当前页面,因此
action="" fixes it.
如果您愿意,可以使用PHP_SELF,但它不会被打印出来
action="<?php echo $_PHP_SELF; ?>"
或简写语法
action="<?=$_PHP_SELF?>"
最后你的代码会查找$ _POST ['ADD'],所以在你的表单中创建一个隐藏的..
<input type="hidden" name="ADD" value="ADD" >
答案 4 :(得分:-1)
您使用的技术是正确的,您可以使用链接和.submit()
。我看到的唯一问题是错误的引用:
<a name="ADD" onclick="document.getElementById("formadd").submit();"
^ ^
使用单引号或转义它。
onclick="document.getElementById('formadd').submit();"