【问题标题】:HTML/PHP - I need to create a 10 by 10 grid with a 100 boxes, each needs to be selectableHTML/PHP - 我需要用 100 个框创建一个 10 x 10 的网格,每个框都需要可选
【发布时间】:2010-10-26 04:39:18
【问题描述】:

我已经使用表格创建了网格,但似乎无法弄清楚如何允许用户选择网格中的特定框。 (即用户选择 3 个框,每个框都有 xy 坐标,我需要将其存储在数据库中)

也许我不应该使用表格,而是使用 div?

任何帮助将不胜感激。

注意:我是 PHP 新手,所以请不要以为我知道很多 :)

【问题讨论】:

    标签: php html css


    【解决方案1】:

    看起来布局对您的问题并不重要,无论是基于表格还是基于 div。如果我理解正确,您需要获取像 3-2 这样的坐标,以防用户点击位于第二列第 3 格的框。

    为此,您只需为变量使用数组数组。

    <input type="checkbox" name="boxes[<?php echo $i;?>][<?php echo $j;?>]" value="1" />
    

    然后你适当地增加 i 和 j 变量以获取从 box[0][0] 到 box[9][9] 的盒子名称。

    最后,在服务器端,当用户提交表单时,您可以像这样检查值:

    $boxes = $_POST['boxes'];
    for (int i=0; i<9; i++) {
      for (int j=0; j<9; j++) {
        if (isset($boxes[$i][$j])) {
          // here you have your coordinates for a selected box
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      我一般会避开桌子。

      如果您在表单中制作了一个按钮网格,您可以:

      • 编辑样式使其看起来像单元格
      • 用户点击时提交表单
      • 使用 POST 数据突出显示被点击的那个

      【讨论】:

        【解决方案3】:

        大部分取决于你必须做什么,但这个简单的例子应该完全符合你的需要。考虑使用 JS 框架。

        <style>
        td{empty-cells: show;}
        </style>
        <script>
         function cellSelected(this,i,q)
         {
            alert("Cell ("+i+","+q+")");
         }
        </script>
        <?php
        echo '<table>';
        for($i=0;$i<10;$i++)
        {
          echo '<tr>';
          for($q=0;$q<10;$q++)
          {
            echo '<td onClick="cellSelected(this,'.$i.','.$q.')"></td>';
          }
          echo '</tr>';
        }
        echo '</table>';
        ?>
        

        【讨论】:

        • 我明白这是在做什么。但是有一个问题:解析错误:语法错误,意外'=',期待';'在 /Users/satjotsawhney/localhost/boxes/test1.php 第 21 行第 21 行是:for(i=0;i
        • 在 PHP 部分,我们可能需要使用 $i 和 $q。
        • @JSchaefer, @Satjot:切换语言太频繁没有帮助,有些语法错误很抱歉 :)
        • 如何将选定的值发布到数据库?我想我必须将值存储在数组中?此外,警报不起作用 - 我需要为 javascript 添加源吗?
        【解决方案4】:

        谢谢大家。

        这就是我最终做的事情

        • 为每个单元格/td [00] - [99] 分配 id
        • onclick 调用了一个函数,该函数将单元格的 ID 存储在隐藏的输入中
        • 在提交表单时记录隐藏输入中的值

        从上面组合了两种解决方案。希望随着我学到更多知识,我可以为这些讨论做出贡献。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-26
          • 2021-10-02
          • 2013-01-29
          • 1970-01-01
          • 2011-01-24
          • 2016-05-29
          • 2014-09-05
          • 1970-01-01
          相关资源
          最近更新 更多