2012-03-10 11 views
0

まず、代替コードは必要ありません。 以下のコードを使用して、データベーステーブルからxmlファイルにデータを書き出したいが、正しいxmlタグを使用して "john"と "123"を取得しているだけで、2番目のforeach()最初にforeach()を呼び出すとテーブルが表示されます。xmlにデータベーステーブルを書き込む

<?php 

$dbhandle = sqlite_popen("propertydb", 0666, $err_msg); 
if(!$dbhandle) die("Could not open the database"); 

$query = "CREATE TABLE property(pCode VARCHAR(8), price VARCHAR(6), 
iFile VARCHAR(15),   visits VARCHAR(3))"; 
if(!sqlite_query($dbhandle, $query)){ echo "table not created (maybe already 
created)"; 
} 

$query = sqlite_query($dbhandle, 'SELECT * FROM property'); 
$result = sqlite_fetch_all($query, SQLITE_ASSOC); 

foreach ($result as $arow) { 
echo '<br> Postcode: ' . $arow['pCode'] . ' Price: ' . $arow['price'] . 
' Image File: ' . $arow['iFile'] . ' Visits: ' . $arow['visits']; 
} 

$outfilepointer = fopen("property.xml","w"); 
$outtext = "<estateagent> \n"; 
$outtext .= "<agentname>john</agentname> \n"; 
$outtext .= "<agentphone>123</agentphone> \n"; 
foreach ($result->property as $oneproperty) 
{ 
$propertyname = $oneproperty->propertyname; 
outtext .= '<property><postcode> $arow["pCode"] </postcode> 
<price> $arow["price"]</price> <imagefile> $arow["iFile"] </imagefile> <visits> 
$arow["visits"] 
</visits> </property> \n'; 
} 
$outtex .= "</estateagent>"; 
fwrite($outfilepointer, $outtext); 
fclose($outfilepointer); 
sqlite_close($dbhandle); 
?> 

これは、私はちょうどあなたのコードを使用してみましたし、XMLタグが現れない...私の出力がどうあるべきか

<estateagent> 
<agentname></agentname> 
<agentphone></agentphone> 
<property> 
<postcode></postcode><price></price><imagefile></imagefile><visits></visits> 
</property> 
<property>...</property> 
<property>...</property> 
</estateagent> 

答えて

1

です。それをメモ帳で開いてみてください。

foreachループに関しては、文字列を連結する必要があります。 foreachのために

outtext .= '<property><postcode> $arow["pCode"] </postcode> 
<price> $arow["price"]</price> <imagefile> $arow["iFile"] </imagefile> <visits> 
$arow["visits"] 
</visits> </property> \n'; 

、私の理解では、sqlite_fetch_allは配列を返すことです。あなたはそれを変数として扱っています。

foreach ($result as $oneproperty)を試してみてください。データベースがどのように構造化されているかわからないので、それがうまくいかない場合は、var_dump($result)を使用して$resultの出力を投稿してください。

これは、リテラル文字列が出力され、変数が挿入されないことを意味します。あなたはこれを実行する必要があります。

outtext .= '<property><postcode>'. $arow["pCode"]. '</postcode> 
<price>'. $arow["price"].'</price> <imagefile>'. $arow["iFile"].' </imagefile> <visits>'. 
$arow["visits"].' 
</visits> </property> \n'; 

最後に、代わりに文字列を手動でタグを作成するのではなく、XML Writerを使用することを検討してください。

+0

"警告:無効な引数がforeach()内で提供されました..." –

+0

解決策を提示するために私の答えを編集しました。 – F21

関連する問題