2011-02-25 225 views
0

我有以下代碼...奇怪的PHP問題

<?php 
    session_start(); 
    require_once('myDB.php'); 
    if (isset($_POST)) 
    { 
    foreach($GLOBALS['myDB']->getShops()as $i) 
    { 
     $tempLat = $i['latitude']; 
     $templong = $i['longitude']; 
     $distance = distance($_POST['latitude'],$_POST['longitude'],$tempLat,$templong); 
     if($distance <= 300) 
     { 
      echo "".$i['id']."|".$i['shopName']."|".$i['longitude']."|".$i['latitude']."|".$i['advert']."|"; 
     }  
    } 
    } 
    function distance($lat1, $lon1, $lat2, $lon2) { 
    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    return (($miles * 1.609344)*1000); 
} 
?> 

現在,當我能看到該網頁它給了我錯誤324(淨值:: ERR_EMPTY_RESPONSE)和它說,該網站可能暫時關閉...如果我嘗試打開使用Firefox的頁面,它會打開一個對話框,下載PHP文件...

我想要做的是讓它打印回聲(如果距離是在事實上大於300米)或者什麼也沒有,但它應該仍然是一個空的HTML頁面...

任何人都可以看到最新的錯嗎?

注:該代碼工作正常,在本地卻沒有關於我server..however按預期工作所有其他頁面,以便服務器和運行...

+1

'錯誤324'是Chrome的錯誤代碼,(可能)不具有任何與你的PHP。你可以發佈你的瀏覽器在你嘗試加載頁面時得到的'headers'嗎? – drudge

+0

@jnpcl我試過不同的瀏覽器,甚至不同的電腦,並仍然是相同的...在標題中說,該頁面不可用... – mixkat

+0

得到提示下載.php文件,而不是得到它的輸出意味着什麼東西吹了過去甚至PHP的內部處理程序都可以捕獲它。檢查服務器的錯誤日誌中是否有任何看起來相關的內容。 –

回答

0

好一個註釋掉,並取消註釋每行一個後,我發現那裏的問題是...

foreach($GLOBALS['myDB']->getShops()as $i) 

在數據庫中的查詢是因爲設置爲LONGTEXT一個字段的類型的失敗.. 。

毫無意義可言,但改變這種爲VARCHAR解決了這一問題...

+0

這應該是在你原來的問題作爲更新而不是答案。 – Serge

+0

@Serge如何回合?起初我以爲我解決它並把它作爲一個答案,但後來證明我錯了......這絕對是現在的答案,但... – mixkat

0

如果我看了你的代碼的權利,你只打算如果$ distance> 300則得到迴應。需要考慮的事情。

+0

這是正確的,但Im傳入的值肯定會返回<300 – mixkat

0

答案是在您的IF之後放置一個ELSE語句。你會看到它只是打印一個HTML框架。

顯然,你會想要一個doctype聲明,也許一個不錯的消息,說「無結果」,但你的想法...

<?php 
    session_start(); 
    require_once('myDB.php'); 
    if (isset($_POST)) 
    { 
    foreach($GLOBALS['myDB']->getShops()as $i) 
    { 
     $tempLat = $i['latitude']; 
     $templong = $i['longitude']; 
     $distance = distance($_POST['latitude'],$_POST['longitude'],$tempLat,$templong); 
     if($distance <= 300) 
     { 
      echo "".$i['id']."|".$i['shopName']."|".$i['longitude']."|".$i['latitude']."|".$i['advert']."|"; 
     }  
    } 
    } 
else{ 
    print '<html><Head><title></title></Head><body></body></html>'; 
} 
    function distance($lat1, $lon1, $lat2, $lon2) { 
    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    return (($miles * 1.609344)*1000); 
} 
?> 

如果你仍然得到一個錯誤,是東西包含錯誤(您需要發佈),或者IF中的某個內容拋出異常。

你有錯誤報告嗎?你有沒有檢查你的網絡服務器日誌?你是否試過在try/catch中包裝可疑操作?

+0

@cinqoTimo這不是真的,即使在php中沒有任何東西,它仍然呈現爲空白頁面......至少在我的情況下......無論如何感謝回覆...... – mixkat

+0

@mixkat:你在服務器上有其他PHP頁面嗎? – drudge

+0

@cinqoTimo Yup剛剛編輯帖子以及...所有工作正常,甚至在本地,即使這個工作正常,但由於某種原因在服務器上沒有... – mixkat