Scripts

Menu volgorde veranderen

Ik las laatst een topic met een vraag over het wijzigen van de volgorde van menu-items uit een database. In dit scriptje kan je alleen volgorde wijzigen, maar ik ben momenteel ook bezig om een scriptje (erbij) te schrijven waarin je dan menu-items en eventueel ook submenu items kan toevoegen en bewerken. Misschien kan onderstaaande op een veel gemakkelijkere manier, maar ik heb ervoor gekozen om het zo te doen. Voor dit voorbeeld heb ik onderstaande tabel gebruikt, maar het is natuurlijk mogelijk dit aan te passen of uit te breiden. Onderstaand script genereerd een valid XHTML 1.0 strict pagina. De CSS is niet valide, omdat die er alleen in staat om het iets overzichtelijker te maken. aanpassingen: - nummer een INT veld gemaakt (was een foutje) - foutafhandeling ingevoegd (bedankt Frank, even vergeten, krijg je als het gewoon werkt)

menu-volgorde-veranderen
[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Wijzig menuvolgorde</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
.menuitem{
    display:block;
    background-color:#cccccc;
    width:50px;
    float:left;
    }

</style>
</head>

<body>

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// maak database verbinding
$db = mysql_connect("server","username","password") or die ( "Het maken van de verbinding met de database is mislukt");

  mysql_select_db("database",$db);

//haal hoogste nummer op
$maxnr_row = mysql_fetch_assoc(mysql_query("SELECT MAX(nummer) AS maximum FROM menu"))or trigger_error(mysql_error());
$maxnr = $maxnr_row['maximum'];

//controleer of er op de downlink is geklikt
if(isset($_GET['down']) && is_numeric($_GET['down']) && isset($_GET['nummer']) && is_numeric($_GET['nummer'])){
	if($_GET['nummer'] > $maxnr || $_GET['nummer'] < 1){
		echo 'U moet het script zijn werk laten doen en er niet zelf mee gaan prutsen';
		}
	else{
		//bepaal het nummer van de andere link die van plaats veranderd
		$nr_change=$_GET['nummer']+1;
			//controleer of het wel mogelijk is een item nog verder op te schuiven
			if($nr_change >$maxnr){
			echo 'Dit Item kan niet nog verder naar het einde van het menu worden geschoven';
			}
			//als op kan schuiven, voer dan de update uit
		else{
			$downqry = "SELECT id FROM menu WHERE nummer = '".$nr_change."'";
			$downrow = mysql_fetch_assoc(mysql_query($downqry));
			$update_down = mysql_query("UPDATE menu SET nummer = nummer+1 WHERE id=".$_GET['down']);
			if (!$update_down){
				trigger_error(mysql_error());
				}
			$update_up = mysql_query("UPDATE menu SET nummer = nummer-1 WHERE id=".$downrow['id']);
			if (!$update_up){
				trigger_error(mysql_error());
				}
			}
		}
    }
    //controleer of op de uplink is geklikt
if(isset($_GET['up']) && is_numeric($_GET['up']) && isset($_GET['nummer']) && is_numeric($_GET['nummer'])){
	if($_GET['nummer'] > $maxnr || $_GET['nummer'] < 1){
		echo 'U moet het script zijn werk laten doen en er niet zelf mee gaan prutsen';
		}
	else{
		// bepaal het nummer van de andere link die van plaats veranderd
		$nr_change=$_GET['nummer']-1;
		// controleer of het mogelijk is het gekozen item nog verder omhoog te schuiven
		if($nr_change == 0){
			echo 'Dit Item kan niet nog verder naar het begin van het menu worden geschoven';
			}
			//als het goed is gekeurd, dan de rijen weer updaten.
		else{
			$upqry = "SELECT id FROM menu WHERE nummer = '".$nr_change."'";
			$uprow = mysql_fetch_assoc(mysql_query($upqry));
			$update_up = mysql_query("UPDATE menu SET nummer = nummer-1 WHERE id=".$_GET['up']);
			if (!$update_up){
				trigger_error(mysql_error());
				}
			$update_down = mysql_query("UPDATE menu SET nummer = nummer+1 WHERE id=".$uprow['id']);
			if (!$update_down){
				trigger_error(mysql_error());
				}
			}
		}
    }


$sql = "SELECT linknaam,url,id,nummer FROM menu ORDER BY nummer ASC";
$result = mysql_query($sql);
if($result){
    while($row = mysql_fetch_assoc($result)){
        echo '<p><a href="'.$row['url'].'" class="menuitem">'.$row['linknaam'].'</a>&nbsp;&nbsp;&nbsp;<a href="?up='.$row['id'].'&amp;nummer='.$row['nummer'].'">omhoog</a>&nbsp;&nbsp;<a href="?down='.$row['id'].'&amp;nummer='.$row['nummer'].'">omlaag</a></p>';
        }
    }
else{
    trigger_error(mysql_error());
    }
    

?>
</body>
</html> 
[/code]

Reacties

0
Nog geen reacties.