CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
19.05.2003, 15:49:29
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 248
|
|
reihenfolge von datensätzen ändern
hi,
hat irgend jemand von euch einen guten vorschlag, wie man die reihenfolge von angezeigten datensätzen ändern kann.
ich hab z.b. eine liste mit mysql-datensätzen, die in einer bestimmten reihenfolge unabhängig ihrer datenfelder angezeigt werden sollen.
und zwar folgendermaßen: der/die administratorIn soll die möglichkeit haben, neben jedem datensatz eine "pfeil-rauf"- und "pfeil-runter"-schaltfläche zu haben, mit der ein datensatz über oder unter einen anderen "verschoben" werden soll, sodass sich die reihenfolge der angezeigten datensätze ändert.
natürlich kann ich es so machen, dass ich jedem datensatz eine eigene "ordnungsnummer" gebe, sodass die reihenfolge klar wird. beim verschieben der datensätze muss ich aber dann immer die ordnungsnummer aller anderen datensätze ändern. auch in 10er oder 100er abständen (ordnung 10, 20, 30) hats wenig sinn - da hab ich zwar mehr abstand zwischen den datensätzen, aber wenn ich einen datensatz zehn stufen runter verschiebe, hab ich das selbe problem wieder.
bei 100er oder 1000er schritten ists ja das selbe problem. nur dass ich mehr "abstand" dazwischen hab.
ich bräuchte sozusagen eine _eindeutige_ lösung um die reihenfolge der angezeigten datensätze zu bestimmen..
ich hab das mal bei nuke gesehen, weiß aber nicht mehr wie das dort gelöst ist..
irgendjemand eine idee?
lg, ingo
|
19.05.2003, 17:34:20
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Wenn Du jedem Datensatz eine eindeutige ID gibst und die Datensätze nach dieser sortierst, dann kannst Du auch die Sortierung ändern.
Beispiel:
Code:
1 - Auto
2 - Auto nass
3 - nasses Auto
4 - Brot
Plus: Auf jede Zeile 2 Links, wie datei.php?action=up&id=2 oder halt datei.php?action=down&id=3
Im Quältext kannst Du das dann wie folgt anpassen (Beispiel up und 2):
Code:
UPDATE id FROM tabelle SET id=0 WHERE id=2
UPDATE id FROM tabelle SET id=2 WHERE id=$id-1
UPDATE id FROM tabelle SET id=$id-1 WHERE id=0
Dann hast Du (hoffentlich):
Code:
1 - Auto nass
2 - Auto
3 - nasses Auto
4 - Brot
Das Schreckliche ist bei der Lösung, dass Du 15 mal klicken und warten musst, bis die Seite neu geladen wurde, um einen Eintrag um 15 Felder zu verschieben.
Das dürfte aber recht simpel mit Eingabefeldern zu beschleunigen gehen.
Geändert von c4 (19.05.2003 um 17:37:07 Uhr)
|
20.05.2003, 12:44:11
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 248
|
|
was ist, wenn ich was über den datensatz mit der id "0" schieben will?
-1?
wenn dann müsste man fast ein eigenes feld in der db machen, weils bei auto_increment immer lästig bzw. gefährlich ist, die id eines datensatzes zu ändern... hab da schon so meine erfahrungen gemacht.
und 3 queries für eine änderung..
danke für den vorschlag, ich werd ihn trotzdem ausprobieren.
wenns aber noch andere vorschläge gäbe, wär ich hoch erfreut.
vielleicht irgendeine lösung mit einer anderen zahlenart. binär oder so...
aber ich hab irgendwie keine wirkliche idee.
lg, ingo
|
14.08.2003, 17:42:03
|
Anfänger
|
|
Registriert seit: Aug 2003
Beiträge: 5
|
|
Habe das gleiche Problem, die Lösung von c4 ist bei mir unmöglich realisierbar, wäre viel zu umständlich.
Hat vielleicht jemand anders noch eine Idee ?
Vielen Dank, Michael
|
15.08.2003, 13:26:34
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 248
|
|
hab bisher auch keine andere lösung gefunden und schon ziemlich drüber gegrübelt, was _eindeutiges_ zu finden.
ich kenn die funktion im cms "phpnuke". vielleicht sollte man sich das mal anschaun. war aber bis jetzt zu faul...
lg, ingo
|
17.08.2003, 14:24:58
|
Anfänger
|
|
Registriert seit: Jan 2003
Beiträge: 3
|
|
Ich habe es so gelöst:
PHP-Code:
<?
$direction = $HTTP_GET_VARS['direction'];
$sql1 = "SELECT id, sort_nr FROM tabelle WHERE id='$id'";
$result1 = mysql_query($sql1);
while ($row1 = mysql_fetch_row($result1))
{
$id_now = $row1[0];
$sort_nr_now = $row1[1];
}
$sql2 = "SELECT id, sort_nr FROM tabelle WHERE sort_nr = $sort_nr_now + $direction";
$result2 = mysql_query($sql2);
while ($row2 = mysql_fetch_row($result2))
{
$id_then = $row2[0];
$sort_nr_then = $row2[1];
mysql_query("UPDATE tabelle SET sort_nr = '$sort_nr_then' WHERE id = '$id_now'");
mysql_query("UPDATE tabelle SET sort_nr = '$sort_nr_now' WHERE id = '$id_then'");
}
?>
In diesem Fall gibt es eine Spalte "sort_nr", die eine Sortierungsnummer enthält und fortlaufend ist (z.B. 0, 10, 20, 30, 40 ...). Über die URL übergebe ich dem Skript, in welche Richtung verschoben soll (10 = nach unten, -10 = nach oben). $direction lautet hier die Variable. Möchte man den Eintrag nach oben verschieben, lautet der Link z.B. "test.php?id=12345&direction=-10".
Danach kann man mit "SELECT * FROM tabelle ORDER BY sort_nr ASC" bequem die Einträge ordnen lassen.
Ich weiß, dass das Skript nicht perfekt ist aber es funktioniert bei mir tadellos.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:48:49 Uhr.
|