2011-09-11 10 views
0
このよう

...変数の出力後に変数を宣言できますか? PHP

echo $title; 

$title = 'Jelly'; 

私は私のページの一部に、私は$のタイトルを宣言し、その前にヘッダファイルを持っているので、ページは、単純な$ _GET [」を使用して別のセクションを持っているのに私だけ頼みますタブ '] ===' blahblahblah ';

しかし、私は、ヘッダファイルと呼ばれてきた後に出力$タイトル場合は、これらの$ _GET変数は...

+0

"缶"の意味によって異なりますか?あなたはエラーを起こさないので、その意味ではあなたは "できます"。しかし、それは "ゼリー"をエコーし​​ません.... –

+0

それは宣言していない。これは、以前に使用されていない(したがって宣言されていない)変数からの最初の読み込みであり、後でそれを値に設定します。 – tdammers

答えて

1

しかし、私は、ヘッダファイルと呼ばれてきた後に、これらの$ _GET変数が宣言されている...

あなたは間違ってやっていることだ

すべての必要なデータを取得した後でのみ、ヘッダーを呼び出します。

これには適切なサイトアーキテクチャが必要です。 (あなたのヘッダを含む)

  1. 主サイトテンプレート
  2. 特定のページテンプレート
  3. ページコード:
    は3つの部分にコードを分割 。

この設定では、このような問題に遭遇することはありません。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>My site. <?=$pagetitle?></title> 
</head> 
<body> 
<div id="page"> 
<? include $tpl ?> 
</div> 
</body> 
</html> 

links.tpl.phpは、実際のページのテンプレートです:main.tpl.phpはあなたのメインのサイトテンプレートです
典型的なスクリプトは、ヘッダー、フッター、メニューなどのように、共通部分を含め、

<? 
//include our settings, connect to database etc. 
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php'; 
//getting required data 
$DATA=dbgetarr("SELECT * FROM links"); 
// setting title for using in the main template 
$pagetitle = "Links to friend sites"; 
//etc 
//set page template filename 
$tpl = "links.tpl.php"; 
//and then finally call a template: 
include "main.tpl.php"; 
?> 

のように見えることがあります。

<h2><?=$pagetitle?></h2> 
<ul> 
<? foreach($DATA as $row): ?> 
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li> 
<? endforeach ?> 
<ul> 
+0

私はこれを次のように使用しています... $ _GET ['tab'] === '受信箱' {} $ _GET ['tab'] === '新しいメッセージ' {}メールボックスメールボックスの別のページを表示するので、ヘッダーファイルの後に宣言する必要があります。ヘッダーファイルには、ページのHTMLコンテンツの前にすべてが含まれているからです。 – carlgcode

+0

あなたは間違っています。ヘッダファイルの後に宣言する必要はありません。テンプレートを使用します。私の例を見てください。 –

+0

okありがとう:)私はこれを調べます – carlgcode

1

番号を宣言されている$のタイトルは、事前に何か他のものに設定するか、しない限りされていない限り、それは出力何もなりますPHPのregister_globals設定が有効になっています(ph < 5.3.0)。 "title"はリクエストパラメータになります。

あなたがそれをすることが許されているかどうかを尋ねるなら、絶対に。変数は「Jelly」に変更されますが、その特定の値は上記のようにエコーされません。

0

宣言する前に$ titleを使用しないでください(PHPは宣言されていない変数の使用について通知し、$ titleの値はnullになるため何も出力しません)。 $ _GET変数は環境(Webサーバー)によって設定され、値を代入するべきではありません。$ _GET変数で受け取った値を読み取るだけです。