Avatar billede rthuls Nybegynder
27. marts 2004 - 18:39 Der er 4 kommentarer og
1 løsning

ændre rækkefølge - flyt op/ned

Faktisk søger jeg det samme som webcreator gør i spørgsmålet her:
http://www.eksperten.dk/spm/444096

men gerne med et lidt mere uddybende svar
Avatar billede lillebror Nybegynder
27. marts 2004 - 18:50 #1
Kunne du ikke uddybe spørgsmålet først, synes ikke dit link siger så meget
Avatar billede Slettet bruger
27. marts 2004 - 19:04 #2
Prøv og se om det her kan bruges.

Det er dog tilpasset min datastruktur, men mon ikke det er noget i den stil du ønsker:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<style>
html, body, button, table, div, input, select, fieldset {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
white-space: nowrap;
}

.knap {
    background-image: url('billeder/knap_bg.gif');
    background-color: #FFFFFF;
    border: 1px solid #808E9F;
    font-size: 8pt;
    color: #35475D;
    font-weight: bold;
    cursor:hand;
    height: 18px; !important
}
</style>

<?
include('../db.php');
if($_REQUEST['gem'] == 'ja') {

$sortering = explode(',',$_POST['skjultFelt']);

while (list($key, $val) = each($sortering)) {

if (preg_match ( "/(\\d+):/i", $val, $res)) {
$tal = $res[1];
}

$gem_val = ereg_replace('[0-9]+:','', $val);
$sql = 'UPDATE ' . $kundenavn . '_dokumenter SET sortering="' . ($key+1) . '" WHERE id="' . $tal . '"';
$result = mysql_query($sql) or die(mysql_error());

}

}
?>

<script type="text/javascript">

function _CloseOnEsc() {
  if (event.keyCode == 27) { window.close(); return; }
}

function Init() {
    document.body.onkeypress = _CloseOnEsc;
}

</script>


<script>

function checkSel ( frm ) {
  sel  = frm.kategori.selectedIndex;
  selo = frm.kategori.options;
  if ( 0 > sel ) {
    alert( "Du skal vælge en kategori først" );
    return false;
  };
  return true;
}; //end chackSel ( Form object ) -> boolean

function checkDest ( dest ) {
  if ( 0>dest || dest >= selo.length ) {
    alert( "Kategorien kan ikke flyttes derhen" );
    return false;
  };
  return true;
}; //end checkDest ( integer ) -> boolean

function ombyt ( fra, til ) {
  var tmpTxt      = selo[fra].text;
  selo[fra].text  = selo[til].text;
  selo[til].text  = tmpTxt;
  var tmpVal      = selo[fra].value;
  selo[fra].value = selo[til].value;
  selo[til].value = tmpVal;
  return til;
}; //end ombyt ( integer, integer )

function flytOp( frm ) {
  if ( checkSel( frm ) && checkDest( sel-1 ) )
      frm.kategori.selectedIndex = ombyt( sel, sel-1 );
      pakResultat(form1);
      frm.submit();
}; //end flytOp( form object )

function flytNed( frm ) {
  if ( checkSel( frm ) && checkDest( sel+1 ) )
      frm.kategori.selectedIndex = ombyt( sel, sel+1 );
      pakResultat(form1);
      frm.submit();
}; //end flytNed( form object )

function flytTil( frm, nr ) {
  if ( checkSel( frm ) && checkDest( nr-1 ) ) {
      while ( sel > nr-1 ) sel = ombyt( sel, sel-1 );
      while ( nr-1 > sel ) sel = ombyt( sel, sel+1 );
      frm.kategori.selectedIndex = sel;
  };
}; //end flytTil( form object, integer )

function pakResultat (frm) {
  var skj = "";
  selo = frm.kategori.options;
  for (var i=0; selo.length>i; i++ )
      skj += "," +selo[i].value +":" +selo[i].text;
  frm.skjultFelt.value = skj.substring(1);
//alert ( frm.skjultFelt.value ); // debug; slet linien efter test
  return true;
}; //end pakResultat ( form object )

