2016-08-21 6 views
-1

私は、それらをクリックすると、mysqlデータベースに格納されたテキストがDIVタグのようなDIVタグに表示されるマーカー付きJavaScriptでGoogleマップアプリケーションを使用していますこのビデオ:https://youtu.be/VtcxLoAG7Wk私はxmlを解析するときにテキスト形式を維持するmysqlデータベースからのテキスト

問題は、そのテキストがそれを持っているときにブレークラインなしで表示されることです。あなたがビデオで見ることができるデータベースでさえ、保存されたテキストはまだフォーマットを持っています。

私の質問は、テキスト形式を維持しながらこのテキストを表示する方法です。私はgoogleマップから使用されたコードで見ることができるように、xmlを解析します。

 <script type="text/javascript"> 
    //<![CDATA[ 

var name; 
var html; 
var type; 
var lat; 
var point; 


    var customIcons = { 
     restaurant: { 
     icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png' 
     }, 
     bar: { 
     icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png' 
     } 
    }; 

    function load() { 
     var map = new google.maps.Map(document.getElementById("map"), { 
     center: new google.maps.LatLng(48.1351, 11.5820), 
     zoom: 5, 
     mapTypeId: 'roadmap' 
     }); 
     var infoWindow = new google.maps.InfoWindow; 

     // Change this depending on the name of your PHP file 
     downloadUrl("phpsqlajax_genxml.php", function(data) { 
     var xml = data.responseXML; 
     var markers = xml.documentElement.getElementsByTagName("marker"); 
     for (var i = 0; i < markers.length; i++) { 
      var name = markers[i].getAttribute("name"); 
      var address = markers[i].getAttribute("address"); 
      var type = markers[i].getAttribute("type"); 
      var point = new google.maps.LatLng(
       parseFloat(markers[i].getAttribute("lat")), 
       parseFloat(markers[i].getAttribute("lng"))); 
      var html = "<b>" + name + "</b> </text> <br/>" + address; 
      var icon = customIcons[type] || {}; 
      var marker = new google.maps.Marker({ 
      map: map, 
      position: point, 

      }); 
      bindInfoWindow(marker, map, infoWindow, html, name); 
     } 
     }); 
    } 

    function bindInfoWindow(marker, map, infoWindow, html, name, downloadUrl) { 
     google.maps.event.addListener(marker, 'click', function() { 
     // infoWindow.setContent(html); 
     // infoWindow.open(map, marker); 

     var textillo = document.getElementById("mensaje").innerHTML = name; 
     }); 
    } 

、マップにマーカーを表示主な機能は、別のコードを呼び出します。

<?php 
require("dbinfo.php"); 

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

// Opens a connection to a MySQL server 
$connection=mysql_connect ('localhost', $user, $pass); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($db, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 

// Select all the rows in the markers table 
$query = "SELECT * FROM markers WHERE 1"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

header("Content-type: text/xml"); 

// Start XML file, echo parent node 
echo '<markers>'; 

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 

// End XML file 
echo '</markers>'; 


?> 
+0

'mysql_ *'関数を使用して停止してください。 2015年12月にリリースされたPHP 7で廃止されました。代わりにPDO(またはmysqli_ *を使用する必要がある場合)を使用します。 – Chris

+1

入力の例、実際の出力、期待される出力を提供できますか? – Chris

答えて

0

だけで改行を「維持」するには、中のBR-タグにデータベースから改行を変換することができますHTMLで、nl2br PHP function。そのよう

<?php 
$yourText = 'text gotten from 
database'; 
echo nl2br($yourText); 
+0

私はしようとしましたが動作しません。 私はこのように置く: var textillo = document.getElementById( "mensaje")。innerHTML = nl2br(name); var name = nl2br(マーカー[i] .getAttribute( "name"));それは何も表示されません と私はこのように置く場合。 マーカーはマップにも設定されていません。 なぜこれが起こるのか分かりません –

+0

JavaScript内部でnl2br()PHP関数を使用しようとしているようです。 PHP関数なので、これはうまくいかない。 'return nl2br($ xmlStr);' – ArSeN

+0

あなたが言ったようにこのコードを試しましたが、私がやったときにうまくいきませんでした。マーカーはマップに入力されません。 関数parseToXML($ htmlStr) {$ xmlStr = str_replace( '<'、 '<'、$ htmlStr)。 $ xmlStr = str_replace( '>'、 '>'、$ xmlStr); $ xmlStr = str_replace( '"'、 '"'、$ xmlStr); $ xmlStr = str_replace( " '"、' ' '$ xmlStr); $ xmlStr = str_replace( "&"、' &」、 $ xmlStr); リターンnl2br($ xmlStr);あなたはnl2brを追加することを意図どこ } は、それがここにある –

関連する問題