Sortierung über Feld - Wie?
Sortierung über Feld - Wie?
am 22.01.2006 16:08:03 von Stefan J
Hallo NG,
ich suche im Augenblick nach einer Lösung, wie ich via Felder (cols) in
MySQL 4.1 Datensätze nach Wunsch sortieren lassen kann.
Beispiel: Ich habe eine ToDo-Liste mit den Feldern datum | headline | text |
status | sort
Die Sortierung der einzelnen ToDo's möchte ich manuell aber vergeben können
(Prioritäten), sprich also z.B. einzelne Einträge weiter nach oben setzen
lassen, weil dieses Element wichtiger geworden ist. Wie könnte ich so etwas
über ein Tabellenfeld realisieren?
Danke,
Stefan
Re: Sortierung über Feld - Wie?
am 22.01.2006 16:15:12 von Niels Braczek
Stefan J schrieb:
> ich suche im Augenblick nach einer Lösung, wie ich via Felder (cols) in
> MySQL 4.1 Datensätze nach Wunsch sortieren lassen kann.
>
> Beispiel: Ich habe eine ToDo-Liste mit den Feldern datum | headline | text |
> status | sort
> Die Sortierung der einzelnen ToDo's möchte ich manuell aber vergeben können
> (Prioritäten), sprich also z.B. einzelne Einträge weiter nach oben setzen
> lassen, weil dieses Element wichtiger geworden ist. Wie könnte ich so etwas
> über ein Tabellenfeld realisieren?
Ich verstehe deinProblem nicht. Setze doch einfach die Staplte sort nach
Wunsch!
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Sortierung über Feld - Wie?
am 22.01.2006 16:22:17 von Jens Meyer
Hallo Stefan,
"Stefan J" schrieb im Newsbeitrag
news:43d39fa0$0$21017$9b4e6d93@newsread2.arcor-online.net...
> Hallo NG,
>
> ich suche im Augenblick nach einer Lösung, wie ich via Felder (cols) in
> MySQL 4.1 Datensätze nach Wunsch sortieren lassen kann.
>
> Beispiel: Ich habe eine ToDo-Liste mit den Feldern datum | headline | text
> | status | sort
> Die Sortierung der einzelnen ToDo's möchte ich manuell aber vergeben
> können (Prioritäten), sprich also z.B. einzelne Einträge weiter nach oben
> setzen lassen, weil dieses Element wichtiger geworden ist. Wie könnte ich
> so etwas über ein Tabellenfeld realisieren?
erstelle einfach eine extra Spalte "prio" in der du numerisch die
Wichtigkeit eingibst,
und lässt es danach sortieren ( order by prio,satus sort....)
Gruss Jens
Re: Sortierung über Feld - Wie?
am 22.01.2006 16:32:37 von Stefan J
"Niels Braczek" schrieb im Newsbeitrag
news:dr07d2$bq1$00$1@news.t-online.com...
> Stefan J schrieb:
>
>> ich suche im Augenblick nach einer Lösung, wie ich via Felder (cols) in
>> MySQL 4.1 Datensätze nach Wunsch sortieren lassen kann.
>>
>> Beispiel: Ich habe eine ToDo-Liste mit den Feldern datum | headline |
>> text |
>> status | sort
>> Die Sortierung der einzelnen ToDo's möchte ich manuell aber vergeben
>> können
>> (Prioritäten), sprich also z.B. einzelne Einträge weiter nach oben setzen
>> lassen, weil dieses Element wichtiger geworden ist. Wie könnte ich so
>> etwas
>> über ein Tabellenfeld realisieren?
>
> Ich verstehe deinProblem nicht. Setze doch einfach die Staplte sort nach
> Wunsch!
Mal anders erklärt: Ich setze z.B. in der Spalte sort eine Zahl fortlaufend
gezählt (1,2,3,4,etc.), dementsprechend werden die bei der Ausgabe ja
sortiert angezeigt:
|datum|headline|text|sort
---------------------------------
|22.01.|test1|testtext1|1
|22.01.|test2|testtext2|2
|22.01.|test3|testtext3|3
Nun möchte ich bei der Ausgabe des Skriptes allerdings Pfeile nach oben und
unten mit anhängen, wo ich die Sortierung mit Klick ändern kann
(beispielsweise soll nun test2 hochgestellt werden auf 1. Position (sort 1)
und demzufolge test1 dann runter (sort 2).
Suche hierfür einen vernünftigen Ansatz.
Stefan
>
> MfG
> Niels
>
> --
> | http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
> | http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
> | Webdesign · Webhosting · E-Commerce · Mambo Content Management |
> ------------------------------------------------------------ ----
Re: Sortierung über Feld - Wie?
am 22.01.2006 16:44:15 von Stefan J
Erledigt! Habe nen super script bei Sourceforge gefunden
(http://ackertodo.sourceforge.net/site1/index.html)
Danke,
Stefan
"Stefan J" schrieb im Newsbeitrag
news:43d39fa0$0$21017$9b4e6d93@newsread2.arcor-online.net...
> Hallo NG,
>
> ich suche im Augenblick nach einer Lösung, wie ich via Felder (cols) in
> MySQL 4.1 Datensätze nach Wunsch sortieren lassen kann.
>
> Beispiel: Ich habe eine ToDo-Liste mit den Feldern datum | headline | text
> | status | sort
> Die Sortierung der einzelnen ToDo's möchte ich manuell aber vergeben
> können (Prioritäten), sprich also z.B. einzelne Einträge weiter nach oben
> setzen lassen, weil dieses Element wichtiger geworden ist. Wie könnte ich
> so etwas über ein Tabellenfeld realisieren?
>
> Danke,
> Stefan
>
Re: Sortierung über Feld - Wie?
am 22.01.2006 17:47:07 von Magnus Rosenbaum
Hier meine Lösung:
Die Sortierungsspalte heisst hier "orderby" und enthält negative
Integerzahlen, damit neue Datensätze mit orderby=0 oben eingeordnet werden.
Hier nur die Funktion, die aufgerufen wird, wenn die Reihenfolge geändert
wird:
/**
* Reihenfolge ändern
*
* Der Datensatz mit der ID $id wird in der Reihenfolge verschoben
* @param int $id
*/
function action_reihenfolge($id) {
global $dbtable;
if ( isset($_REQUEST['action']) and (
$_REQUEST['action']=="moveup" or $_REQUEST['action']=="movedown" or
$_REQUEST['action']=="movefirst" or $_REQUEST['action']=="movelast"
) ) {
// Datensätze neu durchnummerieren
$sql_renum = "SELECT ".$dbtable.".id FROM ".$dbtable." ORDER BY
".$dbtable.".orderby";
$result_renum = mysql_query($sql_renum);
while ( $row_renum = mysql_fetch_array($result_renum) ) $renumids[] =
$row_renum['id'];
$aktindex = array_search($id,$renumids);
if ($_REQUEST['action']=="movefirst") {
$renumids[$aktindex] = ""; // Vorkommen der aktuellen Id loeschen
array_unshift($renumids,$id); // Aktuelle Id an den Anfang des Arrays
setzen
} elseif ($_REQUEST['action']=="movelast") {
$renumids[$aktindex] = ""; // Vorkommen der aktuellen Id loeschen
$renumids[] = $id; // Aktuelle Id an das Ende des Arrays
anhaengen
} else {
if ($_REQUEST['action']=="moveup") $swapindex = $aktindex - 1;
else $swapindex = $aktindex + 1;
$aktvalue = $id;
$swapvalue = $renumids[$swapindex];
$renumids[$swapindex] = $aktvalue;
$renumids[$aktindex] = $swapvalue;
}
$i = -32760;
foreach ( $renumids as $renumid ) {
if ($renumid) {
$sql_r = "UPDATE $dbtable SET orderby = $i WHERE id = $renumid";
$result_r = mysql_query($sql_r);
$i++;
}
}
}
}
--
Carl Magnus Rosenbaum M.A. Tel: 089 - 700 666 26
Administration - Programmierung - Weiterbildung Fax: 089 - 700 666 86
http://cmr.forestfactory.de/ Mobil: 0163 - 700 666 2
PGP Fingerprint: DEBC 3C99 EF1D 74F0 D4C7 EFF5 C268 3690 0EA1 7641
Re: Sortierung über Feld - Wie?
am 23.01.2006 10:52:29 von Guy Walter
Stefan J wrote:
>
> Mal anders erklärt: Ich setze z.B. in der Spalte sort eine Zahl fortlaufend
> gezählt (1,2,3,4,etc.), dementsprechend werden die bei der Ausgabe ja
> sortiert angezeigt:
>
> |datum|headline|text|sort
> ---------------------------------
> |22.01.|test1|testtext1|1
> |22.01.|test2|testtext2|2
> |22.01.|test3|testtext3|3
>
> Nun möchte ich bei der Ausgabe des Skriptes allerdings Pfeile nach oben und
> unten mit anhängen, wo ich die Sortierung mit Klick ändern kann
> (beispielsweise soll nun test2 hochgestellt werden auf 1. Position (sort 1)
> und demzufolge test1 dann runter (sort 2).
>
> Suche hierfür einen vernünftigen Ansatz.
>
> Stefan
>
Ich würde einfach den Datensatz der hochsortiert bzw runter sortiert
werden soll mit einer sql:
sort = sort+1 bzw sort = sort-1
ändern
und mit php kannst du den datensatz der dadurch betroffen wird ermiteln
und genau andersrum verfahren als wenn sort von 5 auf 6 erhöht werden
soll dann machst du vor der oberen sql sort = 5 where sort = 6 und dann
brauchst nicht 100 sql Anweisung schreiben.