Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > Probleme beim Realisieren einer Sortierungsfunktion
Antwort
 
Themen-Optionen
Alt 21.04.2006, 13:08   Nach oben    #1
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard Probleme beim Realisieren einer Sortierungsfunktion

Hallo Leute!

Ich bins mal wieder

Ich sitze hier und brüte über folgendem Problem.
Ein Kunde von mir will ein Sortierungsverfahren nach folgendem Verfahren haben:

text | input type=text
text | input
text | input

In diesen Input feldern steht nun die Sortierungszahl.

Nehmen wir das Beispiel

1
2
3
4
5
6
7
8

Nun will er die 1 auf die 8 und die 8 auf die 3 und die 4 auf die 5 verschieben, und möchte dazu nur die Zahlen ändern:

8
2
3
5
4
6
7
3

So sähe das dann aus.

Nun soll das Script automatisch erkennen welche Zahl geändert wurde.

Soweit ok, ich habe 1 hidden-Feld mit "altsort", also der alten Position.


Ich hänge irgendwie über diesem Code fest:

PHP-Code:
$movedata count($_POST['sort']);
        if(
$movedata != 0) {
            for(
$i=0;$i<$movedata;$i++) {
                
//Erst mal sehen, welche geaendert wurden... 
                
if($_POST['altsort'][$i] != $_POST['sort'][$i]) {
                    
//Zunaechst schauen obs das schon mal in der DB gibt.
                    
$ex $db->query("SELECT sort FROM ipse_presse WHERE sort = '".$_POST['sort'][$i]."' && id != '".$_POST['upid'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                    
$c $db->numRows($ex);
                    if(
$db->numRows($ex) != 0) {
                        if(
$_POST['sort'][$i] == ($_POST['altsort'][$i]-1)) {
                            
$db->query("UPDATE ipse_presse SET sort = 999999 WHERE sort = '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort-1 WHERE sort = '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['altsort'][$i]."' WHERE sort = 999999 && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                        }elseif(
$_POST['sort'][$i] == ($_POST['altsort'][$i]+1)) {
                            
$db->query("UPDATE ipse_presse SET sort = 999999 WHERE sort = '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort = '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['altsort'][$i]."' WHERE sort = 999999 && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                        }else {
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort > '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort = '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['sort'][$i]."' WHERE id = '".$_POST['upid'][$i]."'");                    
                        }
                    }else {
                        
//Ansonsten einfach nur verschieben...
                        
$db->query("UPDATE ipse_presse SET sort = '".$_POST['sort'][$i]."' WHERE id = '".$_POST['upid'][$i]."'");                    
                    }
                }
            }
        } 

Nun verschiebt er aber nicht korrekt.


Ergebnis:

2
3
4
5
6
8
9
10

Ist meine Lösung ansatzweise schon mal gut, oder gibts da einen Trick?

Danke schon mal!

Niko
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.04.2006, 14:42   Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Ich scheitere schon daran, dein Beispiel zu verstehen....

Mit dem "1 auf 8 verschieben" meinst du, dass bei eins der Wert 8 überschrieben wird, 8 aber an seiner Position erhalten bleibt, richtig?

Dass müsste doch folgendes rauskommen oder?
8 (1)
2
3
5 (4)
5 (wieso steht da bei dir im Beispiel eine 4?!?!?)
6
7
3 (3)

Geändert von mepeisen (21.04.2006 um 14:44 Uhr).
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.04.2006, 14:45   Nach oben    #3
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

Mein Verstand scheitert dabei auch. Macht für mich 0 Sinn. Hast du vielleicht ne Page wo man so halbwegs was ansehen kann um es zu verstehen?
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.04.2006, 16:43   Nach oben    #4
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

WarrenFaith du hast eine PM in einer Minute in deinem Posteingang mit den Zugangsdaten und der URL.

Für alle noch mal:

Alte Ordnung:

1
2
3

Neue Ordnung, gewünscht:

1->3
2->1
3->2

D.h. der User gibt in das Feld wo 1 drin steht ne 3 ein. Damit wird das auf die 3. Position verschoben.
Das gleiche mit der Option 2. Und 1.

Hoffe ich hab das nun einigermaßen verständlich rüber gebracht.

Wer sich das noch mal online ansehen will, schreibt hier bitte. Möchte nicht öffentlich die Daten hergeben
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.04.2006, 16:06   Nach oben    #5
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

So, habs nun hinbekommen.

Nach etlichen durchdenkungen mit Papier und Stift hab ich die Logik nun kapiert.

Hier der Quellcode

PHP-Code:
                        if($_POST['sort'][$i] == ($_POST['altsort'][$i]-1)) {
                            
$db->query("UPDATE ipse_presse SET sort = 999999 WHERE sort = '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort-1 WHERE sort = '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['altsort'][$i]."' WHERE sort = 999999 && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                        }elseif(
$_POST['sort'][$i] == ($_POST['altsort'][$i]+1)) {
                            
$db->query("UPDATE ipse_presse SET sort = 999999 WHERE sort = '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort = '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['altsort'][$i]."' WHERE sort = 999999 && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                        }elseif(
$_POST['sort'][$i] > ($_POST['altsort'][$i]+1)) {  
                            
$db->query("UPDATE ipse_presse SET sort = sort-1 WHERE sort <= '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort < '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['sort'][$i]."' WHERE id = '".$_POST['upid'][$i]."'");                    
                        }elseif(
$_POST['sort'][$i] < ($_POST['altsort'][$i]+1)) {
                            
$db->query("UPDATE ipse_presse SET sort = sort+1 WHERE sort >= '".$_POST['sort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = sort-1 WHERE sort > '".$_POST['altsort'][$i]."' && rubrik = '".$_POST['rubrik'][$i]."' && kategorie = '".$_POST['kategorie'][$i]."'");
                            
$db->query("UPDATE ipse_presse SET sort = '".$_POST['sort'][$i]."' WHERE id = '".$_POST['upid'][$i]."'");                    
                        } 

Grüße
Niko

Update: < und > vertauscht gehabt. Diese Version geht nu endgültig
__________________
Vive la France! Welcome to Sarkoworld...

Geändert von ljungi (24.04.2006 um 16:13 Uhr).
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.04.2006, 18:50   Nach oben    #6
axo
Gast
 
Beiträge: n/a
Standard

... und gefeuert wirst du trotzdem mit dem code. fristlos.
http://de.wikipedia.org/wiki/SQL_Injection

grüße
axo
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.04.2006, 16:59   Nach oben    #7
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

Der Code wird davor auf Angriffe überprüft.
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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 An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Strato / Arcor? MrNiceGuy Plauderecke 15 28.12.2006 23:35
Caching mittels dbm-Dateien, Probleme mit dba_popen() Ben PHP-Programmierung 4 27.07.2006 13:23
Probleme mit Anhängen Ben Archiv 0 16.06.2006 16:13
Oracle-DB-Zugriff via JSP macht Probleme bene23 Enterprise Java 4 08.11.2005 14:37
Layout Probleme VipViper2000 Desktop-Applikationen und Grafik 8 13.09.2005 22:35


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:19 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44