Измените таблицу bgcolor, если оба значения равны - PullRequest
0 голосов
/ 30 сентября 2018

Я занимался веб-приложением, в котором он извлекает все мои выбранные комбинации лотерейных билетов и соответствующие выигрышные комбинации.Вот как это работает / моя пошаговая работа:

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

    Здесь начинается логическая ошибка
  3. Сравнение первой найденной выбранной комбинации лото с каждой выигрышной комбинацией,(Первая выбранная комбинация равна первой выигрышной комбинации 1 и т. Д.) *
if($Picked1 == $Win1 || $Picked1 == $Win2 || $Picked1 == $Win3 || $Picked1 == $Win4 ||$Picked1 == $Win5 || $Picked1 == $Win6){
                    echo "<tr><td>$Win1</td>
                      <td>$Win2</td>
                      <td>$Win3</td>
                      <td>$Win4</td>
                      <td>$Win5</td>
                      <td>$Win6</td>
                      <td bgcolor = '#008000'>$Picked1</td>
                      <td>$Picked2</td>
                      <td>$Picked3</td>
                      <td>$Picked4</td>
                      <td>$Picked5</td>
                      <td>$Picked6</td></tr>";

Токовый выход (с логической ошибкой)

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

Например: если есть 4 выбранные комбинации лото, которые соответствуют выигрышным комбинациям, то это будет повторяться 4 раза (4 строки таблицы):

Вот изображение моего текущего результата:

enter image description here

Объективный вывод

Мне нужно исправить повторение строк печати и отметить ячейку таблицы, есливыбранная комбинация лото соответствует выигрышным комбинациям.Напечатайте одну строку с выбранными комбинациями лото и сделайте зеленый цвет ячейки bg, если он соответствует соответствующей выигрышной комбинации лото.

Вопрос

Как мне исправитьалгоритм?или мой алгоритм неверен с самого начала?

Вот мой полный код: https://pastebin.com/4gN9zqZZ

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018
  • Используйте массивы для хранения значений и запуска цикла, если вы выполняете ту же самую повторяющуюся проверку.

Код:

    <?php

    $winning_combinations = [$Win1,$Win2,$Win3,$Win4,$Win5,$Win6];

    while ($Row2 = mysqli_fetch_array($Picked_Lotto_Query, MYSQLI_ASSOC)){
        $picked_db_values = [];
        $picked_db_values[] = $Row2['First_Combination'];
        $picked_db_values[] = $Row2['Second_Combination'];
        $picked_db_values[] = $Row2['Third_Combination'];
        $picked_db_values[] = $Row2['Fourth_Combination'];
        $picked_db_values[] = $Row2['Fifth_Combination'];
        $picked_db_values[] = $Row2['Sixth_Combination'];    

        foreach($picked_db_values as $each_index => $each_combination){
            echo "<tr>
                    <td>$Win1</td>
                    <td>$Win2</td>
                    <td>$Win3</td>
                    <td>$Win4</td>
                    <td>$Win5</td>
                    <td>$Win6</td>";

                $combination_present = in_array($each_combination,$winning_combinations);//store it instead of checking in every iteration
                foreach($picked_db_values as $comb_index => $print_each_comb){
                    if($combination_present && $each_index === $comb_index){
                        echo "<td class='correct_combination'>";
                    }else{
                        echo "<td>";
                    }                
                    echo $print_each_comb;
                    echo "</td>";
                }
            }

            echo "</tr>";
        }
 }

Inваш style.css , просто напишите,

.correct_combination{
      background-color:#008000;
}
0 голосов
/ 30 сентября 2018

Проблема в том, что в каждом утверждении вы постоянно повторяете TDs .Таким образом, он дублируется.Вместо этого вы должны сделать это только один раз в соответствии с утверждением if следующим образом:

    echo "<tr><td>$Win1</td>
                  <td>$Win2</td>
                  <td>$Win3</td>
                  <td>$Win4</td>
                  <td>$Win5</td>
                  <td>$Win6</td>";
    if($Picked1 == $Win1 || $Picked1 == $Win2 || $Picked1 == $Win3 || $Picked1 == $Win4 ||$Picked1 == $Win5 || $Picked1 == $Win6){
                  echo "<td bgcolor = '#008000'>$Picked1</td>";
    else{
         echo "<td>$Picked1</td>";
    }
    if($Picked2 == $Win1 || $Picked2 == $Win2 || $Picked2 == $Win3 || $Picked2 == $Win4 ||$Picked2 == $Win5 || $Picked2 == $Win6){
                  echo "<td bgcolor = '#008000'>$Picked2</td>";
    else{
         echo "<td>$Picked2</td>";
    }
    if($Picked3 == $Win1 || $Picked3 == $Win2 || $Picked3 == $Win3 || $Picked3 == $Win4 ||$Picked3 == $Win5 || $Picked3 == $Win6){
                  echo "<td bgcolor = '#008000'>$Picked3</td>";
    else{
         echo "<td>$Picked3</td>";
    }
            //And so on...
             echo "</tr>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...