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


how to create matrix in PHP with data from mysql (2)?

我有这个代码:

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;    
}`  

我有表格"temp_hasil",例如:

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

如果我运行这个代码,结果是:

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

但我想要的最终结果是:

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

如何在php中进行编码?代码有错吗?谢谢,…:)

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

这应该行得通。试试这个。

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循环并存储到数组,然后在for循环中使用数组sizeof($r)count($r)。你喜欢哪一个。

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];
    }
 }
}