【问题标题】:Hyperlink across table cells?跨表格单元格的超链接?
【发布时间】:2012-03-01 18:57:33
【问题描述】:

我正在尝试从表格行中两个单元格上的两段文本创建超链接。

我正在使用 PHP 生成我的表,以将我的数据库中的结果回显到一个表中。 当它回显时,它会在末尾生成一个带有 GET 变量的超链接,允许用户访问与该信息相关的页面。

问题是我似乎无法生成将跨越这些表格单元格的超链接,我环顾了整个网络,并没有说我不能这样做。

从下面的屏幕截图中可以看出,我在一个表格单元格中生成了一个超链接,但我希望另一个表格单元格具有相同的超链接。

代码

while ($row = $db->fetch_assoc($newest))
                        {
                            echo "<tr>";
                                echo "<td>";
                                    echo  "<a href='manager.php?method=view&id=".$row['id']."'>".$row['first_name']." ". $row['second_name']. "</td><td>".$row['company_name']."</a>";
                                echo "</td>";
                            echo "</tr>";
                        }

我觉得我只需要为表格单元格生成两个单独的超链接。

但是我希望这里有人可以证明我错了,并为我节省了几行代码。

谢谢:)

【问题讨论】:

  • 就是两个超链接或使用 CSS 框架生成表格或执行一些 javascript 来完成该操作
  • 我能得到一些支持的爱吗,这是个好问题吗? :)

标签: php html hyperlink html-table


【解决方案1】:

使用原生超链接,您必须为每个单元格创建单独的包装器。

但是,如果你想使用 JS 进行链接和重定向,你可以这样做:

.....
<tr class="clickable" data-href="http://google.com">
<td>cell-1</td>
<td>cell-2</td>
<td>cell-3</td>
</tr>
....

然后:

$(function(){
    $('tr.clickable').click(function(){
        window.location.href = $(this).attr('data-href');
    });
});

【讨论】:

  • 这是一个不错的解决方案,但它对什么 DTD 有效?
  • 如果 OP 不在其他地方使用它,为此引入对 jQuery 的依赖似乎有点笨拙
【解决方案2】:

只需使用 JS 解决它:

echo "<tr onclick=\"location.href='manager.php?method=view&id=".$info.";'\">";

【讨论】:

  • 应该是&amp;amp; 不是吗?
  • 不应该。在属性的双引号内的 URL 中,您不想使用 HTML 实体
  • 你能提供参考吗?我只用谷歌搜索了这个squarefree.com/securitytips/web-developers.html(关于“避免 XSS 漏洞”的部分),我觉得它不可靠。 W3schools 对于 html 4 对此一无所知。
  • 这里没有 XSS 的可能性:您的应用程序以某种方式构造此字符串,使其在 HTML 中保持静态,不涉及用户数据,只有一个数字 PHP 变量 - 这是我以前的评论。
【解决方案3】:

如果您不想破坏表格结构(即,将名称和公司放在一个(多列)单元格中),恕我直言,除了生成两个超链接之外别无他法。

您可能想要做的是使用一些 CSS 来实现悬停效果,并使用一些 JavaScript 来注册用户点击了一个单元格(根据上面的结构,您可以将其与 tr 元素相关联)。

【讨论】:

    【解决方案4】:

    你不能这样做。试试吧:

     while ($row = $db->fetch_assoc($newest))
        {
            $url = "manager.php?method=view&id=".$row['id'];
            echo "<tr>";
                echo "<td><a href=\"" . $url.  "\">" . $row['first_name']." ". $row['second_name']. "</a></td>";
                echo "<td><a href=\"" . $url.  "\">" . $row['company_name'] . "</a></td>";
            echo "</tr>";
        }
    

    【讨论】:

      【解决方案5】:
      while ($row = $db->fetch_assoc($newest))
      {
          echo "<tr>";
          echo "<td>";
          echo "<a href='manager.php?method=view&id=".$row['id']."'>".$row['first_name']." ". $row['second_name']."</a></td><a href='manager.php?method=view&id=".$row['id']."'>".$row['company_name']."</a><td></td>";
          echo "</td>";
          echo "</tr>";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 2017-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多