Optimiert Website + Menü laden

EngelchenB

Erfahrenes Mitglied
Was ist eurer meinung nach der beste weg ein mehrdimensonales Menü zu generieren, und den Text der website auszulesen (eventuell auch ein include je nach inhalt) und das alles am besten mit nur einem oder zwei Datenbank querys.

Menüs sollen auch wie gesagt untermenüpunkte haben die nur eine ebene unter der aktuellen angezeigt werden

Beispiel:

PHP:
+News
++ Eintrag schreiben
++ Archiv
+Bilder
++Jenny
+++2002
+++2003
+++2004
++Yassi
+++2003
+++2004
+++2005
+Witziges
++Bilder
+++1
+++2
+++3
++Filme

oder sowas wenn man auf Bilder klickt soll man beispielsweise nur das sehen:

PHP:
+News
+Bilder
++Jenny
++Yassi
+Witziges

usw...

nach meinen Überlegungen währe eine php datei mit einem array drin (dem grundmenü) und den rest halt queryn am besten, das ganze soll 100% dynamisch sein.

Wenn einer noch ideen für die Datenbankstruktur oder sowas hat währe ich dankbar, genau so in die möglich schnellste umsetzung da mir mein testcode zu langsam ist, und noch zuviele Querys braucht ;)
 
Hi,

nur ein kleines Bespiel :

(Ist noch optimierbar aber leider keine Zeit)
PHP:
<?
// Menue auslesen
$ergebnis = mysql_query("SELECT * FROM admin_menu_nav_category order by sort",$db);
while ($data = @mysql_fetch_array($ergebnis)){
$cat=$data[category];
echo "<a href=\"".$PHP_SELF."?categ=".$data[sort]."\"><b>$font$data[category]</b></a></td></tr>";
if($categ==$data[sort])$ergebnis2 = mysql_query("SELECT * FROM  admin_menu_nav where (`category` LIKE '$cat') ORDER BY site_button_title ASC ",$db);
   while ($daten = @mysql_fetch_array($ergebnis2)){?>  
<a href="<?echo$daten[link];?>" target="<?echo $daten[target];?>"><?echo$font;
          if($daten[site_button]=="") {
            Echo "&nbsp;&nbsp;&nbsp;".$daten[site_button_title];//Darstrellung als Text
            }
            else
            {
            echo"&nbsp;&nbsp;&nbsp;<IMG SRC=\"button.php?button=blue&text=$daten[site_button_title]\">"; //Darstellung als Pic
            }?> </a>

<? }?>

<?}?>




greetz
Ultrasonic
 
Zuletzt bearbeitet:
mhhh und damit krieg ich bis zu 255 oder noch mehr unterkategorien hin ?

und immer nur die Pfade angezeigt wo ich grad auf der webiste bin ?

meinetwegen nachdem ich hunderte male wo drauf geklickt hab dann

PHP:
+News 
+Bilder 
++Jenny 
+++2003
++++1. Quartal
+++++Ausen
++++++akt
+++++++Schwarzweis
++++++++50mm Blende
++++++++100mm Blende
++++++++150mm Blende
+Witziges

dann hätte man vorher auf Bilder, dann auf das Submenü Jenny dann 2003 dann Ausen dann akt dann schwartweis geklickt....

es werden ja nicht immer alle angezeit.... vorallem wie speichert man das dann am optimalsten in der Datenbank ab ? ;>

ich hatte Varienten mit einem "pre" Feld ausprobiert um dann immer die übergeordnete Categorie zu bekommen. Ich hatte welche mit "sub1" "sub2" "sub3" usw wo ich dann die Tiefe abgebildet habe, mir dieser konnte man dann schnelle abfragen machen, aber hatte das Problem das man eine feste maximaltiefe hat, und ein großes Datenaufkommen.

Ich hatte ein mehrdimensionales array kurzzeitig ausprobiert bin bei dem aber an manchen teilen gescheitert was das wieder auslesen betrifft.
 
ich habe dazu eine Kategory verwaltung geschrieben

einzelnen Menuepunkte werden ,über ein Adminmenu, den Kategorien zugeordnet.

So das man dann auch diese Punkte innerhalb der Menuestruktur verschieben kann.


