使用链接将表单提交到php使用$ _PHP_SELF和$ _POST

时间:2016-11-07 21:25:12

标签: php forms

我正在尝试从链接而不是输入提交按钮提交表单。

    <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();">

5 个答案:

答案 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();"