2016-07-06 5 views
0

phpスクリプトでは、文字列やext/domを使用してforeachループを実行してmsqlデータベースから値を取得するXMLデータを出力するにはどうすればよいですか? EDITED:XMLを出力するためにext/domを使用するForeachループの使用方法

<?php 
#Programmer: Moses Byanyuma 

require('./.env'); 


// Opens a connection to a mySQL server 
try { 
    $db = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME. ';charset=utf8', DB_USERNAME, DB_PASSWORD); 
} catch (PDOException $e) { 
    echo "An Error occured, could not connect!"; 
} 

$statement = $db->query('SELECT * FROM markers'); 

$xml = new DOMDocument("1.0"); 
$xml->formatOutput = true; 

$markers = $xml->createElement('markers'); 
$markers = $xml->appendChild($markers); 

while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { 

    $marker = $xml->createElement('marker'); 
    $markers->appendChild($marker); 

    $marker->setAttribute('name', $row['name']); 
    $marker->setAttribute('lat', $row['lat']); 
    $marker->setAttribute('lng', $row['lng']); 
    $marker->setAttribute('address', $row['address']); 
    $marker->setAttribute('type', $row['type']); 

} 


echo "<xmp>".$xml->saveXML()."</xmp>"; 

?> 
+0

何を試しましたか?あなたの前の質問にDOMの例へのリンクを掲載しました。 – ThW

+0

@ThWはちょうどこの記事を編集しましたが、少し進歩しましたが、データベースからXMLに値を取得するのに苦労しています。私のforeachループを見てください。 –

+0

@ThWたとえば、試しました:$ name = $ xml- > createAttribute( 'name'、$ row ['name']);ブラウザ上では、createAttributeが1つのパラメータしか期待しておらず、文字列でなければならないというエラーが表示されます。 その後、私はgetAttributeでcreateAttributeを置き換えようとしましたが、これは完全に機能しませんでした。未定義の関数エラーがありました。何をするかidk:/ –

答えて

0

DOMDocument::createAttribute()最新の仕事は何の第二引数を持っていません。 DOMElement::setAttribute()を使用することをおすすめします。しかし、好きなように属性をノードとして作成することができます。

$document = new DOMDocument(); 
$foo = $document->appendChild(
    $document->createElement('foo') 
); 

// just set the attribute 
$foo ->setAttribute('one', '1'); 

// create and configure the attribute node 
$attribute = $document->createAttribute('two'); 
$attribute->value = '2'; 
// set it on the element 
$foo->setAttributeNode($attribute); 

// create and apppend and attribute 
$attribute = $foo->appendChild(
    $document->createAttribute('three') 
); 
// the value is actually a text node 
$attribute->appendChild(
    $document->createTextNode('3') 
); 

echo $document->saveXml(); 
+0

フィードバックに感謝します。私はこの記事を編集しました。私は進歩を遂げましたが、大きな問題が1つあります: –

+0

それはプレーンテキストのように見える完全なXMLではありません。値が.phpファイルから取得されていないため、私のindex.htmlファイル上でデータポイントが表示されない理由はわかりません。 –

+0

私自身の投稿を編集してしまって、あなたの編集を誤っていました。しかし、私のブラウザに表示されている出力は、普通の黒色のテキスト以外は表示されないので、実際のxml出力がマップ上に表示されない理由を考えません。/ –

関連する問題