zu: und damit krieg ich bis zu 255 oder noch mehr unterkategorien hin ?
Du kannst soviele einträge machen bis die Datenbank zusammenbricht :)
 
Ist zwar nicht sio gut Strucktoriert aber tut seinen Dienst

Ist noch aus der Zeit wo ich Php angefangen habe
Msste dir noch ein wenig umschreiben
Abeitet momentan nur auf einer Sbebene
wie gesagt habe wenig Zeit
PHP:
CREATE TABLE `admin_menu_nav` (
  `sort` char(2) NOT NULL default '',
  `category` varchar(255) NOT NULL default '',
  `button` varchar(255) NOT NULL default '',
  `site_button` varchar(100) NOT NULL default '',
  `link_site_button` varchar(255) NOT NULL default '',
  `target_site_button` varchar(100) NOT NULL default '',
  `site_button_title` varchar(255) NOT NULL default '',
  `title` varchar(255) NOT NULL default '',
  `link` varchar(255) NOT NULL default '',
  `target` varchar(20) NOT NULL default '',
  `leer` varchar(255) NOT NULL default '',
  `id` int(14) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;


CREATE TABLE `admin_menu_nav_category` (
  `category` varchar(100) NOT NULL default '',
  `sort` varchar(10) NOT NULL default '0',
  `id` int(14) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;
PHP:
<?
 if($lang=="eng"){ require('words_eng.php'); }else{ require('words.php'); };

If($ns==1)$neue_schaltf="-> Neue Schalfläsche"  ;
If($bearbeiten==1)$neue_schaltf="-> Schalfläsche bearbeiten";
If($loeschen==1)$neue_schaltf="-> Schalfläsche löschen";
?>
<hr>
 <b><?=$font;?>Schälfläschen Administration  <?=$neue_schaltf;?></b>
 <Hr>
 <?
// neuer Button
if($submit2){

   $sqlbefehl_neu = "INSERT INTO admin_menu_nav (category,link,target,site_button,site_button_title) VALUES ('$c','$l','$t','$sb','$sbt')";
    $qry = mysql_query($sqlbefehl_neu) OR die(mysql_error()) ;
}
if($neu){$ergebnis = mysql_query("SELECT * FROM admin_menu_nav",$db);
?>

<form method="post" action="<? echo $PHP_SELF ?>?submit2=submit2">

<table border="<?echo $tab_border;?>" cellspacing="0">
<tr>

<td> <b><?=$font;?>Kategorie wählen:</td>
<tD>
<select name="c" size="1" >
<?//Table category  auslesen
 $sqlbefehl_category = mysql_query("SELECT * FROM admin_menu_nav_category ",$db);
 while ($data = @mysql_fetch_array($sqlbefehl_category)){ ?>




<option value="<? echo $data[category]; ?>"><? echo$data[category];?></option>
         <?}?>

</select></td>
</tr><tr>
<td >Button-Name:</td>  <td ><input type="text" name="sbt" size="20" value=""></td>
</tr><tr>
<td >or Button_pic:</td> <td ><input type="text" name="sb" size="20" value=""></td>
</tr><tr>
<td >Link:</td>          <td ><input type="text" name="l" size="25" value=""></td>
</tr><tr>
<td >Target:</td> <td ><input type="text" name="t" size="20" value="haupt"></td>
</tr>


 </table>
<br>
 <input type="submit" name="submit" value="Neu">
   <hr>
</form>
<?
}


 // Button Löschen
if($clear1) mysql_query("DELETE FROM admin_menu_nav WHERE id=$clear1",$db);
$ergebnis = mysql_query("SELECT * FROM admin_menu_nav",$db);
if($clear1_1>0){
$hide_clear="button"and$br="<br><br><br>"AND$br1="<br>"AND $br2="<br><br>" ;
$clear1=$clear1_1;
if(empty($clear1_1))(
$hide_clear="hidden");
$sqlbefehl = "SELECT * FROM admin_menu_nav WHERE id=$clear1_1";
$ergebnis = mysql_query($sqlbefehl,$db);
$daten = mysql_fetch_array($ergebnis); ?>
Button : <?echo$daten["site_button_title"]; echo" löschen";
echo$br;?> <INPUT TYPE="<?echo$hide_clear;?>" VALUE="  ZURÜCK  " onClick="history.go(-1)"> <?echo $br2;?>
<INPUT  TYPE="<?echo$hide_clear;?>" VALUE="Wollen sie den Button wirklich löschen ?" onClick="self.location.href='inhalt_button_admin.php?clear1=<?echo $clear1;?>'""><?echo$br;?>
<? }// Button Edit
 if ($edit) {
if ($submit) {
$sqlbefehl = "UPDATE admin_menu_nav SET category='$c', link='$l',target='$t', site_button_title='$sbt',site_button='$sb' WHERE id=$edit";
    $qry = mysql_query($sqlbefehl) OR die(mysql_error()) ;
    echo "Daten f&uuml;r die ID ".$edit." wurden ge&auml;ndert<br>";
}
else {



$sqlbefehl = "SELECT * FROM admin_menu_nav WHERE id=$edit";
$ergebnis = mysql_query($sqlbefehl,$db);
$daten = @mysql_fetch_array($ergebnis); ?>
<form method="post" action="<? echo $PHP_SELF ?>">
<input type=hidden name="edit" value="<? echo $daten["id"] ?>">
<table border="<?echo $tab_border;?>" cellspacing="0">
<tr>
<td>Moment. Kategorie:</td>     <td ><b>&nbsp;<? echo $daten["category"];?></b></td>
</tr><tr>
<td>Neue Kategorie</td>
<tD>
<select name="c" size="1" >
<?//Table category  auslesen
 $sqlbefehl_category = mysql_query("SELECT * FROM admin_menu_nav_category ",$db);
 while ($data = @mysql_fetch_array($sqlbefehl_category)){ ?>




<option value="<? echo $data[category]; ?>"><? echo$data[category];?></option>
<?}?>

</select></td>
</tr><tr>
<td >Button-Name:</td>  <td ><input type="text" name="sbt" size="20" value="<? echo $daten["site_button_title"];?>"></td>
</tr><tr>
<td >or Button_pic:</td> <td ><input type="text" name="sb" size="20" value="<? echo $daten["site_button"];?>"></td>
 </tr><tr>
<td >Link:</td>          <td ><input type="text" name="l" size="25" value="<? echo $daten["link"];?>"></td>
</tr><tr>
<td >Target:</td> <td ><input type="text" name="t" size="20" value="haupt"></td>
</tr>

 </table>
<br>
 <input type="submit" name="submit" value="&Auml;ndern">
   <hr>
</form>
<?
}
}
?>
 <table border="<?echo $tab_border;?>" width="356" cellspacing="0">
        <tr>
                <td valign=top>Category&nbsp;&nbsp;</td>
                <td valign=top>Button Title&nbsp;</td>
                <td valign=top>Button Pic&nbsp;&nbsp;</td>
                <td valign=top>Link&nbsp;&nbsp;</td>
                <td >Target&nbsp;</td>
                <td valign=top>&nbsp;&nbsp;</td>
                <td valign=top>&nbsp;</td>
                <td >&nbsp;</td>
                <td >&nbsp;</td>
        </tr>
 <?     $sqlbefehl = mysql_query("SELECT * FROM admin_menu_nav order by category asc ",$db);
 while ($daten = @mysql_fetch_array($sqlbefehl)){?>
           <tr>
                <td ><?echo$daten[category];?></td>
                <td><?echo$daten[site_button_title];?></td>
                <td><?echo$daten[site_button];?>&nbsp;</td>
                <td ><?echo$daten[link];?></td>
                <td ><?echo$daten[target];?></td>

                <td >&nbsp;</td>
                <td >&nbsp;<a href="<? echo ''.$PHP_SELF.'?edit='.$daten[id].'' ?>&bearbeiten=1">bearbeiten</a></td>

        </tr>
<?}?>
</table>

   <hR>
  <a href="<?echo $PHP_SELF;?>?neu=1&ns=1" target="_self"> <font color="black" face="Arial" size="2">Neue Schaltfläsche</a>
  <hr>
 
Zuletzt bearbeitet:
Zurück