2 に答える
あなたが抱えている問題は、コードの実行順序が原因です。PHP はインタープリター言語であることに注意してください。つまり、変数の内容はスクリプトの「上から下へ」設定され、使用されます。簡単に言えば、コードの本体でクエリが実際に実行される前に<title>
タグ (in ) が表示されるため、カスタム タイトルが選択されるずっと前にタイトルが設定されていることを意味します。header.php
基本的に、これを修正するために使用できる主なアプローチは 2 つあります。
1)変数が実際に使用/解釈される前に動的タイトルを選択できるように、含める行の上にクエリを配置します。header.php
2)インクルードされたファイルの本体で変数を変更できるように設計パターンを再考し、そのような厳密な実行順序を保証する必要はありません。これはいくつかの方法で行うことができます:出力制御とバッファリングを調べるか、さらに良いことに、ロジックを出力/プレゼンテーションから完全に分離 (つまり MVC) して、変数に対して好きなことを行うことができ、その後でのみあなたのページは実際に吐き出しました。
更新されたコードが機能しない理由については、おそらくまだ SELECT クエリを実行していないのに、返された $row オブジェクトにアクセスしようとしていることが原因です。基本的に、クエリの結果にアクセスすることはできません。これは、コード内でクエリがまだ実行されていないためです。
幸運を!
コメントでの私の答えはまだ有効です。選択部分を上に置きますrequire
:
<?php
//Do all the selects:
$bios = mysql_query( "SELECT *
FROM `comp_bios`
WHERE `comp_bios_id` = '{$id}'") or die(mysql_error());
$row = mysql_fetch_array($bios);
//Use this how ever you want: $row[comp_bios_position]
$title = "Biographies of Company Executives : " . $row[comp_bios_position];
require('includes/header.php');
?>
そして、あなた$title
はheader.php