Avatar billede angelenglen Nybegynder
13. april 2004 - 21:07 Der er 5 kommentarer og
1 løsning

Nyheds-prioritet - hvordan gøres det nemt?

okay jeg har en stak nyheder i min databasen.

Lige nu bliver de bare hentet ud, sorted by id.

Det jeg egentligt gerne vil kunne, er fx hvis jeg har følgende nyheder:

test1
test2
test3
test4
test5

så vil jeg gerne kunne "flytte rundt på dem" som jeg har lyst til.

Dvs jeg vil gerne kunne flytte fx test3 et tak op eller ned..
Avatar billede Slettet bruger
13. april 2004 - 21:11 #1
Tag et kig på denne kode som jeg selv bruger til at sortere undersider i et CMS

<!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;
}

body {
background-color: #F2F4F3;
}

.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></td></tr></table>
</form>

</body>
</html>
Avatar billede angelenglen Nybegynder
13. april 2004 - 21:37 #2
hmm jeg har lidt svært ved at danne mig et overblik, kunne jeg få dig til at skrive en liste over hvilke felter du har for hver nyhed i din database?
Avatar billede Slettet bruger
13. april 2004 - 21:53 #3
Som sagt er det ikke nyheder, men sider. Det gør dog ingen forskel, det interessante her er feltet sortering som bare er af typen INT (10)
Avatar billede angelenglen Nybegynder
13. april 2004 - 22:16 #4
okay, desværre kom IRL mig lidt i vejen for at teste nu, men det ser interessant ud, så lav svar for points :P
Avatar billede Slettet bruger
13. april 2004 - 22:20 #5
Ellers tak, hvis du får det til at virke kan du jo vende tilbage ;)
Avatar billede angelenglen Nybegynder
09. december 2004 - 15:57 #6
jeg fik det aldrig testet, og droppede efterfølgende projektet.
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