SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.05.2003, 15:49:29
ingo ingo ist offline
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
Mit Zitat antworten
  #2  
Alt 19.05.2003, 17:34:20
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/

Geändert von ­c­4­ (19.05.2003 um 17:37:07 Uhr)
Mit Zitat antworten
  #3  
Alt 20.05.2003, 12:44:11
ingo ingo ist offline
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
Mit Zitat antworten
  #4  
Alt 14.08.2003, 17:42:03
muc muc ist offline
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
Mit Zitat antworten
  #5  
Alt 15.08.2003, 13:26:34
ingo ingo ist offline
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
Mit Zitat antworten
  #6  
Alt 17.08.2003, 14:24:58
Innuendo1 Innuendo1 ist offline
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.
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:48:49 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt