如何使用mysql(2)中的数据在PHP中创建矩阵?

时间:2015-03-28 06:12:18

标签: php mysql

我有这段代码:

function    random()  
{  
 include('config/koneksi.php');  
  $result = mysql_query("select * from temp_hasil");  
  $n =mysql_num_rows(mysql_query("SELECT * FROM temp_hasil"));

for ($i = 1; $i <= $n; $i++)
{

 for ($j = 1; $j <= $n; $j++)    
    {

           $rows = mysql_fetch_array($result);


        $this->table[$i][$j] = $i == $j ? INF :  $rows['id'];


    }
}
}

function    __toString()  
{  
    $str = '<table class="table table-bordered" id="tableInput"> <tbody>';  
$str .= '<tr><td></td>';  
foreach ($this->table as $rowName => $row)  
{  
    $str .= "<td>$rowName</td>";  
}  
$str .= '</tr>';  
foreach ($this->table as $rowName => $row)  
{  
    $str .= "<tr><td>$rowName</td>";  
    foreach ($row as $columnName => $value)  
    {  
        $str .= "<td>";  
        $str .=  
            '<input class="form-control" type="text" value="' . $value . '" name="table[' . $rowName . '][' .
            $columnName . ']" requied' . ($columnName == $rowName ? ' disabled' : '') . '>';
        $str .= "</td>";
    }
    $str .= '</tr>';
}
$str .= '</tbody></table>';
return $str;
}

}
$str .= '</tr>';  
foreach ($this->table as $rowName => $row)  
{  
    $str .= "<tr><td>$rowName</td>";  
    foreach ($row as $columnName => $value)  
    {    
        $str .= "<td>";  
        $str .=  
            '<input class="form-control" type="text" value="' . $value . '" name="table[' . $rowName . '][' .
            $columnName . ']" requied' . ($columnName == $rowName ? ' disabled' : '') . '>';
        $str .= "</td>";    
    }      
    $str .= '</tr>';    
}  
$str .= '</tbody></table>';    
return $str;    
}`  

我有桌子&#34; temp_hasil&#34;如:

  id_temp  | id |          
  1        |  8 |  
  2        |  5 |    
  3        |  7 |  

如果我运行此代码,结果是:

      1     2    3 
 1  | INF  |  5 |  7 |
 2  |      | INF|    |
 3  |      |    | INF|   

但我想要最终结果如:

      1     2    3 
 1  | INF  |  5 |  7 |
 2  |  8   | INF|  7 |
 3  |  8   |  5 | INF|   

我如何在PHP中编码?代码有什么问题吗?谢谢,......:)

1 个答案:

答案 0 :(得分:0)

问题是 - 您只能获取一次完整的结果,并且无法获得第二个循环中的第一条记录。因此,将结果存储在数组中并使用数组创建矩阵。

这应该有效。试试这个。

function random()  
{  
 include('config/koneksi.php');  
 $result = mysql_query("select * from temp_hasil");  
 $n =mysql_num_rows(mysql_query("SELECT * FROM temp_hasil"));

 $r=array();
 for ($a = 1; $a <= $n; $a++)    
 {
     $rows = mysql_fetch_array($result);
     $r[]=$rows['id'];
 }
 for ($i = 1; $i <= $n; $i++)
 {
    for ($j = 1; $j <= $n; $j++)    
    {
        $this->table[$i][$j] = $i == $j ? INF :  $r[$j-1];
    }
 }
}

简单地说,您可以使用while循环并存储到数组,然后在sizeof($r)循环中使用数组count($r)for。你喜欢哪个。

function random()  
{  
 include('config/koneksi.php');  
 $result = mysql_query("select * from temp_hasil");

 $r=array();
 while($rows = mysql_fetch_array($result)) {
     $r[]=$rows['id'];
 }
 for ($i = 1; $i <= sizeof($r); $i++)
 {
    for ($j = 1; $j <= sizeof($r); $j++)    
    {
        $this->table[$i][$j] = $i == $j ? INF :  $r[$j-1];
    }
 }
}