【问题标题】:PHP multiple image button submit formPHP多图按钮提交表单
【发布时间】:2013-02-07 11:13:02
【问题描述】:

我一直在创建一个网站,我的用户可以在其中对已上传的图片进行评分。目前我使用单选按钮和提交按钮来获取用户评分并将其保存在系统中。我想更改此设置,以便代码使用图像点击来获得用户评分。到目前为止,我有以下代码,但它仅适用于一个图像按钮。有什么方法可以改变它以获得取决于单击的图像的结果。

代码:

HTML

<form>
<input
        type="image"
        name="flag_submit"
        src="img/Flag.png"
        onmouseover="this.src='img/Flag_Click.png'"
        onmouseout="this.src='img/Flag.png'"
        height="30"
        width="30"
        />
</form>

PHP

if (isset($_POST['flag_submit_x']))
{
    //Do process of rating.
}   

有什么方法可以创建多个图像按钮并在 PHP 代码中检测按下了哪个图像按钮?

【问题讨论】:

  • 将名称更改为数组name="flag_submit[1]"。为每张图片分配一个不同的值,你就知道了。
  • 注册这个的 PHP 代码是什么?
  • if (isset($_POST['flag_submit'][1])) 针对特定情况,由 Dainis 提供
  • 我试过了,但它不起作用。 (见他的回答)

标签: php html submit imagebutton


【解决方案1】:
  1. 将名称更改为数组 name="flag_submit[1]"。为每张图片分配一个不同的值,你就知道了。

  2. 在 php 端将其作为数组读取:if (isset($_POST['flag_submit'][1]))

或者更好的是,循环遍历 if $_POST['flag_submit'] 并找到所有值:

foreach ( $_POST['flag_submit'] as $value )  {
    echo $value . ' has been clicked.';
}

<form method="post">
<input type="image" name="rateButton[1]" src="img/Rate1.png" height="40" width="40" value="1"/> T
<input type="image" name="rateButton[2]" src="img/Rate1.png" height="40" width="40" value="1"/> T
<input type="image" name="rateButton[3]" src="img/Rate1.png" height="40" width="40" value="1"/> T
<input type="image" name="rateButton[4]" src="img/Rate1.png" height="40" width="40" value="1"/> T
</form>
<pre>
<?php
    if ( isset( $_POST['rateButton'] ) ) {
        foreach ( $_POST['rateButton'] as $key => $value ) {
            echo 'Image number '.$key.' was clicked.';
        }
    }
?>

在您的情况下,您并不关心它发送什么值,您只需要关心用于提交表单的密钥,因为始终只有一个密钥集。

【讨论】:

  • 我已经尝试过了,但它似乎不起作用。我将 [1]-[10] 添加到图像按钮的名称上,并使用 if (isset($_POST['flag_submit'][1])) echo "Number 1"。当我点击第一张图片时,没有显示文本 Number 1?
  • 您是否设置了onclick="document.form.submit(); 活动?
  • 抱歉,我的按钮名称有误。它工作得很好。感谢您的帮助。
  • 好吧,它几乎不工作....当我遍历 $_POST['flag_submit'] 并返回您在答案中显示的值时,我得到随机值(14、23、24 , 29, 17) 等等...如果我点击一个按钮,我每次都会得到不同的值。
  • 您为图像分配了哪些值?
【解决方案2】:

这里有一个技巧可能会有所帮助:

我已经创建了表单的 HTML 页面:

代码

<html><body><form method="post" action="show_post.php">
<input type="image" name="stamp[1134118800]" src="redstar.gif" value="red">
<input type="image" name="stamp[1134140400]" src="greenstar.gif" value="green">
</form></body></html>

表单提交到的脚本 show_post.php 内容如下:

代码

<?php
print '<html><body><pre>';

print_r ($_POST);

print '</pre></body></html>';
?>

当我点击第一张图片时,我得到:

Array
(
    [stamp] => Array
        (
            [1134118800] => 21
        )

)

当我点击第二张图片时,我得到:

Array
(
    [stamp] => Array
        (
            [1134140400] => 15
        )

)

这适用于 Opera、IE 和 Mozilla。

【讨论】:

  • 我不完全明白这是如何工作的。 [1134118800] 和 [1134140400] 的值是什么,你从哪里得到它们。为什么他们每个人的结果都是 21 和 15?
【解决方案3】:

第一个代码对我来说很好, 将名称更改为数组名称="flag_submit[1]"。为每张图片分配一个不同的值,你就知道了。

在 php 端将其读取为数组:

if (isset($_POST['flag_submit'][1]))

【讨论】:

    【解决方案4】:

    你可以有多个

    有关详细信息,请参阅规范:http://www.w3.org/html/wg/drafts/html/master/forms.html#the-button-element

    【讨论】:

      【解决方案5】:

      这可能对你有帮助

      <?php
      if($_POST['button'])
      {
          echo "you have pressed button ".$_POST['button'];
      }
      ?>
      <style>
          input.overridecss {
          background-color: transparent;
          border: 0px;
          background-position: center;
          background-repeat: no-repeat;
          background-image: url(http://i49.tinypic.com/rm2w0i.png);
      }
      </style>
      <form method="POST">
          <input type="submit" name="button" value="1" class="overridecss"/>
          <input type="submit" name="button" value="2" class="overridecss"/>
          <input type="submit" name="button" value="3" class="overridecss"/>
          <input type="submit" name="button" value="4" class="overridecss"/>
          <input type="submit" name="button" value="5" class="overridecss"/>
      </form>
      

      【讨论】:

      • 如果我在同一个表单中已经有多个其他输入按钮但名称不同,这会起作用吗?
      • 视情况而定..你用表格做什么?
      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2013-01-21
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 2011-01-23
      相关资源
      最近更新 更多