2016-04-20 4 views
1

私はマネージャや従業員としてユーザをリストするMySQLデータベースを持っています。私は、プロパティに基づいて表示されるメニューバーを変更したいと思います。私はこれをPHPでやったことがありましたが、再設計をするときにhtmlファイルに入れることを考えましたが、これがどのように機能するのかは分かりません。ここでPHPセッションプロパティに基づいてHTMLメニューバーを変更していますか?

は、私は、ファイルmenubar2.phpで操作を行うために使用したPHPのコードです:私はそれを使用していたところ

<?php 
$email = $_SESSION['logname']; 
$results = "SELECT email FROM manager_list WHERE email = '$email'"; 
$results = mysqli_query($cxn, $results) or die("Query died: query"); 
$numrows = mysqli_num_rows($results); 

if ($numrows == 0) 
{ 
    echo"<div id='menu'>"; 
    echo"<ul>"; 
    echo"<li><a href='index2.php'>Quick Review</a></li>"; 
    echo"<li><a href='myPerformance.php'>My Peformance</a></li>"; 
    echo"<li><a href='myGoals.php'>My Goals</a></li>"; 
    echo"<li><a href='sHelp.php'>Help</a></li>"; 
    echo"</ul>"; 
    echo"</div>"; 
} 

if ($numrows > 0) 
{ 
    echo"<div id='menu'>"; 
    echo"<ul>"; 
    echo"<li><a href='index2.php'>Quick Review</a></li>"; 
    echo"<li><a href='myPerformance.php'>My Peformance</a></li>"; 
    echo"<li><a href='myGoals.php'>My Goals</a></li>"; 
    echo"<li><a href='toolsManager.php'>Manager Tools</a></li>"; 
    echo"<li><a href='sHelp.php'>Help</a></li>"; 
    echo"</ul>"; 
    echo"</div>"; 
} 
?> 

そして、ここでは、(index.htmlを)

<?php 
include('sessionauth.php'); 
?> 
<!DOCTYPE html> 
<html> 
<head> 

<title>TinyEval</title> 
<link href="style.css" rel="stylesheet" type="text/css" media="screen" /> 
</head> 
<body> 
<div id="wrapper"> 
<?php 
include('header2.php'); 
include('menubar2.php'); 
?> 
    <!-- begin #page --> 
    <div id="page"> 
     <div id="content"> 
      <div class="post"> 
       <h2 class="title">Frequently Asked Questions</h2> 
       <div class="entry"> 

        <p>How do I fix my headers?</p> 

       </div> 
      </div> 
     </div> 
    </div> 
    <div style="clear: both;">&nbsp;</div> 
    <!-- end #page --> 
</div> 
<?php include('footer2.php'); ?> 
</body> 
</html> 

menubar2.phpのincludeなしでこれを行う方法はありますか?すなわち、すべてをechoステートメントを使用する必要はなく、htmlファイル自体に入れますか?

申し訳ありませんがnewb質問ですが、私はhtmlとphp/MySQLがどのように結びついているか把握しようとしています。 ありがとう!

+0

はい、可能ですが、別のファイルに保存することをお勧めします。別のページにそのメニューが必要な場合は、そのコードをコピーして2番目のファイルに貼り付ける必要はなく、メニューファイルが上書きされます。 –

+0

PHPを動作させるには、PHPを含むだけであっても、index.htmlではなくindex.phpというファイル名にする必要があります。 – larsAnders

+0

MVCが必要です。詳しくはhttps://en.wikipedia.orgをご覧ください。/wiki/Model%E2%80%93view%E2%80%93controller私はあなたに素晴らしいコードで必要なことをするためにフレームワークをチェックアウトすることをお勧めします –

答えて

0

インデックスファイルindex.phpに名前を付けている限り、この方法は実用的です。 PHPはもともとHTMLのテンプレート言語であり、このようにページの一部にインクルードを含めると完全に正しいものです。あなたはそのコードをindex.phpに直接入れることができますが、includeを使うとコードをより再利用できるようになります。また、ここにあなたが戻って0以上の行を取得するとき、メニューを変更する方法よりシンプルかつDRYです:

$numrows = mysqli_num_rows($results); 

//these lines get echoed in both cases 
echo "<div id='menu'>"; 
echo "<ul>"; 
echo "<li><a href='index2.php'>Quick Review</a></li>"; 
echo "<li><a href='myPerformance.php'>My Peformance</a></li>"; 
echo "<li><a href='myGoals.php'>My Goals</a></li>"; 
if ($numrows > 0) { 
    echo "<li><a href='toolsManager.php'>Manager Tools</a></li>"; 
} 
echo "<li><a href='sHelp.php'>Help</a></li>"; 
echo "</ul>"; 
echo "</div>"; 

をPHPに少しだけさらに拡大するために - それは実行されません意味、サーバー側の言語ですJavascriptのようなユーザーのブラウザでブラウザがPHPで終了するページを要求すると、サーバはスクリプトを実行し、結果を出力し(通常はHTMLとして)、ブラウザにというレンダリングされた出力のみを与えます。この場合、メインのindex.phpとincludeにすべてPHPスクリプトが含まれていても、ブラウザに表示されるのはスクリプトの出力だけです。

関連する問題