我正在研究一个管理学校教师的php项目。但是我遇到了一个问题,我的数据库中有两个表,第一个T1在行上,第二个T2有多个行,但是它们具有相同的列号。在第三张表T3中,我需要用一列 (T1的cell1 * T2的cell1)+(T1的cell2 * T2的cell2)+(T1的cell3 * T2的cell3)....到最后一列 我只是找不到正确的方法来做到这一点
这是显示我的数据库中的表的部分
<?php
$host="localhost";
$user="root";
$pass="";
$bdd="test";
$cnx=mysql_connect($host,$user,$pass);
if(!$cnx)
echo"connexion echouee"."</br>";
else
echo"connexion reussie"."</br>";
if (mysql_select_db($bdd))
echo"base de donnees trouvee"."</br>";
else
echo"base de donnees introuvable"."</br>";
$req1="SELECT * FROM `table1`";
$res1=mysql_query("$req1");
// printing table rows
while($row1 = mysql_fetch_row($res1))
{
echo "<tr>";
foreach($row1 as $cell1)
echo "<td>|$cell1|</td>";
echo "</tr>"; echo"</br>";
}
echo "_____</br>";
$req2="SELECT * FROM `table2`";
$res2=mysql_query("$req2");
// printing table rows
while($row2 = mysql_fetch_row($res2))
{
echo "<tr>";
foreach($row2 as $cell2)
echo "<td>|$cell2|</td>";
echo "</tr>";echo"</br>";
}
?>
答案 0 :(得分:1)
只要保证 table1将返回1行,这是一个建议:
while
循环来获取内容,而是仅获取行,因此table1的内容位于$row1
foreach($row2 as $cell2)
更改为foreach($row2 as $key=>$value)
格式。这样,您将在$row1
foreach($row2 as $key=>$value)
循环中,使用累加器计算“列I”。例如。 $tot += $value * $row1[$key]
</tr>
之前的累加器列您可能还想在<td>
循环中添加一个空的$row1
,以确保所有行的列数均相同。
答案 1 :(得分:0)
您可以遍历第二张表并使用嵌套循环计算总数:
$res1 = mysql_query("SELECT * FROM `table1`");
$res2 = mysql_query("SELECT * FROM `table2`");
$row1 = mysql_fetch_row($res1);
$row = 0;
// for each row of second table
while ($row2 = mysql_fetch_row($res2)) {
$row++;
$total = 0;
// for each column of first table's row
foreach ($row1 as $index => $table1RowValue) {
// get value of same column in the second table's row
$table2RowValue = $row2[$index];
// calculate aggregated value
$total += $table1RowValue * $table2RowValue;
}
// print result
echo "Line $row: $total</br>";
}