运行带有指向另一个查询的链接的查询。

Posted

技术标签:

【中文标题】运行带有指向另一个查询的链接的查询。【英文标题】:Run Query with links to another query. 【发布时间】:2012-08-24 08:08:49 【问题描述】:

我希望第 1 列 - 基金简称的结果与每条记录的其他详细信息超链接。我将如何进行?或者只是调用一个指向另一个查询将运行的详细信息页面的链接会更好。这似乎更静态一些。

这是我正在使用的示例查询。

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  
  die('Could not connect: ' . mysql_error());
  

mysql_select_db("bdcarterascv2", $con);

$COD_PAIS = '3';
$F_HASTACORTE = '2012-03-31 01:00:00';

$result = mysql_query("SELECT mcarteras.DES_CARTERA_CC                 AS 'Short Name of Fund'
     , mcarterasflias.DES_CARTERAFLIA           AS 'I/C'
     , msociedades.DES_SOCIEDAD_CORTO           AS 'Fund Manager Company'
     , mcarteras_clases.DES_CARTERACLASE        AS 'Class'
     , mcarteras_clasesesp.DES_CARTERACLASE_ESP AS 'Special Class'
     , dr_rentmovil_carteras.POR_RENTCARTERA    AS 'TTR year-to-date %'
     , dficha_mes.POR_REMUNERA_COBRADA          AS 'Mgmt Fee Effectively Charged'
     , dficha_mes.POR_GASTOS_TOTALESC           AS 'Total Expenses %'
     , dficha_mes.VR_CARTERA_FCORTE             AS 'Fund Size'

  FROM mcarteras
    INNER
 JOIN mcarterasflias
    ON mcarterasflias.ID_CARTERAFLIA           = mcarteras.ID_CARTERAFLIA
INNER
  JOIN msociedades
    ON msociedades.ID_SOCIEDAD                 = mcarteras.ID_SOCIEDADADM
INNER
  JOIN mcarteras_clases
    ON mcarteras_clases.ID_CARTERACLASE        = mcarteras.ID_CARTERACLASE
INNER
  JOIN mcarteras_clasesesp
    ON mcarteras_clasesesp.ID_CARTERACLASE_ESP = mcarteras.ID_CARTERACLASE_ESP  
INNER
  JOIN dr_rentmovil_carteras
    ON dr_rentmovil_carteras.ID_CARTERA        = mcarteras.ID_CARTERA   
   AND dr_rentmovil_carteras.COD_PAIS                                       = $COD_PAIS
   AND dr_rentmovil_carteras.F_HASTACORTE                                   = '$F_HASTACORTE'
   AND dr_rentmovil_carteras.ID_FORMATO = 1
   AND dr_rentmovil_carteras. ID_COLUMNA = 5
INNER
  JOIN dficha_mes
    ON dficha_mes.ID_CARTERA                   = mcarteras.ID_CARTERA   
   AND dficha_mes.COD_PAIS                                                  = $COD_PAIS
   AND dficha_mes.F_CORTE                                                   = '$F_HASTACORTE'

 WHERE mcarteras.COD_PAIS                                                   = $COD_PAIS
   AND mcarteras.ID_CARTERATIPO = 4
   AND mcarteras.ID_CARTERAFLIA IN ( 3,4 )
   AND mcarteras.IND_PUBLICACION = 1
   AND mcarteras.COD_ESTADO= 1

")
    or die(mysql_error());

// html ... Aliases from Mysql
echo "<table border='1'>
<tr>
<th>Short Name of Fund</th>
<th>I/C</th>
<th>Fund Manager Company</th>
<th>Class</th>
<th>Special Class</th>
<th>TTR year-to-date %</th>
<th>Mgmt Fee Effectively Charged</th>
<th>Total Expenses %</th>
<th>Fund Size</th>

</tr>";

//<tr> specifies table row. for each <td> (table data) will specify a new column.  The     $row specifies the mysql column name (in this case using an alias)
while($row = mysql_fetch_array($result))
  
  echo "<tr>";
  echo "<td>" . $row['Short Name of Fund'] . "</td>";
  echo "<td>" . $row['I/C'] . "</td>";
  echo "<td>" . $row['Fund Manager Company'] . "</td>";
  echo "<td>" . $row['Class'] . "</td>";
  echo "<td>" . $row['Special Class'] . "</td>";
  echo "<td>" . $row['TTR year-to-date %'] . "</td>";
  echo "<td>" . $row['Mgmt Fee Effectively Charged'] . "</td>";
  echo "<td>" . $row['Total Expenses %'] . "</td>";
  echo "<td>" . $row['Fund Size'] . "</td>";

  echo "</tr>";
  
echo "</table>";

mysql_close($con);
?>

【问题讨论】:

【参考方案1】:

您要做的是,创建一个链接并将其映射到最传统的 ID 或 url 安全名称。

我会将它超链接到另一个页面,因为我确定详细信息的格式与您的主表不同。

在您的选择语句中添加一个 ID,或将以下内容更改为短名称:

...
echo "<td><a href=\"page.php?id=$row['ID']\">$row['Short Name of Fund']</a></td>";

然后在page.php:

SELECT ... WHERE ID = $_GET['ID'];

当然,停止使用 mysql_* 代码套件,因为它已被弃用、不受支持,并且到处都是不良宣传。您应该使用PDOMySQLi

注意:以上内容不针对 SQL 注入进行保护。将您的驱动程序切换到 PDOMySQLi 并使用一些安全感。

【讨论】:

感谢您的回答。如何将我的驱动程序更改为 PDO 或 MYSQLi? 运行 phpinfo(); 查看输出中是否有 MySQLi 或 PDO。如果是这样,它们已安装,您需要做的就是更改语法。谷歌 php pdo 示例或 php mysql 示例,您将被设置【参考方案2】:

另一种选择是,如果您的详细信息通常是简短的详细信息,基本上是几个词或短句,您可以随时将它们打印为 td 标题。

这样,如果用户需要了解一些数据的更多细节,他只需将鼠标悬停在它上面,然后就可以了。

或者更优雅的解决方案是使用 jquerys 工具提示插件,以防大量详细数据。 Jquery tooltip 基本上可以在标题标签内显示任何 html 代码,它的美妙之处在于你唯一需要做的就是像定义任何其他标题标签一样定义一个 td 标题,在 html 标题中包含 jquery lib 和 tooltip lib,并使用像这样的一些 js 代码:

<script>
$('#tableid td').tooltip();
</script>

您甚至可以从 css 编辑工具提示样式。

这里有演示:http://jquery.bassistance.de/tooltip/demo/

唯一的问题是,如果您想在同一页面上使用太多工具提示,您的页面加载时间会增加。

【讨论】:

以上是关于运行带有指向另一个查询的链接的查询。的主要内容,如果未能解决你的问题,请参考以下文章

下一个 JS apollo 链接更改清除查询,必须刷新页面才能运行查询

当表具有指向自身的链接时的 SQL 查询

使用带有日期的 C# 在 MS Access 97 数据库中清除查询

在一个 WebView 中打开指向另一个 Webview 的链接

带有查找表和链接表的一对多查询

强制刷新的 HTML 链接?