Ik heb mijn tbl als volgt opgebouwd
navi_id ,navi_name,navi_href,navi_title
Nu leest ie al alles uit, maar ik zou ook graag de volgorde kunnen wijzigen (en navi_id is daar niet voor bedoeld, aangezien ik later nog met submenu's wil werken)
Hetzelfde heb ik dus gebruikt voor een vorige site maar het script om van plaats te veranderen is (nodeloos?) ingewikkeld, aangezien hij vanalles moet controleren etc. Heb jij toevallig hier al een scriptje voor ?
Mijn script :
<?php
$dir="../";
include($dir."config.inc.php");
if (CheckAdmin() == TRUE) {
$query="SELECT * FROM pop_database WHERE tbl_name='$_GET[tbl]'";
$result=mysql_query($query);
if (mysql_num_rows($result)=='1') {
$database=mysql_fetch_array($result);
switch ($_GET['dir']) {
case "up" : $item2=$_GET['item']-1;break;
case "down" : $item2=$_GET['item']+1;break;
default : header("Location: ".$_GET['page']);
}
$query="SELECT * FROM $_GET[tbl]";
$result=mysql_query($query);
$num_rows=mysql_num_rows($result);
if ($item2=="0") {
header("Location: ".$_GET['page']);
}
else if ($item2 > $num_rows) {
header("Location: ".$_GET['page']);
}
else {
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '99'
WHERE ".$database['tbl_pos_field']." = '$item2'";
$result=mysql_query($query);
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '$item2'
WHERE ".$database['tbl_pos_field']." = '$_GET[item]'";
$result=mysql_query($query);
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '$_GET[item]'
WHERE ".$database['tbl_pos_field']." = '99'";
$result=mysql_query($query);
header("Location: ".$_GET['page']);
}
}
else {
header("Location: ".$_GET['page']);
}
}
else {
header("Location: index.php");
}
?>
Is zeer ingewikkeld stand-alone, een beetje ingewikkeld als je het in z'n geheel ziet :-p
Zoals het nu is niet, want er hangt geen CMS aan. Hij haalt de menu-items nu geloof ik op alfabet uit de DB. Maar als de tabel uitgebreid wordt met één veldje voor de plaats in het menu dan zou dat al moeten kunnen.
Dit is de tabelstructuur:
<?php
// tabelindeling
CREATE TABLE pulldown (
id int(4) NOT NULL auto_increment,
level int(1) NOT NULL,
parent_id int(2) NOT NULL,
titel varchar(64) NOT NULL,
link varchar(512) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
?>
En hiermee kun je hem vullen met wat voorbeeldgegevens:
<?php
// voorbeeldgegevens
INSERT INTO pulldown VALUES (1, 1, 0, 'home', 'home.php');
INSERT INTO pulldown VALUES (2, 1, 0, 'wie zijn we', 'wiezijnwe.php');
INSERT INTO pulldown VALUES (3, 1, 0, 'producten', 'producten.php');
INSERT INTO pulldown VALUES (4, 2, 3, 'dranken', 'dranken.php');
INSERT INTO pulldown VALUES (5, 2, 3, 'hoofdgerechten', 'hoofdgerechten.php');
INSERT INTO pulldown VALUES (6, 3, 5, 'vlees', 'vlees.php');
INSERT INTO pulldown VALUES (7, 3, 5, 'vis', 'vis.php');
INSERT INTO pulldown VALUES (8, 3, 5, 'vegetarisch', 'vegetarisch.php');
?>