2012-07-12 29 views
0

所以昨天我決定學習PHP,JavaScript和HTML。我寫了一個PHP腳本,讓正確的輸出,當我在PHP5運行在終端,但是當我嘗試將其添加到使用Javascript它打印位和代碼的最後〜1/4的塊與表我沿着網頁試圖打印但沒有變量值。即使我從腳本中刪除了所有的回聲實例,它也會這樣做。PHP,HTML,JavaScript的AJAX代碼噴涌到瀏覽器

這裏的PHP:

<?php 
$foo = $_GET["t"]; 

$con = mysql_connect('host', 'user', 'pw'); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db('db', $con); 
if (!$db_selected) 
{ 
    die('Can\'t use db: ' . mysql_error()); 
} 

$sql = sprintf("SELECT fun FROM table WHERE op = '%s'", $foo); 

$data = mysql_query($sql); 
$result = array(); 
$i = 0; 
while($row = mysql_fetch_array($data)){ 
    $result[$i] = $row[0]; 
    $i++; 
} 

$dist = $name = range(min($result), max($result), .5); 

for($i=0; $i<count($dist); $i++) 
{ 
$temp = array_fill(0,count($result),0); 
    for($j=0; $j<count($result); $j++) 
    { 
    if ($result[$j] < $dist[$i]) $temp[$j] = 1; 
    } 
$dist[$i] = array_sum($temp)/count($temp); 
} 

$temp = array_fill(0,count($dist),0); 

for($i=0; $i<count($dist); $i++) 
{ 
if ($dist[$i] < 0.5) $temp[$i] = 1; 
} 

$best = $name[array_sum($temp)-1]; 
$less = 0; 
$more = 0; 

$temp = array_fill(0, count($result), 0); 
for($i=0; $i<count($result); $i++) 
{ 
if ($result[$i] < $best) $temp[$i] = 1; 
} 

$less = array_sum($temp)/count($temp); 

$temp = array_fill(0, count($result), 0); 
for($i=0; $i<count($result); $i++) 
{ 
if ($result[$i] > $best) $temp[$i] = 1; 
} 

$more = array_sum($temp)/count($temp); 

$equal = 1 - $less - $more; 

echo "<table border='1'> 
<tr> 
<th>Best</th> 
<th>Less</th> 
<th>Equal</th> 
<th>More</th> 
</tr>"; 

echo "<tr>"; 
echo "<td> $best </td>"; 
echo "<td> $less </td>"; 
echo "<td> $equal </td>"; 
echo "<td> $more </td>"; 
echo "</tr>"; 
echo "</table>"; 

mysql_close($con); 
?> 

和輸出我得到。

$最好)$溫度[$ I] = 1; } $ more = array_sum($ temp)/ count($ temp); $ equal = 1 - $ less - $ more;回聲「最好不少於平等」;回聲「」;回聲「最好」;回聲「$少」;回聲「$等於」;回聲「$ more」;回聲「」;回聲「」; mysql_close($ CON); ?當我在終端運行使用任意輸入值的php5>

輸出是:

<table border='1'> 
<tr> 
<th>Best</th> 
<th>Less</th> 
<th>Equal</th> 
<th>More</th> 
</tr><tr><td> 27 </td><td> 0.48417721518987 </td><td> 0.048523206751055 </td><td> 0.46729957805907 </td></tr></table> 

這是我想要的。

繼承人是否有幫助的HTML/JavaScript的。

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function hreCalc(str) 
{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","funCalc.php?t="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<form> 
<select name="totals" onchange="hreCalc(this.value)"> 
<option value="">Select a total:</option> 
<option value="5.5">5.5</option> 
<option value="6">6</option> 
<option value="6.5">6.5</option> 
<option value="8.5">8.5</option> 
</select> 
</form> 
<br></br> 
<div id="txtHint"><b>Total info will be listed here.</b></div> 

</body> 
</html> 

我剛開始學習這些語言,並且我嘗試了所有我能想到的。問題似乎來自>標誌,但我無法弄清楚如何解決它,據我可以告訴你應該能夠使用>在PHP中沒有它導致問題的HTML。即時通訊使用Ubuntu的12.04所以可能是我沒有安裝我需要的一切?

+0

因爲javascript是客戶端,而php是服務器端,所以你不能使用js輸出php,但是你可以用php輸出js – 2012-07-12 00:30:23

+1

如果你直接在瀏覽器中運行「funCalc.php」,你會得到什麼輸出從XMLHTTPRequest調用它? – 2012-07-12 00:31:05

+0

首先:SQL注入。我的網站是它的受害者。我吸取了教訓:保持備份和消毒輸入。 – 2012-07-12 00:31:35

回答

0

是您使用警報()來顯示整個響應 - 或者乾脆直接訪問該頁面在瀏覽器 - 你會看到它實際上返回整個php文件;只是您的瀏覽器將一切都解釋爲一個長HTML標籤。

這是幾乎可以肯定你的服務器沒有被設置爲服務.php文件與應用程序引起/ X-的httpd-PHP的MIME類型,做這將取決於你的服務器上的說明。

編輯這是假設你實際上已經建立了一個web服務器,而不是直接訪問你硬盤上的文件。如果沒有,那麼這將是你的問題,你需要去安裝Apache或IIS。

+0

謝謝。我想到了。我使用的是tomcat,但沒有正確設置php。感謝大家的幫助。對不起,浪費你的時間與愚蠢? – sayhey69 2012-07-12 07:47:38

+0

@ user1519291不用擔心;我記得當我開始使用PHP時遇到類似的問題。如果我的回答幫助你,你能把它標記爲你接受的答案嗎?謝謝 :-) – Braiba 2012-07-12 07:54:48

0

你做的一切權利,因爲PHP命令行工作正常。

這裏是一個可能的答案:

「PHP代碼的偉大,不是操作符(>)是由HTML編輯器的文本格式的算法被損壞的風險

PHP代碼後greater-比符號可以通過用一對HTML風格註釋定界符+假HTML端&開始鹿的周圍,作爲PHP風格的註釋被安全地嵌入到HTML

例:

<html> 
<body> 
Safe-<?php 
/*><!--*/ 
    if (4>3) { 
     echo "PHP-"; 
    } 
/*--><?*/ 
?>embedding 
</body> 
</html>" 

因此,簡而言之,你讓你的代碼的可讀性,但在假HTML註釋標記添加,你應該能夠欺騙你的解釋爲做正確的事情。

發現這裏(靠近頁面底部):http://php.net/manual/en/language.basic-syntax.phpmode.php

+0

謝謝。這似乎是這個問題,所以閱讀它。我的第一次嘗試這樣做已經抑制了所有輸出 – sayhey69 2012-07-12 01:18:07

+0

還沒有能夠弄清楚。發現這個:[http://forums.phpfreaks.com/index.php?topic=144158](http://forums.phpfreaks.com/index.php?topic=144158)。但這不應該是問題,因爲我的文件是一個.php。每當我添加假的HTML評論標籤,即使它仍然在控制檯工作,根本沒有輸出。 – sayhey69 2012-07-12 06:35:51

+0

不值得像這樣破壞你的代碼的可讀性;如果這確實成爲問題(說實話,我可疑),只是切換到一個不太可怕的HTML編輯器。 – Braiba 2012-07-12 07:11:36