0

以下のスクリプトは、配列とその個々の要素を正常にエコーしますが、開始ヘッドタグの後にスクリプトを実行して配列要素を使用してページタイトルを設定すると、ページタイトルとして「無題のドキュメント」が表示されます。

さらに、$title だけを echo して、タイトル タグ <> を php タグの前後に配置すると、タイトルがドキュメント タイプの定義として設定されます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

echo は、まだ設定されていない場合、以前に必要な関連する HTML タグを設定しているようです。回避策は何ですか??

<?php
include 'contentStream.php' ;
$upc = $_GET['upc'];
if (isset($upc))
{
global $upc ;
$query = "SELECT * FROM tracks WHERE album_upc='$upc'";
connect();
$db = mysql_select_db("XXXXX");
$results = mysql_query($query, $connection) ;
$result = mysql_fetch_assoc($results);
$title = $result['title']." by ".$result['author'] ;
echo "<title>".$title."</title>";
unset($results);
unset($query);
mysql_close($connection) ;
}
else
{
    echo "<title> MYsUPERsITe </title> " ;
}
?>
4

3 に答える 3

2

これは<head>要素内で実行されていますか? そうでない場合は、そうする必要があります。

contentstream.php が何であるかはわかりませんが、ページ内の間違った場所でこれを実行しているようです。

また、$title を $myTitle に変更して、$title が別の場所に設定されているかどうかを確認してください。

于 2012-12-06T14:02:59.590 に答える
1

あなたの問題は、ページの非 PHP セクションによってタグが既に生成された<title>で、タグのコンテンツを変更しようとしているようです。このアプローチは、PHP のようなサーバー側の環境では機能しません。

解決策の 1 つは、PHP を使用して HTML ページ全体を生成し、それを変数に格納して、echo()すべての作業が終わったらそのまま出力することです。

ページの上部で、データベース クエリを実行して解析し、$html後でエコーする文字列を作成します。上記のような複数echo()のステートメントは見苦しくなる可能性があり、後でサイトに Cookie やセッション変数を追加することになった場合にヘッダーなどの問題が発生する可能性があります。

<?php
    include ("my_cool_lib.php");
    $html = "<!DOCTYPE html>";
    $html .= "<html><head>";
    $db = connect_to_db();
    $resultset = run_a_query($db);
    $title = get_title($resultset);
    $html .= "<title>$title</title>";
    $html .= "</head><body>";
    $html .= "<h1>Results</h1>";
    // loop through $resultset 
    // $html .= track info
    // end loop
    $html .= "</body></html>";
    echo $html;
?>
于 2012-12-06T14:18:45.867 に答える
0

現在不足している関連する HTML タグを設定する必要があります。

<html> <head> <title>Your title</title> </head> <body> body stuff </body> </html>

于 2012-12-06T14:03:07.227 に答える