使用PHP对数据库表中的特定行进行计算

时间:2019-04-10 10:45:27

标签: php mysql calculation

我正在研究一个管理学校教师的php项目。但是我遇到了一个问题,我的数据库中有两个表,第一个T1在行上,第二个T2有多个行,但是它们具有相同的列号。在第三张表T3中,我需要用一列  (T1的cell1 * T2的cell1)+(T1的cell2 * T2的cell2)+(T1的cell3 * T2的cell3)....到最后一列 我只是找不到正确的方法来做到这一点

enter image description here

这是显示我的数据库中的表的部分

<?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>";
      
  }
?>

2 个答案:

答案 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>";  
}