Сравните строки, чтобы найти разницу, и выделите измененную с помощью PHP и MYSQL

#php #html #mysql #mysqli

#php #HTML #mysql #mysqli

Вопрос:

У меня есть форма, в которой пользователь может вводить свои записи об образовании один за другим. На стороне администратора я хочу проверить разницу всех созданных им строк друг с другом.

Структура таблицы

 CREATE TABLE `personal_educational_record` (
 `Personal_Educational_Id` int(11) NOT NULL AUTO_INCREMENT,
 `Personal_Educational_Institute` varchar(5000) NOT NULL,
 `Personal_Educational_Level` varchar(5000) DEFAULT NULL,
 `Personal_Educational_Subject` varchar(100) NOT NULL,
 `Personal_Educational_From` varchar(5000) DEFAULT NULL,
 `Personal_Educational_To` varchar(5000) DEFAULT NULL,
 `Personal_Educational_Roll_No` varchar(5000) DEFAULT NULL,
 `Personal_GPA_Percentage` varchar(255) NOT NULL,
 `Persoanl_Educational_CGPA` varchar(5000) DEFAULT NULL,
 `Personal_Educational_Filled` int(11) NOT NULL,
 `Is_changed` int(11) NOT NULL DEFAULT 1,
 `Date` varchar(5000) DEFAULT NULL,
 `User_Id` varchar(500) NOT NULL,
 `Request_Id` int(11) NOT NULL DEFAULT 0,
 PRIMARY KEY (`Personal_Educational_Id`),
 KEY `User_Id` (`User_Id`)
) ENGINE=InnoDB AUTO_INCREMENT=213 DEFAULT CHARSET=latin1
  

Я извлек запись с помощью php, как показано ниже:

   <table width="100%" border="1" style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; overflow:wrap; ">

             
            <tr style="background-color: lightblue; " >
              <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">Sr #</th>
                <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">Level</th>
                 <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">Subject</th>
                  <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">Educational Institute</th>
                   <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">Roll No (New entrants to indicate Roll No of exams passed)</th>
                    <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">From</th>
                    <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">To</th>
                <th style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px; text-align:left ; font-size:11px;">GPA / Percentage</th>
               
            </tr>
            <tr >
  <td style=" border: 0px solid black;border-collapse: collapse;  " colspan=8>

   <div style="text-align: center"><u><b>ORIGINAL DATA</b></u></div>
</td>
 </tr>
  <tbody>
<?php 
SELECT * from  personal_educational_record  where User_Id = '5692'  and Request_Id='117'   ORDER BY Personal_Educational_Id
    
$res_cus = mysqli_query($connection, $query);
 $count_row=  mysqli_num_rows($res_cus);
while ($row = mysqli_fetch_array($res_cus)) {


?>


<tr>
 <td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
 .$count.
 '</td>

<td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($row['Personal_Educational_Level']).
   '</td>

<td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($row['Personal_Educational_Subject']).
   '</td>

<td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($row['Personal_Educational_Institute']).
   '</td>
   <td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($row['Personal_Educational_Roll_No']).
   '</td>

   <td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($Personal_Educational_From).
   '</td>
   <td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($Personal_Educational_To).
   '</td>


<td style=" border: 1px solid black;border-collapse: collapse; text-align:left ; font-size:11px;">'
  .strtoupper($row['Persoanl_Educational_CGPA']).'amp;nbsp;'.strtoupper($row['Personal_GPA_Percentage']).
   '</td>




   
  </tr>

 <?php
         
  $count  ; }
  
  ?>
  

Вывод:

 sr#     Level       Subject         Institute Name          Roll #          FROM            TO                  Percentage / CGPA / GRADE
1       SSC/EQV     SCIENCE         MUSLIM TOWN             0000            22-10-2008      22-10-2009          52 %
2       SSC/EQV     SCIENCE         MUSLIM TOWN             123             22-10-2008      22-10-2009          52 %
3       HSSC/EQV    SCIENCE         IDEAL CAMBRIDGE         88888           22-11-2010      22-11-2012          A GRADE
4       HSSC/EQV    MATHS           IDEAL CAMBRIDGE         88888           22-11-2010      22-11-2012          B GRADE 
5       BACHELORS   SOFTWARE        FUUAST                  7654567         22-02-2222      11-11-1111          3.01 CGPA
  

Теперь в приведенном выше выводе sr # 1 и sr # 2 имеют разные записи для столбца #, а sr # 3 и sr # 4 имеют разные записи для темы столбца.

Теперь я хочу выделить столбец или строку, в которых есть разные данные из другой строки

мои усилия

 SELECT * from  personal_educational_record  INNER JOIN (SELECT * FROM personal_educational_record GROUP BY Personal_Educational_Id HAVING COUNT(Personal_Educational_Id) >1  )temp ON personal_educational_record.Personal_Educational_Id=temp.Personal_Educational_Idwhere personal_educational_record.User_Id = '5692'  and personal_educational_record.Request_Id='117'
  

Комментарии:

1. Теперь я хочу выделить столбец или строку, в которых есть разные данные из другой строки , просто представьте, что у вас есть ТРИ строки, которые отличаются только в одном столбце… что вы хотите выделить? То же самое, когда две строки идентичны, но третья отличается… И вы должны определить комбинацию столбцов или столбцов, равенство которых означает, что эта пара строк должна сравниваться (например, нужно ли сравнивать строки 3 и 4 в ваших образцах данных?).

2. Привет, Акина, спасибо за ваш комментарий, я хочу найти и выделить все не совпадающие столбцы, такие как первая строка со второй строкой, затем вторая строка с третьей строкой, затем третья строка с четвертой строкой и так далее .. и выделить непревзойденный столбец

3. Вы хотите сравнить каждую строку с предыдущей строкой и выделить разницу между текущей и предыдущей? т.Е. строка 2 сравнивается со строкой 1 и Roll # выделяется в строке 2, затем строка 3 сравнивается со строкой 2 и выделяет все поля, кроме Subject , и так далее?

4. да, вы правы

5. Если это так, извлеките строку и сохраните ее в массиве / переменных, затем, при извлечении и отображении следующей строки, сравните и выделите, когда предыдущие и текущие значения отличаются.