2012-08-29 63 views
4

我希望第一列 - 资金简称超级链接到每条记录的附加详细信息的结果。我将如何继续?或者,最好是调用链接到另一个查询将运行的详细信息页面。这似乎更静一些。使用指向另一个查询的链接运行查询。

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

<?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或网址安全名称。

我会超链接到一个额外的页面,因为我确信细节将不会有与主表格相同的格式。

添加ID到你的SELECT语句,或更改下方短名称:

... 
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并采用某种安全感。

+0

感谢您的回答。我如何将我的驱动程序更改为PDO或MYSQLi? –

+0

运行'phpinfo();'查看输出中是否有MySQLi或PDO。如果是这样,他们被安装,你所需要做的就是改变你的语法。谷歌的PHP Pdo例子或PHP的MySQL例子,你将被设置 –

0

另一种选择是,如果你的细节通常是简短的细节,基本上是几个字或短句,你总是可以打印出来作为TD标题。

这样,如果用户需要知道关于某些数据的更多细节,他只会将鼠标悬停在它上面,而woala就在那里。

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

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

你甚至可以编辑CSS的工具提示样式。

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

与此唯一的问题是,如果你想用它在同一页上太多的提示,页面加载时间增加。

相关问题