php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.04.2008, 15:57  
Neuer Benutzer
 
Registriert seit: 26.11.2007
Beiträge: 26
Stefano befindet sich auf einem aufstrebenden Ast
Standard Datensätze verschieben Hilfe benötigt

Hallo zusammen,

ich hab einen Knoten im Kopf ich komme einfach nicht dahinter.

Ich habe viele viele Datensätze und jeder dieser Datensätze hat eine Position. Nun möchte ich per Eingabe der ID und der gewünschten Position die Position der Datensätze aktualisieren.

Mein Script sieht wie folgt aus:
PHP-Code:
    function tausche_datensatz($id$pos)
    {
        
        
$sql 'SELECT id, position
                FROM AKTUELLES 
                WHERE position >= '
.$pos;

        if (!
$res mysql_query($sql))
        {
            return 
$ret;
        }
        
        while (
$zeile mysql_fetch_array($resMYSQL_ASSOC))
        {
                    
$sql 'UPDATE AKTUELLES
                    SET position = position + 1
                    WHERE id='
.$zeile['id'];

                    if (!
mysql_query($sql))
                    {        
                         return 
false;
                    }
        }
    
        
$sql 'UPDATE AKTUELLES
                SET position = '
.$pos.'
                WHERE id='
.$id;
                    
        if (!
mysql_query($sql))
        {        
            return 
false;
        }
        
        return 
true;
    } 
So, wenn ich den Datensatz X mit Position 5 auf Position 1 haben möchte, muss ich doch alle nachfolgenden und die gleiche Positionen um 1 erhöhen. Leider wird der Datensatz der bereits auf 1 ist nicht verändert obwohl ich >= befehle. Oh mann, mit platzt gerade das Hirn, kann mir jemand weiterhelfen?

Vielen Dank
Stefano

Geändert von Stefano (14.04.2008 um 16:09 Uhr).
Stefano ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.04.2008, 16:46  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

warum so kompliziert?
Du hast die Id, die eingereiht werden soll und die Position dafür..
Also
UPDATE AKTUELLES
SET position = position + 1
WHERE
position >= $pos;


dann
UPDATE AKTUELLES
SET position = $pos
WHERE
id = $id;


Allerdings hast Du hier und in Deinem Ansatz keine fortlaufende Reihenfolge mehr
HPR1974 ist offline   Mit Zitat antworten
Alt 14.04.2008, 18:01  
Neuer Benutzer
 
Registriert seit: 26.11.2007
Beiträge: 26
Stefano befindet sich auf einem aufstrebenden Ast
Standard

? jetzt versteh ich gar nix mehr.

Wenn doch der Datensatz mit Position 5 auf Position 1 soll, dann muss doch der Datensatz der bereits auf Position 1 ist, auf 2 gesetzt werden und alle nachfolgenden auf +1 oder, damit die Reihenfolge stimmt - oder nicht?

Hä? Bitte um Hilfe
Stefano ist offline   Mit Zitat antworten
Alt 14.04.2008, 18:43  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

Also Du hast die id und den platz deiner reihenfolge auf den der Datensatz soll
5 auf 1
$pos = 1
UPDATE AKTUELLES
SET position = position + 1
WHERE
position >= $pos;
Sollte alle positionen um eins erhöhen deren position >= 1 ist
Soweit stimmts doch noch oder?


UPDATE AKTUELLES
SET position = $pos
WHERE
id = $id;
Jetzt wird position des Datensatzes mit der ID $id auf $pos gesetzt also auf eins

Das einzige was jetzt ein Problem sein kann ist, dass es keinen Datensatz mehr mit Position 6 gibt.
HPR1974 ist offline   Mit Zitat antworten
Alt 16.04.2008, 12:52  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Eigentlich müssen ja nur die Positionen zwischen der alten ($pos_von) und der neuen ($pos_nach) Position verändert werden. Vorgehen:
  • id von $pos_nach suchen
  • wenn $pos_von grösser als $pos_nach
    • UPDATE position = position + 1 WHERE $position BETWEEN $pos_nach AND ($pos_von - 1)
  • sonst
    • UPDATE position = position - 1 WHERE $position BETWEEN ($pos_von + 1) AND $pos_nach
  • Position der in 1. gefundnen id auf $pos_von setzen
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
nested set dbmodell subtrees verschieben raffnix Datenbanken 12 08.06.2008 13:27
[Erledigt] Hilfe: Projektabreit Informatik und Technik bitte helft uns. Off-Topic Diskussionen 31 05.04.2006 18:25
PHP <--> MySQL | Brauche Hilfe ahnungsloser Datenbanken 18 16.02.2006 21:49
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
hilfe fehler bei cookie mollitz PHP Tipps 2007 11 24.11.2005 09:25
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
Wieso verschieben sich diese Tabellen? Chr!s HTML, Usability und Barrierefreiheit 3 29.09.2005 17:41
[Erledigt] Hilfe bei Formular für Datenerhebung benötigt PHP Tipps 2005-2 3 16.07.2005 10:43
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
Layer auf x-Achse verschieben php1 HTML, Usability und Barrierefreiheit 2 24.06.2005 16:08
[Erledigt] HILFE PHP Tipps 2004-2 1 16.12.2004 20:49
Hilfe!!! PHP + EXE-Dateien und Interface Beitragsarchiv 4 16.12.2004 11:50
Datei verschieben Calli PHP Tipps 2004-2 2 15.12.2004 14:27
PHP, Frontpage -----> HILFE!!!! HTML, Usability und Barrierefreiheit 4 30.11.2004 15:00
[Erledigt] Domainnamen in Apache bekanntgeben HILFE Server, Hosting und Workstations 3 12.08.2004 13:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql datensatz verschieben, php datensätze verschieben, mysql datensätze verschieben, php sql id verschieben, php mysql position datensatz verschieben, php mysql datensätze verschieben, http://www.php.de/datenbanken/896-datensaetze-verschieben-hilfe-benoetigt.html, sql id verschieben, php datensatz positionieren, sql datensatz verschieben und zelle aktualisieren, datensätze verschieben mysql, datensatz verschieben in reihenfolge php, datenbank viele datensätze verschieben, php mysql verschieben von datensätzen, datensätze verschieben php, php sql position verschieben, sql datensätze verschieben, php script datenbank eintrag verschieben, mysql update alle datensätze um 1 erhöhen, mysql php datensatz verschieben

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum