2014-05-06 65 views
0

我有一個使用javascript,php和SQL查詢的自定義PHP文件,但是它是全新的drupal,並且難以實現它。我已經嘗試了幾次模塊構建教程,但感覺不知所措/強調了大量的細節,至今還沒有得到我的青睞。是否可以輕鬆地將我的文件在我的XAMPP環境中很好地工作到一個drupal模塊中,而不會更改代碼太多?如果是這樣,我需要在我的PHP文件中進行哪些更改?Drupal - 輕鬆將自定義代碼轉換爲Drupal模塊?

下面是我的PHP文件中的代碼:

<?php 
$server = 'localhost';$user = 'root';$database = 'transportation';$password = null; 
$db = mysqli_connect($server, $user, $password, $database); 
?> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

var map = null; 
var infowindow = new google.maps.InfoWindow(); 
var markers = [ 

    <?php 
    if (isset($_GET['routeselected'])) 
    { 
    $result = mysqli_query($db, "SELECT * FROM STOP INNER JOIN RouteStop ON Stop.Stop_ID = RouteStop.Stop_ID WHERE RouteStop.Route_ID = " . (int)$_GET['routeselected'] . " AND RouteStop.Company_ID = " . (int)$_GET['companyselected']); 
    while ($row = mysqli_fetch_array($result)) 
     echo "{\"title\": '".$row['Stop_ID']."', \"lat\": '".$row['Latitude']."', \"lng\": '".$row['Longitude']."', \"description\": '".$row['StopName']."'},"; 
    } 
    ?> 

]; 

window.onload = function() { 

var mapOptions = { 
    center: new google.maps.LatLng(
     parseFloat(markers[0].lat), 
     parseFloat(markers[0].lng)), 
    zoom: 13, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
var path = new google.maps.MVCArray(); 
var service = new google.maps.DirectionsService(); 
var infoWindow = new google.maps.InfoWindow(); 
var map = new google.maps.Map(document.getElementById("map"), mapOptions); 
var poly = new google.maps.Polyline({map: map, strokeColor: '#F3443C'}); 

var lat_lng = new Array(); 
      for (i = 0; i < markers.length; i++) { 
      var data = markers[i] 
      var myLatlng = new google.maps.LatLng(data.lat, data.lng); 
      lat_lng.push(myLatlng); 
      var marker = new google.maps.Marker({ 
       position: myLatlng, 
       map: map, 
       title: data.title 
      }); 
      (function (marker, data) { 
       google.maps.event.addListener(marker, "click", function (e) { 
        infoWindow.setContent(data.description); 
        infoWindow.open(map, marker); 
       }); 
      })(marker, data); 
     } 
for (var i = 0; i < markers.length; i++) { 
    if ((i + 1) < markers.length) { 
     var src = new google.maps.LatLng(parseFloat(markers[i].lat), 
             parseFloat(markers[i].lng)); 
     var des = new google.maps.LatLng(parseFloat(markers[i+1].lat), 
             parseFloat(markers[i+1].lng)); 
     service.route({ 
      origin: src, 
      destination: des, 
      travelMode: google.maps.DirectionsTravelMode.DRIVING 
     }, function (result, status) { 
      if (status == google.maps.DirectionsStatus.OK) { 
       for (var i = 0, len = result.routes[0].overview_path.length; i < len; i++){ 
        path.push(result.routes[0].overview_path[i]); 
       } 
       poly.setPath(path); 
      } 
     }); 
    } 
} 
} 

</script> 

<?php 
if (isset($_GET['companyselected'])) 
    { 
    if ($result = mysqli_query($db, "SELECT DISTINCT RouteNum, RouteName FROM Route WHERE Company_ID = " . (int)$_GET['companyselected'])) 
    { 
    $fields = mysqli_fetch_fields($result); 
     echo "<table style='width:900px'><tr>"; 
    foreach ($fields as $column) 
     echo "<th>" . $column->name . "</th>"; 
     echo "<th>Select Bus Company</th></tr>"; 
    while ($row = mysqli_fetch_assoc($result)) { 
     echo "<tr>"; 
    foreach ($row as $field) echo "<td>" . $field . "</td>"; 
     echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?routeselected=" 
     . $row['RouteNum'] . "&companyselected=" . $_GET['companyselected'] . "\" style=\"color: green;\">Display Route</a></td></tr>"; 
    } 
    echo "</table>"; 
    } 
} 

if (!(isset($_GET['companyselected']))) { 
    $result = mysqli_query($db, "SELECT DISTINCT Company_ID, CompanyName " . "FROM Company"); 
    $fields = mysqli_fetch_fields($result); 
    echo "<table style='width:900px'><tr>"; 
    foreach ($fields as $column) 
    echo "<th>" . $column->name . "</th>"; 
    echo "<th>Select Bus Company</th></tr>"; 
    while ($row = mysqli_fetch_assoc($result)) { 
    echo "<tr>"; 
    foreach ($row as $field) echo "<td>" . $field . "</td>"; 
    echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?companyselected=" 
     . $row['Company_ID'] . "\" style=\"color: green;\">Show Routes</a></td></tr>"; 
} 
echo "</table>"; 
} 

?> 

回答

1

髒WAY1:您可以創建在體內(PHP過濾模塊)PHP內容的節點,並使用所有上面的代碼在您的節點,希望這將工作

髒way2:你可以用上面的邏輯與塊的,而不是一個節點,如果ü要包括在

多個頁面

模塊的方式:你必須提供你究竟是如何將更多信息像你的模塊工作(例如覆蓋用戶的公關ofile頁來包含地圖或者創建一個塊,你可以在模板中包含來自管理後端或..等的變量),但是你的代碼必須改變很多,你也應該使用drupal api(例如用於查詢drupal數據庫,訪問變量等)。 Drupal模塊採取(或至少應該採取)的drupal API的優勢,例如,而不是正常的php連接/查詢數據庫,你可以簡單地(和安全地),而不是使用[db_query function]

+0

感謝您的迴應NICS!我不知道你可以做那樣的事情!今天早些時候,我實際上只是繼續前進,並在我的網站中使用框架來顯示我的代碼(這只是一個簡單但定製的谷歌地圖)。我認爲我現在就要像現在這樣離開它,它工作得很好,但是我很可能會在不久的將來遇到同樣的問題,並且會使用你的建議:) – webhoodlum

+0

這就是骯髒的方式#3; - )有更多的骯髒的方法,如爲你想顯示地圖和其他人的主題/頁面創建.tpl.php ..感謝您的投票:-) – Nics