</script>

<head>
    <title>Omdøb side</title>
</head>

<body onload="Init();">
<form name="form1" action="sorter.php" method="post">
<input type="hidden" name="gem" value="ja">
<input type="hidden" name="id" value="<? echo $_REQUEST['id']; ?>">
<input type="hidden" name="skjultFelt">
<table width="400" align="center"><tr><td width="130" nowrap valign="top"><strong>Sorter undersider:</strong> </td><td width="100%">

<select name="kategori" style="width:100%" multiple size="20">
<?



$sql = 'SELECT overskrift,id,sortering FROM ' . $kundenavn . '_dokumenter WHERE id > 0 AND ejerid = "' . $_REQUEST['id'] . '" ORDER BY sortering, id ASC';
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo '<option value="' . $row['id'] . '"';
if($row['id'] == $_POST['kategori']) echo ' selected';
echo '>' . $row['overskrift'] . '</option>';
}
?>

</select>
</td></tr>
<tr><td></td><td><button onclick="flytOp(this.form)" style="width:80px;vertical-align:top" class="knap"><span style="margin-top:1px;height:19px">Flyt&nbsp;op&nbsp;</span><span style="margin-top:1px;height:19px"><img src="billeder/pilop.gif"></span></button>&nbsp;<button onclick="flytNed(this.form)" style="width:80px;vertical-align:top" class="knap"><span style="margin-top:1px;height:19px">Flyt&nbsp;ned&nbsp;</span><span style="margin-top:1px;height:19px"><img src="billeder/pilned.gif"></span></button>&nbsp;<button class="knap" onclick="window.close()" type="button">Fortryd</button></td></tr></table>
</form>

</body>
</html>
Avatar billede rthuls Nybegynder
28. marts 2004 - 16:27 #3
Jeg har selv fundet frem til følgende. Det er nok ikke den mest elegante løsning, men den virker. Jeg kalder f.eks siden sådan her:
sort.php?id=3&pageid=5&direction=down

sort.php:
$DB = new MySQL();
$DB->Query("SELECT nummer FROM content WHERE id='" . $_GET['id'] . "' AND pageid='" . $_GET['pageid'] . "'");
$nummer = $DB->FetchRow();
if($_GET['direction'] == "up"){
    $byt = $nummer[0];
    $byt--;
    $DB->Query("SELECT id FROM content WHERE nummer='" . $byt . "' AND pageid='" . $_GET['pageid'] . "'");
    $DB->Query("UPDATE content SET nummer='" . $nummer[0] . "' WHERE nummer='"  . $byt .  "' AND pageid='" . $_GET['pageid'] . "'");
    $DB->Query("UPDATE content SET nummer='" . $byt . "' WHERE id='" . $_GET['id'] . "' AND pageid='" . $_GET['pageid'] . "'");
}else{
    $byt = $nummer[0];
    $byt++;
    $DB->Query("SELECT id FROM content WHERE nummer='" . $byt . "' AND pageid='" . $_GET['pageid'] . "'");
    $DB->Query("UPDATE content SET nummer='" . $nummer[0] . "' WHERE nummer='"  . $byt .  "' AND pageid='" . $_GET['pageid'] . "'");
    $DB->Query("UPDATE content SET nummer='" . $byt . "' WHERE id='" . $_GET['id'] . "' AND pageid='" . $_GET['pageid'] . "'");
}
Avatar billede Slettet bruger
28. marts 2004 - 16:32 #4
Ja den er ikke så elegant men hvis du er tilfreds er det jo lige meget :)

Du må gerne bruge min selvom jeg ikke skal have point, de betyder ikke så meget for mig. Hvis du har problemer kan du jo skrive her.
Avatar billede rthuls Nybegynder
13. juni 2004 - 23:33 #5
Tak for hjælpen!

Jeg lukker her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester