MySQL PHP Query в CI - PullRequest
       6

MySQL PHP Query в CI

0 голосов
/ 07 ноября 2018

Мне нужна помощь с этим. Я должен передать функцию PHP MySQL в CodeIgniter, но он не показывает мне данные, он останавливается прямо в if (array_key_exists ($ pos, $ rs))

Хорошо ли выполняет запрос, но не вводит условное условие, если

Есть решение?

Это мой код в CodeIgniter

public function table($hour, $row)
    {
        global $rs;
        if ($rs === null) 
        {
          $this->db->select("CONCAT(t.tbl_row, '_', t.tbl_col) as pos, t.tbl_id, t.sub_id, s.sub_name", false);
          $this->db->join('redips_timetable AS t', 't.sub_id = s.sub_id');
          $rs = $this->db->get('redips_subject AS s')->result(); 
        }
        echo '<tr>';
        echo '<td class="mark dark">' . $hour . '</td>';
        for ($col = 1; $col <= 5; $col++) 
        {
          echo '<td>';
          $pos = $row . '_' . $col;
          if(array_key_exists($pos, $rs)) 
          {
            $elements = $rs[$pos];
            $id = $elements['sub_id'] . 'b' . $elements['tbl_id'];
            $name = $elements['sub_name'];
            $class = substr($id, 0, 2); 
            echo "<div id=\"$id\" class=\"redips-drag $class\">$name</div>";
          }
          echo '</td>';
        }
        echo "</tr>\n";
      }

Оригинальный код MySQL

function table($hour, $row) {
    global $rs;
    // if $rs is null then query database (this should be executed only once - first time)
    if ($rs === null) 
    {
        // first column of the query is used as key in returned array
        $rs = sqlQuery("select concat(t.tbl_row,'_',t.tbl_col) as pos, t.tbl_id, t.sub_id, s.sub_name
                        from redips_timetable t, redips_subject s
                        where t.sub_id = s.sub_id", 0);
    }
    print '<tr>';
    print '<td class="mark dark">' . $hour . '</td>';
    // column loop starts from 1 because column 0 is for hours
    for ($col = 1; $col <= 5; $col++) {
        // create table cell
        print '<td>';
        // prepare position key in the same way as the array key looks
        $pos = $row . '_' . $col;
        // if content for the current table cell exists
        if (array_key_exists($pos, $rs)) {
            // prepare elements for defined position (it can be more than one element per table cell)
            $elements = $rs[$pos];
            // id of DIV element will start with sub_id and followed with 'b' (because cloned elements on the page have 'c') and with tbl_id
            // this way content from the database will not be in collision with new content dragged from the left table and each id stays unique
            $id = $elements[2] . 'b' . $elements[1];
            $name = $elements[3];
            $class = substr($id, 0, 2); // class name is only first 2 letters from ID
            print "<div id=\"$id\" class=\"redips-drag $class\">$name</div>";

        }
        // close table cell
        print '</td>';
    }
    print "</tr>\n";
}

1 Ответ

0 голосов
/ 07 ноября 2018

/ * если вам нужно найти ключ массива

вы получили объект в переменной $ rs ($ rs = $ this-> db-> get ('redips_subject AS s') -> result ();) поэтому нужно конвертировать obj в массив для каждого цикла * /

public function table($hour, $row)
{
    global $rs;
    if ($rs === null) 
    {
      $this->db->select("CONCAT(t.tbl_row, '_', t.tbl_col) as pos, t.tbl_id, t.sub_id, s.sub_name", false);
      $this->db->join('redips_timetable AS t', 't.sub_id = s.sub_id');
      $rs = $this->db->get('redips_subject AS s')->result(); 
    }
    echo '<tr>';
    echo '<td class="mark dark">' . $hour . '</td>';
    for ($col = 1; $col <= 5; $col++) 
    {
    $arr = get_object_vars($rs[$col]);
      echo '<td>';
      $pos = $row . '_' . $col;
      if(array_key_exists($pos, $arr))
      {
        $elements = $arr[$pos];
        $id = $elements['sub_id'] . 'b' . $elements['tbl_id'];
        $name = $elements['sub_name'];
        $class = substr($id, 0, 2); 
        echo "<div id=\"$id\" class=\"redips-drag $class\">$name</div>";
      }
      echo '</td>';
    }
    echo "</tr>\n";
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...