Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Dynamisches Menü ordnen
Frage
Hallo
ich möchte durch PHP ein dynamisches Menü generieren lassen.
Eigentlich ganz einfach, eine Mysql Tabelle mit Namen und Ziel und daraus einfach generieren.
Die Links sollen aber nun geordnet sein, ich dachte man könnte noch eine Spalte "position" machen und diese dann ordnen.
Jetzt kommt aber mein Problem, wenn ich zwischen zwei vorhandene Links einen neuen erstellen will oder einfach einen vorhandenen Link über einen anderen bereits vorhandenen stellen will, muss ich dann ja irgendwie die werte in der Positionsspalte verändern, kann mir vllt. jemand sagen wie man das genau machen kann? Oder ob es eine Seite dazu gibt, wo ein Tutorial steht?
Danke
Luke
Antwort 1 von Nessus
Hi,
dein Ansatz ist schon richtig, du machst auf diese Spalte dann einen einfachen order by asc, oder desc.
Du mußt lediglich Lücken dazwischen lassen.
Ich mache das immer in 10er Schritten, dann kannst du Sortieren ohne Ende.
Nessus
dein Ansatz ist schon richtig, du machst auf diese Spalte dann einen einfachen order by asc, oder desc.
Du mußt lediglich Lücken dazwischen lassen.
Ich mache das immer in 10er Schritten, dann kannst du Sortieren ohne Ende.
Nessus
Antwort 2 von luke
hi
danke für die antwort
jetzt mal angenommen folgende liste
jetzt muss ich doch, wenn ich home unter a haben will die id 10 auf mindestens 20 erhöhen und die 20 am besten mit irgendwas subtrahieren.
wie schaut das denn?
kann man irgendwie ermitteln, wo die nächste id ist?
oder wie sieht das ganze praktisch aus?
danke für die antwort
jetzt mal angenommen folgende liste
- home
- a
- b
jetzt muss ich doch, wenn ich home unter a haben will die id 10 auf mindestens 20 erhöhen und die 20 am besten mit irgendwas subtrahieren.
wie schaut das denn?
kann man irgendwie ermitteln, wo die nächste id ist?
oder wie sieht das ganze praktisch aus?
Antwort 3 von Nessus
Du denkst zu kompliziert.
Du vergibst in 10 er Schritten die ID. Machst in deinem SQL-Statement einen Order by spalte asc, bzw. desc und gut ist.
Die ID kannst du mit Mysqladmin super ändern.
Nessus
Du vergibst in 10 er Schritten die ID. Machst in deinem SQL-Statement einen Order by spalte asc, bzw. desc und gut ist.
Die ID kannst du mit Mysqladmin super ändern.
Nessus
Antwort 4 von Nessus
Hier ein kleiner Codeschnipsel:
Die Spalte "anzeigen" solltest du auf Typ ENUM stellen, da hier nur 1 für Anzeigen steht, oder 0 für verbergen.
In der Spalte "ort" stehen dann die ID`s für die Reihenfolge.
HTH
Nessus
<?
require("./dbconn.inc.php");
@mysql_connect($host,$user,$password)
or die("Abbruch: Verbindung zu ´$host´"
." konnte nicht hergestellt werden.");
@mysql_select_db($database)
or die("Abbruch: Datenbank ´$database´ konnte nicht"
." selektiert werden.<br><br>MySQL sagt: ".mysql_error());
$query = "SELECT * FROM navigation WHERE (`navigation`.`anzeigen` =1) ORDER BY `navigation`.`ort` ASC";
$result = @mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$text = $row["text"];
$url= $row["url"];
$ballontip= $row["ballontip"];
echo "<tr><td width=\"170\" ><a title= \"$ballontip\" href=\"$url\" target=\"haupt\" >$text</a></td></tr>";
}
?>
CREATE TABLE `navigation` (
`id` int(2) NOT NULL auto_increment,
`ort` int(2) NOT NULL default ´0´,
`text` text NOT NULL,
`ballontip` text NOT NULL,
`url` varchar(150) NOT NULL default ´´,
`anzeigen` int(1) NOT NULL default ´0´,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18 ;Die Spalte "anzeigen" solltest du auf Typ ENUM stellen, da hier nur 1 für Anzeigen steht, oder 0 für verbergen.
In der Spalte "ort" stehen dann die ID`s für die Reihenfolge.
HTH
Nessus
Antwort 5 von luke
hallo
stimmt, ich sehe ja wie du es meinst,
aber ich wollte mir eine browserbasierende administreation (also ein eigenes programm) machen, da ist das dann alles "automatisiert".
da wird das ganze schwerer ;)
stimmt, ich sehe ja wie du es meinst,
aber ich wollte mir eine browserbasierende administreation (also ein eigenes programm) machen, da ist das dann alles "automatisiert".
da wird das ganze schwerer ;)
Antwort 6 von Nessus
Zitat:
aber ich wollte mir eine browserbasierende administreation (also ein eigenes programm) machen, da ist das dann alles "automatisiert".
da wird das ganze schwerer ;)
aber ich wollte mir eine browserbasierende administreation (also ein eigenes programm) machen, da ist das dann alles "automatisiert".
da wird das ganze schwerer ;)
hmmmm, kann es sein, das du einige Sachen nicht verstanden hast?
Du hast den DB-Aufbau, den Output, was fehlt ist der Input und das kannst du Lösen wie du willst.
Inwiefern automatisieren?
Du mußt sicherlich Hand an die Anordnung legen, da geht nichts automatisch und ob du dir ein webbasiertes Tool bastelst oder Tools wie PHPmyAdmin nimmst dürfte fast egal sein, beide greifen auf die Tabelle zu.
Nessus
Antwort 7 von luke
ich habe das schon verstanden, keine sorge ;)
die sache mit den 10er-schritten will ich nochmal genau wissen.
wenn ich einen neuen link adde muss dieser ja 10 "punkte" weiter sein, als der link davor.
wie kann ich die letzte "zahl" und damit die n eue zahl ermitteln?
lluke
die sache mit den 10er-schritten will ich nochmal genau wissen.
wenn ich einen neuen link adde muss dieser ja 10 "punkte" weiter sein, als der link davor.
wie kann ich die letzte "zahl" und damit die n eue zahl ermitteln?
lluke
Antwort 8 von luke
hat sich erledigt, es klappt :)
Antwort 9 von Nessus
Und wie hast du das jetzt gelöst?
Nessus
Nessus
Antwort 10 von luke
genau wie du gesagt hast ;)

