2016-04-20 6 views
1

Also, ich habe eine MySQL-Datenbank, die Benutzer als Manager oder Mitarbeiter auflisten. Ich möchte die Menüleiste, die sie sehen, basierend auf den Eigenschaften ändern. Ich habe all das in PHP gemacht, aber als ich ein Re-Design durchging, dachte ich darüber nach, es in HTML-Dateien zu schreiben, aber ich kann nicht recht herausfinden, wie das funktionieren sollte. HierÄndern der HTML Menüleiste basierend auf PHP Session-Eigenschaften?

ist der PHP-Code, den ich verwendet wurde die Operation in der Datei menubar2.php zu tun:

<?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>"; 
} 
?> 

Und hier ist, wo ich es wurde mit (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> 

Gibt es einen Weg, ich kann dies ohne die include für die menubar2.php tun - das heißt, legen Sie alles in die HTML-Datei selbst, aber ohne alle echo Aussagen zu verwenden?

Sorry für die Newb Frage, aber ich treibe mich batty versuchen herauszufinden, wie HTML und PHP/MySQL alle zusammen. Danke!

+0

Ja sicher können Sie, aber ich denke, es ist klug, es in separaten Dateien zu halten, falls Sie dieses Menü auf einer anderen Seite benötigen, dann müssen Sie nicht kopieren und fügen Sie den Code in die zweite Datei ein Menüdatei hierhin. –

+0

Damit PHP funktioniert, selbst wenn Sie nur PHP einbinden, muss die Datei index.php genannt werden, nicht index.html – larsAnders

+0

Sie benötigen MVC, bitte lesen Sie mehr hier: https://en.wikipedia.org/wiki/Model% E2% 80% 93view% E2% 80% 93controller Ich würde vorschlagen, ein Framework zu testen, um zu tun, was Sie in netter Code brauchen –

Antwort

0

Dieser Ansatz ist solide, solange Sie Ihre Indexdatei index.php benennen. PHP war ursprünglich eine HTML-Templating-Sprache, und die Verwendung von Includes für Teile der Seite ist vollkommen korrekt. Sie könnten diesen Code direkt in index.php einfügen, aber die Verwendung von includes macht Ihren Code wiederverwendbarer. Auch hier ist einfacher und DRY Weg, um das Menü zu ändern, wenn Sie mehr als 0 Zeilen zurück:

$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>"; 

Zur Erweiterung nur ein bisschen weiter auf PHP - es ist eine serverseitige Sprache, was bedeutet, es nicht laufen im Browser des Benutzers wie Javascript. Wenn der Browser eine Seite anfordert, die in PHP endet, führt der Server das Skript aus, gibt die Ergebnisse aus (normalerweise als HTML) und gibt dem Browser nur die gerenderte Ausgabe . In diesem Fall, obwohl Ihre Hauptindex.php und die Includes alle php-Skripte enthalten, wird im Browser nur die Ausgabe des Skripts angezeigt.

Verwandte Themen