如何在一个表中统一3个文件?

时间:2011-10-31 13:16:48

标签: php mysql text-files

我有一个测试脚本,生成带答案的txt文件。并有2个txt文件与正确的答案。我想要: 1)统一一个表中的所有文件,如:

<table>
<tr>
<td>№ of question</td>
<td>data from file 1</td>
<td>data from file 2</td>
<td>data from file 3</td>
</tr>
...
</table>

2)我想在DB(MySQL)的文本中替换此文件中的id。我有一个带有类似id的问题和答案的表(就像在txt文件中一样)。

所有文件都具有以下结构:

1|3
2|4
3|1

其中第一个数字 - 是问题的ID,第二个是答案的变体。

我开始编码,但不知道如何包含文件中的数据:

// Slect from DB
$qsel=mysql_query("SELECT `qid`, `qtext` from `questions` ORDER BY `qid`");

// Open file 1 
$key1=fopen("data/test_1_key1.txt", "r");
$k1=explode("/r/n", $key1);

// Open file 2 
$key2=fopen("data/test_1_key2.txt", "r");
$k2=explode("/r/n", $key2);

$rtable='<table border="1" cellspacing="0" cellpadding="3">
    <tr>
      <th width="40%">Q</th>
      <th width="20%">A 1</th>
      <th width="20%">A 2</th>
      <th width="20%">NAME</th>
    </tr>';
  while($q=mysql_fetch_row($qsel))
  {

    $rtable.='<tr><td><b>'.$q['1'].'</b></td>'; 
    $rtable.='<td>data from file 1</td>'; 
    $rtable.='<td>data from file 2</td>'; 
    $rtable.='<td></td>'; 
  }
  echo '</table>'.$rtable;

1 个答案:

答案 0 :(得分:1)

我首先获取文本文件并将其转换为索引数组:

$tmp1 = file('text1.txt');
$data1 = array();
foeach($tmp1 as $line)
{
    list($key1, $val1) = explode("|", $line);
    $data1[$key1] = $val1;
}

然后,在mysql fetch循环中,只需使用索引数组:

while($q=mysql_fetch_row($qsel))
{

    $rtable.='<tr><td><b>'.$q['1'].'</b></td>'; 
    $rtable.='<td>' . ( isset( $data1[ $q['0'] ] ) ? $data1[ $q['0'] ] : '' ) . '</td>'; 
    $rtable.='<td>data from file 2</td>'; 
    $rtable.='<td></td>'; 
}