为什么我的HTML标签消失了


Why are my HTML tags disappearing?

我正在创建一个包含三个组件的网站。(我将添加JQuery和CSS,但现在我只是想解决一些基本的机制)

我的结构是:

  • 用于表示层的HTML文件
  • 用于客户端处理的JAVASCRIPT文件
  • 用于服务器端处理的PHP文件

以下是我的代码:

html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script type="text/javascript" src="RipListQuery.js"></script>
    <title>CD Riplist Query</title>
</head>
<body onload="getArtists()">
    <h1>CD Riplist Query</h1>
    <div id="divArtists" >
    </div>
</body>
</html>

Javascript:

function getArtists() {
xmlhttp = new XMLHttpRequest();

xmlhttp.open("GET","dataAccess.php",false);
xmlhttp.send();
document.getElementById("divArtists").innerHTML=xmlhttp.responseText;
}

php:

<?php
$con = mysql_connect('myServerAddress', 'ainsworthremote', 'myPassword');
if (!$con) {
    die("Could not connect: " . mysql_error());
}
$response = 
 "<table border='1' id='Artists'><thead><tr><th>Artist</th><th>Albums</th></tr></thead><tbody>";
mysql_select_db("ainsworthremote", $con);
$sql="SELECT artist, COUNT(*) AS albums FROM CD_RipList GROUP BY artist ORDER BY artist ";
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    $response = $response . "<tr>" .
    "<td>" . $row['artist'] . "</td>" .
    "<td>" . $row['albums'] . "</td>" .
    "</tr>";
}
$response = $response . "</tbody></table>";
mysql_close($con);
echo $response;
?>

我没有像预期的那样得到一张满是艺术家名字的表格,而是得到了以下内容:

CD翻录查询

ArtistAlbums"; mysql_select_db("ainsworthremote", $con); $sql="SELECT artist, COUNT(*) AS albums FROM CD_RipList GROUP BY artist ORDER BY artist "; $result=mysql_query($sql); while ($row = mysql_fetch_array($result)) { $response = $response . "" . "" . $row['artist'] . "" . "" . $row['albums'] . "" . ""; } $response = $response . ""; mysql_close($con); echo $response; ?> 

我想知道的(除了我做错了什么)是:我的标签怎么了?

while语句没有意义,即使有意义,也应该使用equals运算符'==='而不是'='。您将从SQL请求返回一个数组,因此需要对该数组进行迭代。此外,当附加到现有的str变量时,您可以使用".="运算符,例如

$response .= "</tbody></table>";

而while循环可以是foreach循环。

$query = mysql_query($sql);
$result = mysql_fetch_array($result);
foreach($result as $row){
    $response .= "<tr>" .
    "<td>" . $row['artist'] . "</td>" .
    "<td>" . $row['albums'] . "</td>" .
    "</tr>";
}
$response .= "</tbody></table>";
echo $response;

看看这是否有帮助。除此之外,您可能会遇到一些报价转义问题,尽管看起来不错。