Volgorde wijzigen
Auteur: Ibrahim - 09 maart 2007 - 20:59 - Gekeurd door: Rens - Hits: 3073 - Aantal punten: 4.00 (1 stem)
Met deze functie kun je dus de volgorde wijzigen van bijvoorbeeld categorieën of zelfs menu items (als die in een tabel worden opgeslagen).
Je maakt gewoon een veld volgorde aan en je gebruikt het zo:
ChangeOrder( 'tabel', 'idveld', 'id', 'omhoog/omlaag' ); // zet echo/print ervoor als je een melding wilt
Het kan best zijn dat dit kleiner/simpeler geschreven kan worden. Meld dit dan ook, want ik heb deze script vorig jaar ofzo gemaakt, en het werkt tot nu toe prima.
Bugs kun je ook melden.
Have fun
Code:
<?php
error_reporting(E_ALL);
function ChangeOrder( $tabel, $IDveld, $ID, $richting )
{
$richting = strtolower( $richting );
$richting = ( $richting == 'omhoog' || $richting == 'omlaag' ) ? $richting : 'omhoog';
$select_volgorde = "SELECT volgorde FROM {$tabel} WHERE {$IDveld} = {$ID}";
$perform_select = mysql_query( $select_volgorde)
or die('QUERY ERROR: (SELECT_VOLGORDE) <pre>' . $select_volgorde . '</pre>');
$fetch_volgorde = mysql_fetch_assoc($perform_select);
$selectMax = mysql_query("SELECT MAX(volgorde) AS maximaal
FROM {$tabel}
");
$result = mysql_result( $selectMax, 0 );
if($richting == 'omhoog')
{
if( $fetch_volgorde['volgorde'] == $result )
{
$return = 'Je kunt niet hoger dan huidige volgorde';
}
else
{
$update_volgorde = "UPDATE {$tabel} SET volgorde = (volgorde + 1)
WHERE {$IDveld} = {$ID}
";
$select_vorige = mysql_query("SELECT volgorde FROM {$tabel}
WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
");
$fetch = mysql_fetch_assoc($select_vorige);
if($fetch['volgorde'] > 1)
{
$update_vorige = mysql_query("UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']}
WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
");
}
$return = 'Volgorde is succesvol gewijzigd.';
$perform_update = mysql_query($update_volgorde)
or die('QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>');
}
}
if($richting == 'omlaag')
{
if($fetch_volgorde['volgorde'] == 1)
{
$return = 'Je kunt niet lager dan huidige volgorde';
}
else
{
$update_volgorde = "UPDATE {$tabel} SET volgorde = volgorde - 1
WHERE {$IDveld} = {$ID}
";
$update_vorige = mysql_query("UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']}
WHERE volgorde = ({$fetch_volgorde['volgorde']} - 1)
");
$return = 'Volgorde is succesvol gewijzigd.';
$perform_update = mysql_query($update_volgorde)
or die('QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>');
}
}
return $return;
}
// voorbeeld:
echo ChangeOrder( 'forums_categories', 'catID', 1, 'omlaag' ); // zal "Je kunt niet lager dan huidige volgorde" omdat deze waarde 1 heeft
echo ChangeOrder( 'forums_categories', 'catID', 2, 'omlaag' ); // zal "Je kunt niet hoger dan huidige volgorde" omdat deze de hoogste waarde heeft
echo ChangeOrder( 'forums_categories', 'catID', 3, 'omlaag' ); // zal "Volgorde is succesvol gewijzigd." omdat deze waarde niet 1 is of de hoogste waarde heeft
?>
<?php
function ChangeOrder( $tabel , $IDveld , $ID , $richting )
{
$richting = ( $richting == 'omhoog' || $richting == 'omlaag' ) ? $richting : 'omhoog' ;
$select_volgorde = "SELECT volgorde FROM {$tabel} WHERE {$IDveld} = {$ID} " ;
or
die ( 'QUERY ERROR: (SELECT_VOLGORDE) <pre>' . $select_volgorde . '</pre>' ) ;
$selectMax = mysql_query ( "SELECT MAX(volgorde) AS maximaal FROM {$tabel}
" ) ;
if ( $richting == 'omhoog' )
{
if ( $fetch_volgorde [ 'volgorde' ] == $result )
{
$return = 'Je kunt niet hoger dan huidige volgorde' ;
}
else
{
$update_volgorde = "UPDATE {$tabel} SET volgorde = (volgorde + 1)
WHERE {$IDveld} = {$ID}
" ;
$select_vorige = mysql_query ( "SELECT volgorde FROM {$tabel} WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
" ) ;
if ( $fetch [ 'volgorde' ] > 1 )
{
$update_vorige = mysql_query ( "UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']} WHERE volgorde = ({$fetch_volgorde['volgorde']} + 1)
" ) ;
}
$return = 'Volgorde is succesvol gewijzigd.' ;
or
die ( 'QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>' ) ; }
}
if ( $richting == 'omlaag' )
{
if ( $fetch_volgorde [ 'volgorde' ] == 1 )
{
$return = 'Je kunt niet lager dan huidige volgorde' ;
}
else
{
$update_volgorde = "UPDATE {$tabel} SET volgorde = volgorde - 1
WHERE {$IDveld} = {$ID}
" ;
$update_vorige = mysql_query ( "UPDATE {$tabel} SET volgorde = {$fetch_volgorde['volgorde']} WHERE volgorde = ({$fetch_volgorde['volgorde']} - 1)
" ) ;
$return = 'Volgorde is succesvol gewijzigd.' ;
or
die ( 'QUERY ERROR: (UPDATE VOLGORDE) <pre>' . $update_volgorde . '</pre>' ) ; }
}
return $return ;
}
// voorbeeld:
echo ChangeOrder
( 'forums_categories' , 'catID' , 1 , 'omlaag' ) ; // zal "Je kunt niet lager dan huidige volgorde" omdat deze waarde 1 heeft
echo ChangeOrder
( 'forums_categories' , 'catID' , 2 , 'omlaag' ) ; // zal "Je kunt niet hoger dan huidige volgorde" omdat deze de hoogste waarde heeft
echo ChangeOrder
( 'forums_categories' , 'catID' , 3 , 'omlaag' ) ; // zal "Volgorde is succesvol gewijzigd." omdat deze waarde niet 1 is of de hoogste waarde heeft
?>
Download code (.txt)
Stemmen
Niet ingelogd.