расчеты по конкретным строкам в таблице базы данных с использованием php - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над проектом php, который управляет учителями в школе.но я застрял с проблемой, у меня есть две таблицы в моей базе данных, первая T1 в строке, вторая T2 имеет несколько строк, но они имеют одинаковое количество столбцов.в третьей таблице T3 мне нужно заполнить столбец с суммой (cell1 из T1 * cell1 из T2) + (cell2 из T1 * cell2 из T2) + (cell3 из T1 * cell3 из T2) .... вВ последнем столбце я просто не смог найти правильный способ сделать это

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 ]

1 голос
/ 10 апреля 2019

Пока гарантировано , что table1 вернет 1 строку, вот предложение:

  • Вместо использования цикла while для извлечения содержимого, простоизвлеките строку, чтобы содержимое таблицы1 было в формате $row1
  • . Измените foreach($row2 as $cell2) на foreach($row2 as $key=>$value) формат.Таким образом, у вас будет индекс соответствующего элемента в $row1
  • Внутри цикла foreach($row2 as $key=>$value) используйте аккумулятор для вычисления «Столбца I».EG $tot += $value * $row1[$key]
  • «эхо» столбца накопителя перед </tr>

Возможно, вы также захотите добавить пустой <td> в цикл $row1, чтобы убедиться, чточто все строки имеют одинаковое количество столбцов.

0 голосов
/ 10 апреля 2019

Вы можете пройти по второй таблице и вычислить сумму с помощью вложенного цикла:

$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>";  
}
...