CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
21.09.2005, 22:22:17
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
[Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Hallo Leute !
Da es hier ja leider keinen "suche script"-bereich gibt muss ich es wohl hier rein schreiben.
Ich suche ein Script, ein Tutorial oder HILFE, wie ich ein Horizontales Menü bauen kann, welches zudem auch noch Unterkategorien anzeigen kann.
Fertige Scripte gibt es schon, allerdings möchte ich meines per Admin Interface bearbeiten (MySQL fähig).
Hat irgendwer eine Idee, wie ich ein solches Menü selber programmieren kann oder gar ein Downloadlink ?
PS: JavaScript möchte ich aufgrund eines Kundeswunsches nicht verwenden.
Herzlichen Dank für Infos...
WALLi
|
21.09.2005, 22:44:12
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 82
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Hallo Walli,
erstelle zwei Tabellen (tbl_menu + tbl_submenu).
tbl_menu: id,pos,name,link
tbl_submenu: id,mid,pos,name,link
In tbl_menu werden alle Menüpunkte mit Position von links nach rechts (1 - n), Menünamen und Pfad gespeichert.
In tbl_submenu werden alle Untermenüs mit Beziehung zum Menüpunkt, Position von oben nach unten (1 - n), Untermenüpunktnamen und Pfad gespeichert.
Auslesen:
Ausgabe in eine Tabelle packen.
Erst alle Menüpunkte auslesen ("SELECT * FROM tbl_menu ORDER BY pos ASC") und erste Tabellenzeile füllen.
Dann alle Menüpunkte nochmals auslesen und in der nächsten Spalte die entsprechenden Untermenüpunkte zuordnen ("SELECT * FROM tbl_submenu WHERE mid='menupoint' ORDER BY pos ASC") und in Tabellenzellen einlesen.
Wenn Du style a auf diplay:block stellst, brauchst Du Dich nichtmal um die Zeilenumbrüche kümmern.
Die Tabelle muss aber die style-Eigenschaft "position:absolute" haben, da sich sonst beim öffnen des Menüs alles nach unten verschiebt.
Gruß,
Stevie B.
|
21.09.2005, 23:17:29
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Okay, das klingt schonmal ganz gut, wenn ich das jetzt auch noch so umsetzen könnte. Arbeite erst seit kurzem mit PHP.*Puuh* .....
|
21.09.2005, 23:57:06
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Welche Pfade meinst du eigentlich bei der "tbl_menu" ? Also zu welcher Datei ?
Eigentlich gibts es dort doch keine oder ?
|
22.09.2005, 00:21:37
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 82
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Ich würde mit Templates arbeiten, so kannst Du die aufzurufenden Seiten einfach mit einer switch-Anweisung einbinden.
Hier mal ein Ansatz:
Code:
<?php
$cid = $_GET['cid'];
$scid = $_GET['scid'];
?>
<html>
<head>
<title>Menü-Demo</title>
<style type="text/css">
body,td { font-family:Arial; font-size:10pt; color:#000000; }
a.menu:link { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu:visited { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu:hover { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu:active { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu_active:link { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:visited { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:hover { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:active { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu:link { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu:visited { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu:hover { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu:active { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu_active:link { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:visited { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:hover { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:active { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
</style>
</head>
<body>
<table style="position:absolute;left:10px;top:10px;" width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<table border="0" align="center" cellpadding="1" cellspacing="2">
<tr>
<?php
$sql = @mysql_query("SELECT * FROM tbl_menu ORDER BY pos ASC");
if (@mysql_num_rows($sql) > 0) {
while ($tmp = @mysql_fetch_array($sql)) {
print "<td>";
print "<a ";
if ($cid = $tmp[id]) print "class=\"menu_active\" ";
else print "class=\"menu\" ";
print "href=\"?cid=".$tmp[id]."\">".$tmp[name]."</a>";
print "</td>";
}
}
?>
</tr>
<?php
if ($cid != "") {
$sql = @mysql_query("SELECT * FROM tbl_menu ORDER BY pos ASC");
if (@mysql_num_rows($sql) > 0) {
print "<tr>";
while ($tmp = @mysql_fetch_array($sql)) {
$mid = $tmp[id];
print "<td>";
if ($mid == $cid) {
$erg = @mysql_query("SELECT * FROM tbl_submenu WHERE mid='$mid' ORDER BY pos ASC");
if (@mysql_num_rows($erg) > 0) {
while ($sub = @mysql_fetch_array($sub)) {
print "<a ";
if ($scid = $sub[id]) print "class=\"submenu_active\" ";
else print "class=\"submenu\" ";
print "href=\"?cid=".$tmp[id]."&scid=".$sub[id]."\">".$sub[name]."</a>";
}
}
}
print "</td>";
}
print "</tr>";
}
}
?>
</table>
</td>
</tr>
</table>
<br>
<?php
if ($scid != "") {
@include("templates/sub/".$scid.".htm");
} elseif ($cid != "") {
@include("templates/main/".$cid.".htm");
} else {
@include("templates/main.htm");
}
?>
</body>
</html>
Ich hoffe, das hilft Dir ein Stück weiter. Du kannst auch anstelle der Nummern Dateinamen vergeben.
Gruß,
Stevie B.
Geändert von Stevie B. (22.09.2005 um 00:40:32 Uhr)
|
22.09.2005, 00:45:50
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Was kommt denn in die DB-Zelle "mid" ?
Und ist übrigens ein Fehler drin:
Fatal error: Call to undefined function mysql_erroru() in G:\xampplite\htdocs\menu\menu.php on line 14
Hier meine menu.php:
PHP-Code:
<?php
$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "menu";
$dbverbindung = mysql_connect ($host, $user, $password) or die("Verbindung zur Datenbank fehlgeschlagen");
$db_select = MYSQL_SELECT_DB($dbname) OR DIE (mysql_erroru());
$cid = $_GET['cid'];
$scid = $_GET['scid'];
?>
<html>
<title>MenÜ-Demo</title>
<head>
<style type="text/css">
body,td { font-family:Arial; font-size:10pt; color:#000000; }
a.menu:link { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu:visited { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu:hover { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu:active { font-family:Arial; font-size:10pt; color:#0000FF; text-decoration:none; }
a.menu_active:link { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:visited { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:hover { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.menu_active:active { font-family:Arial; font-size:10pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu:link { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu:visited { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu:hover { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu:active { display:block; font-family:Arial; font-size:9pt; color:#0000FF; text-decoration:none; }
a.submenu_active:link { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:visited { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:hover { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
a.submenu_active:active { display:block; font-family:Arial; font-size:9pt; font-weight:bold; color:#FF0000; text-decoration:none; }
</style>
</head>
<body>
<table style="position:absolute;left:10px;top:10px;" width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<table border="0" align="center" cellpadding="1" cellspacing="2">
<tr>
<?php
$sql = @mysql_query("SELECT * FROM tbl_menu ORDER BY pos ASC");
if (@mysql_num_rows($sql) > 0) {
while ($tmp = @mysql_fetch_array($sql)) {
print "<td>";
print "<a ";
if ($cid = $tmp[id]) print "class=\"menu_active\" ";
else print "class=\"menu\" ";
print "href=\"?cid=".$tmp[id]."\">".$tmp[name]."</a>";
print "</td>";
}
}
?>
</tr>
<?php
if ($cid != "") {
$sql = @mysql_query("SELECT * FROM tbl_menu ORDER BY pos ASC");
if (@mysql_num_rows($sql) > 0) {
print "<tr>";
while ($tmp = @mysql_fetch_array($sql)) {
print "<td>";
$mid = $tmp[id];
$erg = @mysql_query("SELECT * FROM tbl_submenu WHERE mid='$mid' ORDER BY pos ASC");
if (@mysql_num_rows($erg) > 0) {
while ($sub = @mysql_fetch_array($sub)) {
print "<a ";
if ($scid = $sub[id]) print "class=\"submenu_active\" ";
else print "class=\"submenu\" ";
print "href=\"?cid=".$tmp[id]."&scid=".$sub[id]."\">".$sub[name]."</a>";
}
}
print "</td>";
}
print "</tr>";
}
}
?>
</table>
</td>
</tr>
</table>
<br>
<?php
if ($scid != "") {
@include("templates/sub/".$scid.".htm");
} elseif ($cid != "") {
@include("templates/main/".$cid.".htm");
} else {
@include("templates/main.htm");
}
?>
</body>
</html>
Geändert von wallis (22.09.2005 um 00:52:40 Uhr)
|
22.09.2005, 12:31:46
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 82
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
In das Feld mid kommt die MenüId. Also die ID des Menüpunktes, zu dem das Untermenü gehört. Damit stellst Du eine Beziehung zwischen beiden Tabellen her.
z.B.:
Der erste Menüpunkt hat logischer Weise die ID 1. Alle Untermenüs, die zu diesem Menüpunkt gehören müssen im Feld mid eine 1 stehen haben. Somit weiß das Script, dass es diese Untermenüpunkte unter den ersten Menüpunkt stellen muss.
Fehler: mysql_erroru() gibt es nicht. Es heißt mysql_error()
Gruß,
Stevie B.
|
23.09.2005, 00:42:08
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Okay, das klappt dann auch schon.
Doch wäre es gut, wenn du mir das mit den "Templates" erklären könntest.
Was muss in die Datei rein, und wie müssen sie heissen ?
Gruss...
WALLi
|
24.09.2005, 12:18:57
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Stevie ?
Wie sehen dann die Templates aus ?
|
29.09.2005, 19:03:30
|
Anfänger
|
|
Registriert seit: Jun 2005
Beiträge: 92
|
|
AW: [Suche] PHP - Horizontales Layer Menü mit DB Anbindung
Hallo ? Stevie ?
Keine Antwort mehr ? Schade...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:47:40 Uhr.
|